main.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package main
  2. import (
  3. "context"
  4. "embed"
  5. "flag"
  6. "git.nspix.com/golang/kos/entry/cli"
  7. "git.nspix.com/golang/kos/entry/http"
  8. httpkg "net/http"
  9. "time"
  10. "git.nspix.com/golang/kos"
  11. )
  12. //go:embed web
  13. var webDir embed.FS
  14. type subServer struct {
  15. }
  16. type users struct {
  17. Name string `json:"name"`
  18. Age int `json:"age"`
  19. Tags []string `json:"tags"`
  20. }
  21. func (s *subServer) Start(ctx context.Context) (err error) {
  22. kos.Http().Root("/web", httpkg.FS(webDir))
  23. kos.Http().Handle(httpkg.MethodGet, "/hello", func(ctx *http.Context) (err error) {
  24. return ctx.Success("Hello World")
  25. })
  26. kos.Command().Handle("/test", "test command", func(ctx *cli.Context) (err error) {
  27. return ctx.Success([][]string{
  28. []string{"NAME", "AGE"},
  29. []string{"SSS", "aaa"},
  30. })
  31. })
  32. kos.Command().Handle("/users", "test command", func(ctx *cli.Context) (err error) {
  33. return ctx.Success([]*users{
  34. {Name: "Zhan", Age: 10, Tags: []string{"a", "b"}},
  35. {Name: "Lisi", Age: 15, Tags: []string{"c", "d"}},
  36. })
  37. })
  38. kos.Command().Handle("/ctx", "context test", func(ctx *cli.Context) (err error) {
  39. select {
  40. case <-ctx.Context().Done():
  41. case <-time.After(time.Second * 2):
  42. }
  43. return ctx.Success("OK")
  44. })
  45. return
  46. }
  47. func (s *subServer) Stop() (err error) {
  48. return
  49. }
  50. func main() {
  51. flag.Parse()
  52. svr := kos.Init(
  53. kos.WithName("git.nspix.com/golang/test", "0.0.1"),
  54. kos.WithServer(&subServer{}),
  55. )
  56. svr.Run()
  57. }