rpc_value.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package middleware
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "net/url"
  7. "strconv"
  8. context2 "git.ikuban.com/server/kratos-utils/http/context"
  9. "google.golang.org/grpc/metadata"
  10. "github.com/go-kratos/kratos/v2/middleware"
  11. )
  12. func GrpcValue(handler middleware.Handler) middleware.Handler {
  13. return func(ctx context.Context, req interface{}) (reply interface{}, err error) {
  14. if md, ok := metadata.FromIncomingContext(ctx); ok {
  15. userID := md.Get("user_id")
  16. if len(userID) > 0 {
  17. _userID, _ := strconv.ParseInt(userID[0], 10, 64)
  18. ctx = context2.AppendToContext(ctx, "user_id", _userID)
  19. }
  20. claimMap := md.Get("jwt_claims")
  21. if len(claimMap) > 0 {
  22. _claimMap := json.RawMessage(claimMap[0])
  23. ctx = context2.AppendToContext(ctx, "jwt_claims", _claimMap)
  24. }
  25. token := md.Get("auth_token")
  26. if len(token) > 0 {
  27. ctx = context2.AppendToContext(ctx, "auth_token", token[0])
  28. }
  29. page := md.Get("page")
  30. if len(page) > 0 {
  31. _page, _ := strconv.ParseInt(page[0], 10, 64)
  32. ctx = context2.AppendToContext(ctx, "page", _page)
  33. }
  34. pageSize := md.Get("page_size")
  35. if len(pageSize) > 0 {
  36. _pageSize, _ := strconv.ParseInt(pageSize[0], 10, 64)
  37. ctx = context2.AppendToContext(ctx, "page_size", _pageSize)
  38. }
  39. query := md.Get("query")
  40. if len(query) > 0 {
  41. _query, _ := url.ParseQuery(query[0])
  42. ctx = context2.AppendToContext(ctx, "query", _query)
  43. }
  44. referer := md.Get("referer")
  45. if len(referer) > 0 {
  46. ctx = context2.AppendToContext(ctx, "referer", referer[0])
  47. }
  48. body := md.Get("body")
  49. if len(body) > 0 {
  50. fmt.Println(body)
  51. ctx = context2.AppendToContext(ctx, "body", body[0])
  52. }
  53. uri := md.Get("uri")
  54. if len(uri) > 0 {
  55. ctx = context2.AppendToContext(ctx, "uri", uri[0])
  56. }
  57. }
  58. return handler(ctx, req)
  59. }
  60. }