46 lines
1.2 KiB
Go

package grpc
import (
"fmt"
"net"
pb "github.com/teacinema/contracts/gen/go/media"
"github.com/teacinema/media-service/internal/application/usecases"
"github.com/teacinema/media-service/internal/config"
"github.com/teacinema/media-service/internal/infrastructure/images"
"github.com/teacinema/media-service/internal/infrastructure/storage"
handler "github.com/teacinema/media-service/internal/interfaces/grpc"
"github.com/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)
}