cmd.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package cmd
  2. import (
  3. "context"
  4. "esproxy/internal/consts"
  5. "esproxy/internal/service"
  6. "github.com/gogf/gf/v2/frame/g"
  7. "github.com/gogf/gf/v2/net/ghttp"
  8. "github.com/gogf/gf/v2/os/gcmd"
  9. "strings"
  10. "time"
  11. )
  12. var (
  13. Main = gcmd.Command{
  14. Name: "main",
  15. Usage: "main",
  16. Brief: "start esProxy http server",
  17. Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
  18. s := g.Server()
  19. s.Use(service.Middleware)
  20. s.BindHandler("/*", func(r *ghttp.Request) {
  21. if strings.Contains(r.RequestURI, "/favicon.ico") {
  22. return
  23. }
  24. if strings.Contains(r.RequestURI, "/links/number") {
  25. data := service.InformationNumber(ctx)
  26. r.Response.Write(data)
  27. return
  28. }
  29. queryLevel, now := r.GetCtxVar(consts.QueryLevelKey).Int(), time.Now()
  30. rp, err := service.EsProxyManager.GetProxy(r.Context(), queryLevel)
  31. r.SetCtxVar(consts.QueryWaitPoolTime, time.Now().Sub(now).Seconds()) //记录等待时长
  32. if err != nil {
  33. r.Response.Status = 500
  34. g.Log().Errorf(r.Context(), "GetProxy Error:%v", err)
  35. return
  36. }
  37. defer service.EsProxyManager.Release(r.Context(), queryLevel)
  38. rp.ServeHTTP(r.Response.Writer, r.Request)
  39. })
  40. s.Run()
  41. return nil
  42. },
  43. }
  44. )