Move server things into server folder, add basic admin program for interacting with the admin api
This commit is contained in:
parent
e1ab7189f4
commit
cce62f6f1a
23 changed files with 90 additions and 1 deletions
23
admincli/action.go
Normal file
23
admincli/action.go
Normal file
|
@ -0,0 +1,23 @@
|
|||
package admincli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func PlayRandomAction(c Command) {
|
||||
println("Playing random video")
|
||||
http.Get(fmt.Sprintf("http://localhost:%d/api/random", c.Port))
|
||||
}
|
||||
|
||||
func PlayAction(c Command) {
|
||||
println("Play action is not yet implemented")
|
||||
}
|
||||
|
||||
func StopAction(c Command) {
|
||||
println("Stop action is not yet implemented")
|
||||
}
|
||||
|
||||
func NowPlayingAction(c Command) {
|
||||
println("Now playing action is not yet implemented")
|
||||
}
|
14
admincli/build.nix
Normal file
14
admincli/build.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ buildGoModule
|
||||
,
|
||||
}:
|
||||
buildGoModule {
|
||||
src = ./.;
|
||||
|
||||
name = "admincli";
|
||||
vendorHash = null;
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
}
|
3
admincli/go.mod
Normal file
3
admincli/go.mod
Normal file
|
@ -0,0 +1,3 @@
|
|||
module admincli
|
||||
|
||||
go 1.23.4
|
42
admincli/main.go
Normal file
42
admincli/main.go
Normal file
|
@ -0,0 +1,42 @@
|
|||
package admincli
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
"maps"
|
||||
)
|
||||
|
||||
var actionMap = map[string]func(c Command){
|
||||
"play-random": PlayRandomAction,
|
||||
"play": PlayAction,
|
||||
"stop": StopAction,
|
||||
"now-playing": NowPlayingAction,
|
||||
}
|
||||
|
||||
func getActionNames() string {
|
||||
return strings.Join(slices.Collect(maps.Keys(actionMap)), ", ")
|
||||
}
|
||||
|
||||
type Command struct {
|
||||
Action string
|
||||
Args []string
|
||||
Port int
|
||||
}
|
||||
|
||||
func main() {
|
||||
var c Command
|
||||
flag.StringVar(&c.Action, "action", "none", fmt.Sprintf("Available actions: %s", getActionNames()))
|
||||
flag.IntVar(&c.Port, "port", 3001, "The private admin api port")
|
||||
flag.Parse()
|
||||
|
||||
f, exists := actionMap[c.Action]
|
||||
if !exists {
|
||||
println("Unknown action:", c.Action)
|
||||
return
|
||||
}
|
||||
|
||||
f(c)
|
||||
}
|
|
@ -35,7 +35,9 @@
|
|||
};
|
||||
|
||||
packages = {
|
||||
default = callPackage ./build.nix { };
|
||||
default = callPackage ./server/build.nix { };
|
||||
livestream-server = callPackage ./server/build.nix { };
|
||||
livestream-admincli = callPackage ./admincli/build.nix { };
|
||||
docker = callPackage ./docker.nix {
|
||||
default = dockerCallPackage ./build.nix { };
|
||||
inherit nix2container;
|
||||
|
|
5
go.work
Normal file
5
go.work
Normal file
|
@ -0,0 +1,5 @@
|
|||
go 1.23.4
|
||||
|
||||
use ./admincli
|
||||
|
||||
use ./server
|
Loading…
Add table
Add a link
Reference in a new issue