64 lines
1001 B
Go
64 lines
1001 B
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io/fs"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/filesystem"
|
|
"github.com/gofiber/websocket/v2"
|
|
)
|
|
|
|
var db MemoryDB
|
|
|
|
func init() {
|
|
db.New()
|
|
}
|
|
|
|
func RunBlocking(ctx context.Context) {
|
|
fe := ctx.Value("frontend").(fs.SubFS)
|
|
port := ctx.Value("port")
|
|
|
|
app := fiber.New()
|
|
|
|
app.Use("/", filesystem.New(filesystem.Config{
|
|
Root: http.FS(fe),
|
|
}))
|
|
|
|
app.Get("/ws", websocket.New(func(c *websocket.Conn) {
|
|
for {
|
|
mtype, msg, err := c.ReadMessage()
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
switch string(msg) {
|
|
case "send-url-format-selection":
|
|
getFormats(c)
|
|
case "send-url":
|
|
download(c)
|
|
case "abort":
|
|
abort(c)
|
|
case "abort-all":
|
|
abortAll(c)
|
|
case "status":
|
|
status(c)
|
|
case "update-bin":
|
|
hotUpdate(c)
|
|
}
|
|
|
|
log.Printf("Read: %s", msg)
|
|
|
|
err = c.WriteMessage(mtype, msg)
|
|
if err != nil {
|
|
break
|
|
}
|
|
}
|
|
}))
|
|
|
|
log.Fatal(app.Listen(fmt.Sprintf(":%s", port)))
|
|
}
|