package auth import ( "context" "fmt" "google.golang.org/grpc/metadata" "google.golang.org/grpc" auth "src.dualinventive.com/go/authentication-service/grpc" ) //Service contains authentication related operations type Service interface { VerifyToken(token string) (bool, error) } //ServiceGrpc contains authentication related operations over GRPC type ServiceGrpc struct { client auth.AuthenticationServiceClient } //NewAuthService returns a new GRPC based AuthService func NewAuthService(host, port string) (Service, error) { conn, err := grpc.Dial(fmt.Sprintf("%s:%s", host, port), grpc.WithInsecure()) if err != nil { return nil, err } client := auth.NewAuthenticationServiceClient(conn) return &ServiceGrpc{client}, nil } //VerifyToken verifies the given token to see if its valid func (as *ServiceGrpc) VerifyToken(token string) (bool, error) { // Login md := metadata.Pairs( "token", token, ) ctx := metadata.NewOutgoingContext(context.Background(), md) in := &auth.Empty{} resp, err := as.client.VerifyToken(ctx, in) if err != nil { return false, err } return resp.Valid, nil }