51 lines
1.0 KiB
Go

package grpc
import (
"bytes"
"context"
pb "git.ksv741.keenetic.pro/teacinema/contracts/gen/go/media"
"git.ksv741.keenetic.pro/teacinema/media-service/internal/application/dto"
"git.ksv741.keenetic.pro/teacinema/media-service/internal/application/usecases"
)
type MediaHandler struct {
pb.UnimplementedMediaServiceServer
uploadUC *usecases.UploadUseCase
getUC *usecases.GetUseCase
deleteUC *usecases.DeleteUseCase
}
func NewMediaHandler(
u *usecases.UploadUseCase,
g *usecases.GetUseCase,
d *usecases.DeleteUseCase,
) *MediaHandler {
return &MediaHandler{
uploadUC: u,
getUC: g,
deleteUC: d,
}
}
func (h *MediaHandler) Upload(
ctx context.Context,
req *pb.UploadRequest,
) (*pb.UploadResponse, error) {
res, err := h.uploadUC.Execute(ctx, dto.UploadMediaRequest{
FileName: req.FileName,
Folder: req.Folder,
ContentType: req.ContentType,
Reader: bytes.NewReader(req.Data),
Size: int64(len(req.Data)),
})
if err != nil {
return nil, err
}
return &pb.UploadResponse{
Key: res.Key,
}, nil
}