46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
package grpc
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
|
|
pb "git.ksv741.keenetic.pro/teacinema/contracts/gen/go/media"
|
|
"git.ksv741.keenetic.pro/teacinema/media-service/internal/application/usecases"
|
|
"git.ksv741.keenetic.pro/teacinema/media-service/internal/config"
|
|
"git.ksv741.keenetic.pro/teacinema/media-service/internal/infrastructure/images"
|
|
"git.ksv741.keenetic.pro/teacinema/media-service/internal/infrastructure/storage"
|
|
handler "git.ksv741.keenetic.pro/teacinema/media-service/internal/interfaces/grpc"
|
|
"git.ksv741.keenetic.pro/teacinema/media-service/pkg/logger"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
func NewServer(storage storage.Storage, cfg *config.Config) *grpc.Server {
|
|
server := grpc.NewServer(
|
|
grpc.ChainUnaryInterceptor(
|
|
RequestLoggerInterceptor,
|
|
TraceIDInterceptor,
|
|
),
|
|
)
|
|
|
|
uploadUC := usecases.NewUploadUseCase(storage, images.NewImageProcessor())
|
|
getUC := usecases.NewGetUseCase(storage)
|
|
deleteUC := usecases.NewDeleteUseCase(storage)
|
|
|
|
h := handler.NewMediaHandler(uploadUC, getUC, deleteUC)
|
|
|
|
pb.RegisterMediaServiceServer(server, h)
|
|
|
|
return server
|
|
}
|
|
|
|
func StartGRPC(server *grpc.Server, port int) error {
|
|
addr := fmt.Sprintf(":%d", port)
|
|
lis, err := net.Listen("tcp", addr)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
logger.Info("gRPC server listening on %s", addr)
|
|
return server.Serve(lis)
|
|
}
|