refactor: move the web server in a specific function
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
parent
f80fdc6e53
commit
7278ab1a28
2 changed files with 98 additions and 90 deletions
142
cmd/cli/main.go
142
cmd/cli/main.go
|
|
@ -1,20 +1,15 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
"github.com/urfave/cli/v2"
|
||||
"gitnet.fr/deblan/mu-go/internal/shell"
|
||||
"gitnet.fr/deblan/mu-go/internal/web"
|
||||
)
|
||||
|
||||
var (
|
||||
Commands = []*cli.Command{}
|
||||
version = "dev"
|
||||
defaultListen = "127.0.0.1"
|
||||
defaultPort = "4000"
|
||||
|
|
@ -36,59 +31,63 @@ var (
|
|||
)
|
||||
|
||||
func main() {
|
||||
cliListen := &cli.StringFlag{
|
||||
Name: flagListen,
|
||||
Aliases: []string{"l"},
|
||||
Value: defaultListen,
|
||||
}
|
||||
|
||||
cliPort := &cli.StringFlag{
|
||||
Name: flagPort,
|
||||
Aliases: []string{"p"},
|
||||
Value: defaultPort,
|
||||
}
|
||||
|
||||
cliApiUrl := &cli.StringFlag{
|
||||
Name: flagApiUrl,
|
||||
Aliases: []string{"u"},
|
||||
Value: defaultApiUrl,
|
||||
}
|
||||
|
||||
cliDirectory := &cli.StringFlag{
|
||||
Name: flagDirectory,
|
||||
Aliases: []string{"d"},
|
||||
Value: defaultServerDirectory,
|
||||
}
|
||||
|
||||
cliDebug := &cli.StringFlag{
|
||||
Name: flagDebug,
|
||||
}
|
||||
|
||||
cliName := &cli.StringFlag{
|
||||
Name: flagName,
|
||||
Aliases: []string{"n"},
|
||||
Value: defaultName,
|
||||
}
|
||||
|
||||
cliOrder := &cli.StringFlag{
|
||||
Name: flagOrder,
|
||||
Aliases: []string{"o"},
|
||||
Value: defaultOrder,
|
||||
}
|
||||
|
||||
app := &cli.App{
|
||||
Commands: []*cli.Command{
|
||||
{
|
||||
Name: "serve",
|
||||
Aliases: []string{"s"},
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: flagListen,
|
||||
Aliases: []string{"l"},
|
||||
Value: defaultListen,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagPort,
|
||||
Aliases: []string{"p"},
|
||||
Value: defaultPort,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagApiUrl,
|
||||
Aliases: []string{"u"},
|
||||
Value: defaultApiUrl,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagDirectory,
|
||||
Aliases: []string{"d"},
|
||||
Value: defaultServerDirectory,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagDebug,
|
||||
},
|
||||
},
|
||||
Usage: "run http server to serve api and files",
|
||||
Flags: []cli.Flag{cliListen, cliPort, cliApiUrl, cliDirectory, cliDebug},
|
||||
Usage: "run http server to serve api and files",
|
||||
Action: func(ctx *cli.Context) error {
|
||||
listen := ctx.String("listen")
|
||||
port := ctx.Int64("port")
|
||||
directory := strings.TrimSuffix(ctx.String(flagDirectory), "/")
|
||||
url := strings.TrimSuffix(ctx.String(flagApiUrl), "/")
|
||||
s := web.NewWebServer(
|
||||
ctx.String(flagListen),
|
||||
ctx.Int64(flagPort),
|
||||
ctx.String(flagDirectory),
|
||||
ctx.String(flagApiUrl),
|
||||
ctx.Bool(flagDebug),
|
||||
)
|
||||
|
||||
e := echo.New()
|
||||
|
||||
if ctx.Bool(flagDebug) {
|
||||
e.Use(middleware.Logger())
|
||||
e.Use(middleware.Recover())
|
||||
}
|
||||
|
||||
e.GET("/api/list", func(ctx echo.Context) error {
|
||||
return web.List(ctx, directory, url)
|
||||
})
|
||||
|
||||
e.GET("/api/stream", func(ctx echo.Context) error {
|
||||
return web.Stream(ctx, directory, url)
|
||||
})
|
||||
|
||||
e.Logger.Fatal(e.Start(fmt.Sprintf("%s:%d", listen, port)))
|
||||
s.Run()
|
||||
|
||||
return nil
|
||||
},
|
||||
|
|
@ -97,23 +96,7 @@ func main() {
|
|||
Name: "play",
|
||||
Usage: "run player",
|
||||
Aliases: []string{"p"},
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: flagApiUrl,
|
||||
Aliases: []string{"u"},
|
||||
Value: defaultApiUrl,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagName,
|
||||
Aliases: []string{"n"},
|
||||
Value: defaultName,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagOrder,
|
||||
Aliases: []string{"o"},
|
||||
Value: defaultOrder,
|
||||
},
|
||||
},
|
||||
Flags: []cli.Flag{cliApiUrl, cliName, cliOrder},
|
||||
Action: func(ctx *cli.Context) error {
|
||||
s := shell.NewShell(
|
||||
ctx.String(flagName),
|
||||
|
|
@ -129,28 +112,7 @@ func main() {
|
|||
Name: "download",
|
||||
Usage: "run downloder",
|
||||
Aliases: []string{"d"},
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: flagApiUrl,
|
||||
Aliases: []string{"u"},
|
||||
Value: defaultApiUrl,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagDirectory,
|
||||
Aliases: []string{"d"},
|
||||
Value: defaultDownloadDirectory,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagName,
|
||||
Aliases: []string{"n"},
|
||||
Value: defaultName,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: flagOrder,
|
||||
Aliases: []string{"o"},
|
||||
Value: defaultOrder,
|
||||
},
|
||||
},
|
||||
Flags: []cli.Flag{cliApiUrl, cliDirectory, cliName, cliOrder},
|
||||
Action: func(ctx *cli.Context) error {
|
||||
s := shell.NewShell(
|
||||
ctx.String(flagName),
|
||||
|
|
|
|||
46
internal/web/server.go
Normal file
46
internal/web/server.go
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
package web
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
)
|
||||
|
||||
type WebServer struct {
|
||||
Listen string
|
||||
Port int64
|
||||
Directory string
|
||||
Url string
|
||||
Debug bool
|
||||
}
|
||||
|
||||
func NewWebServer(listen string, port int64, directory, url string, debug bool) *WebServer {
|
||||
return &WebServer{
|
||||
Listen: listen,
|
||||
Port: port,
|
||||
Directory: strings.TrimSuffix(directory, "/"),
|
||||
Url: strings.TrimSuffix(url, "/"),
|
||||
Debug: debug,
|
||||
}
|
||||
}
|
||||
|
||||
func (w *WebServer) Run() {
|
||||
e := echo.New()
|
||||
|
||||
if w.Debug {
|
||||
e.Use(middleware.Logger())
|
||||
e.Use(middleware.Recover())
|
||||
}
|
||||
|
||||
e.GET("/api/list", func(ctx echo.Context) error {
|
||||
return List(ctx, w.Directory, w.Url)
|
||||
})
|
||||
|
||||
e.GET("/api/stream", func(ctx echo.Context) error {
|
||||
return Stream(ctx, w.Directory, w.Url)
|
||||
})
|
||||
|
||||
e.Logger.Fatal(e.Start(fmt.Sprintf("%s:%d", w.Listen, w.Port)))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue