main.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. "git.nspix.com/golang/kos"
  10. )
  11. //go:embed web
  12. var webDir embed.FS
  13. type subServer struct {
  14. }
  15. type users struct {
  16. Name string `json:"name"`
  17. Age int `json:"age"`
  18. Tags []string `json:"tags"`
  19. }
  20. func (s *subServer) Start(ctx context.Context) (err error) {
  21. kos.Http().Root("/web", httpkg.FS(webDir))
  22. kos.Http().Handle(httpkg.MethodGet, "/hello", func(ctx *http.Context) (err error) {
  23. return ctx.Success("Hello World")
  24. })
  25. kos.Command().Handle("/test", "test command", func(ctx *cli.Context) (err error) {
  26. return ctx.Success([][]string{
  27. []string{"NAME", "AGE"},
  28. []string{"SSS", "aaa"},
  29. })
  30. })
  31. kos.Command().Handle("/users", "test command", func(ctx *cli.Context) (err error) {
  32. return ctx.Success([]*users{
  33. {Name: "Zhan", Age: 10, Tags: []string{"a", "b"}},
  34. {Name: "Lisi", Age: 15, Tags: []string{"c", "d"}},
  35. })
  36. })
  37. return
  38. }
  39. func (s *subServer) Stop() (err error) {
  40. return
  41. }
  42. func main() {
  43. flag.Parse()
  44. svr := kos.Init(
  45. kos.WithName("git.nspix.com/golang/test", "0.0.1"),
  46. kos.WithServer(&subServer{}),
  47. )
  48. svr.Run()
  49. }