69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"flag"
|
|
"git.nobla.cn/golang/kos/entry/cli"
|
|
"git.nobla.cn/golang/kos/entry/http"
|
|
httpkg "net/http"
|
|
"time"
|
|
|
|
"git.nobla.cn/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.nobla.cn/golang/test", "0.0.1"),
|
|
kos.WithServer(&subServer{}),
|
|
)
|
|
svr.Run()
|
|
}
|