51 lines
1.0 KiB
Go
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
|
|
}
|