Files
go-common/app/service/main/identify/server/grpc/server.go
2019-04-22 18:49:16 +08:00

91 lines
2.0 KiB
Go

package grpc
import (
"context"
"fmt"
"go-common/app/service/main/identify/api/grpc"
"go-common/app/service/main/identify/service"
"go-common/library/ecode"
"go-common/library/log"
"go-common/library/net/metadata"
"go-common/library/net/rpc/warden"
"google.golang.org/grpc"
)
// New Identify warden rpc server
func New(cfg *warden.ServerConfig, s *service.Service) *warden.Server {
w := warden.NewServer(cfg)
w.Use(func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
if resp, err = handler(ctx, req); err != nil {
log.Infov(ctx,
log.KV("path", info.FullMethod),
log.KV("caller", metadata.String(ctx, metadata.Caller)),
log.KV("args", fmt.Sprintf("%v", req)),
log.KV("args", fmt.Sprintf("%+v", err)))
}
return
})
v1.RegisterIdentifyServer(w.Server(), &server{s})
ws, err := w.Start()
if err != nil {
panic(err)
}
return ws
}
type server struct {
svr *service.Service
}
var _ v1.IdentifyServer = &server{}
var (
emptyCookieReply = &v1.GetCookieInfoReply{
IsLogin: false,
}
emptyTokenReply = &v1.GetTokenInfoReply{
IsLogin: false,
}
)
// CookieInfo verify user info by cookie.
func (s *server) GetCookieInfo(ctx context.Context, req *v1.GetCookieInfoReq) (*v1.GetCookieInfoReply, error) {
res, err := s.svr.GetCookieInfo(ctx, req.GetCookie())
if err != nil {
if err == ecode.NoLogin {
return emptyCookieReply, nil
}
return nil, err
}
return &v1.GetCookieInfoReply{
IsLogin: true,
Mid: res.Mid,
Expires: res.Expires,
Csrf: res.Csrf,
}, nil
}
// TokenInfo verify user info by token.
func (s *server) GetTokenInfo(ctx context.Context, req *v1.GetTokenInfoReq) (*v1.GetTokenInfoReply, error) {
token := &v1.GetTokenInfoReq{
Buvid: req.Buvid,
Token: req.Token,
}
res, err := s.svr.GetTokenInfo(ctx, token)
if err != nil {
if err == ecode.NoLogin {
return emptyTokenReply, nil
}
return nil, err
}
return &v1.GetTokenInfoReply{
IsLogin: true,
Mid: res.Mid,
Expires: res.Expires,
Csrf: res.Csrf,
}, nil
}