57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package gapi
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
|
|
db "github.com/itsscb/df/bff/db/sqlc"
|
|
"github.com/itsscb/df/bff/pb"
|
|
"github.com/itsscb/df/bff/token"
|
|
"github.com/itsscb/df/bff/util"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/reflection"
|
|
)
|
|
|
|
// Server serves gRPC requests for df service
|
|
type Server struct {
|
|
pb.UnimplementedAccountsServer
|
|
pb.UnimplementedSessionsServer
|
|
store db.Store
|
|
config util.Config
|
|
tokenMaker token.Maker
|
|
}
|
|
|
|
func NewServer(config util.Config, store db.Store) (*Server, error) {
|
|
tokenMaker, err := token.NewPasetoMaker(config.TokenPrivateKeyHex)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("cannot create token maker: %w", err)
|
|
}
|
|
|
|
server := &Server{
|
|
store: store,
|
|
config: config,
|
|
tokenMaker: tokenMaker,
|
|
}
|
|
|
|
return server, nil
|
|
}
|
|
|
|
func (server *Server) RegisterServer(grpcServer *grpc.Server) {
|
|
pb.RegisterAccountsServer(grpcServer, server)
|
|
pb.RegisterSessionsServer(grpcServer, server)
|
|
reflection.Register(grpcServer)
|
|
}
|
|
|
|
func (server *Server) RegisterHandler(ctx context.Context, mux *runtime.ServeMux) {
|
|
err := pb.RegisterAccountsHandlerServer(ctx, mux, server)
|
|
if err != nil {
|
|
log.Fatal("cannot register handler server")
|
|
}
|
|
err = pb.RegisterSessionsHandlerServer(ctx, mux, server)
|
|
if err != nil {
|
|
log.Fatal("cannot register handler server")
|
|
}
|
|
}
|