package main import ( "context" "embed" "flag" "git.nspix.com/golang/kos/entry/cli" "git.nspix.com/golang/kos/entry/http" httpkg "net/http" "time" "git.nspix.com/golang/kos" ) //go:embed web var webDir embed.FS type subServer struct { } type users struct { Name string `json:"name"` Age int `json:"age"` Tags []string `json:"tags"` } func (s *subServer) Start(ctx context.Context) (err error) { kos.Http().Root("/web", httpkg.FS(webDir)) kos.Http().Handle(httpkg.MethodGet, "/hello", func(ctx *http.Context) (err error) { return ctx.Success("Hello World") }) kos.Command().Handle("/test", "test command", func(ctx *cli.Context) (err error) { return ctx.Success([][]string{ []string{"NAME", "AGE"}, []string{"SSS", "aaa"}, }) }) kos.Command().Handle("/users", "test command", func(ctx *cli.Context) (err error) { return ctx.Success([]*users{ {Name: "Zhan", Age: 10, Tags: []string{"a", "b"}}, {Name: "Lisi", Age: 15, Tags: []string{"c", "d"}}, }) }) kos.Command().Handle("/ctx", "context test", func(ctx *cli.Context) (err error) { select { case <-ctx.Context().Done(): case <-time.After(time.Second * 2): } return ctx.Success("OK") }) return } func (s *subServer) Stop() (err error) { return } func main() { flag.Parse() svr := kos.Init( kos.WithName("git.nspix.com/golang/test", "0.0.1"), kos.WithServer(&subServer{}), ) svr.Run() }