server.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package grpc
  2. import (
  3. "context"
  4. "fmt"
  5. "go-common/app/service/main/identify/api/grpc"
  6. "go-common/app/service/main/identify/service"
  7. "go-common/library/ecode"
  8. "go-common/library/log"
  9. "go-common/library/net/metadata"
  10. "go-common/library/net/rpc/warden"
  11. "google.golang.org/grpc"
  12. )
  13. // New Identify warden rpc server
  14. func New(cfg *warden.ServerConfig, s *service.Service) *warden.Server {
  15. w := warden.NewServer(cfg)
  16. w.Use(func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
  17. if resp, err = handler(ctx, req); err != nil {
  18. log.Infov(ctx,
  19. log.KV("path", info.FullMethod),
  20. log.KV("caller", metadata.String(ctx, metadata.Caller)),
  21. log.KV("args", fmt.Sprintf("%v", req)),
  22. log.KV("args", fmt.Sprintf("%+v", err)))
  23. }
  24. return
  25. })
  26. v1.RegisterIdentifyServer(w.Server(), &server{s})
  27. ws, err := w.Start()
  28. if err != nil {
  29. panic(err)
  30. }
  31. return ws
  32. }
  33. type server struct {
  34. svr *service.Service
  35. }
  36. var _ v1.IdentifyServer = &server{}
  37. var (
  38. emptyCookieReply = &v1.GetCookieInfoReply{
  39. IsLogin: false,
  40. }
  41. emptyTokenReply = &v1.GetTokenInfoReply{
  42. IsLogin: false,
  43. }
  44. )
  45. // CookieInfo verify user info by cookie.
  46. func (s *server) GetCookieInfo(ctx context.Context, req *v1.GetCookieInfoReq) (*v1.GetCookieInfoReply, error) {
  47. res, err := s.svr.GetCookieInfo(ctx, req.GetCookie())
  48. if err != nil {
  49. if err == ecode.NoLogin {
  50. return emptyCookieReply, nil
  51. }
  52. return nil, err
  53. }
  54. return &v1.GetCookieInfoReply{
  55. IsLogin: true,
  56. Mid: res.Mid,
  57. Expires: res.Expires,
  58. Csrf: res.Csrf,
  59. }, nil
  60. }
  61. // TokenInfo verify user info by token.
  62. func (s *server) GetTokenInfo(ctx context.Context, req *v1.GetTokenInfoReq) (*v1.GetTokenInfoReply, error) {
  63. token := &v1.GetTokenInfoReq{
  64. Buvid: req.Buvid,
  65. Token: req.Token,
  66. }
  67. res, err := s.svr.GetTokenInfo(ctx, token)
  68. if err != nil {
  69. if err == ecode.NoLogin {
  70. return emptyTokenReply, nil
  71. }
  72. return nil, err
  73. }
  74. return &v1.GetTokenInfoReply{
  75. IsLogin: true,
  76. Mid: res.Mid,
  77. Expires: res.Expires,
  78. Csrf: res.Csrf,
  79. }, nil
  80. }