This commit is contained in:
nquidox 2025-10-25 17:41:04 +03:00
parent d5610fbb30
commit a995f4c75a
3 changed files with 16 additions and 46 deletions

View file

@ -1,5 +1,7 @@
package config
import "strings"
type Config struct {
App AppConfig
}
@ -19,9 +21,13 @@ func NewConfig() *Config {
Host: getEnv("HOST", ""),
HttpPort: getEnv("HTTP_PORT", ""),
GrpcPort: getEnv("GRPC_PORT", ""),
Domain: getEnv("DOMAIN", ""),
Domain: formatDomain(getEnv("DOMAIN", "")),
Volume: getEnv("VOLUME", ""),
LogLevel: getEnv("LOG_LEVEL", ""),
},
}
}
func formatDomain(domain string) string {
return strings.TrimRight(domain, "/")
}

View file

@ -9,22 +9,22 @@ import (
type ImageHandler struct {
pb.UnimplementedImageStorageServer
converter interfaces.Converter
domain string
volume string
utils interfaces.Utils
}
type Deps struct {
Converter interfaces.Converter
Domain string
Volume string
Utils interfaces.Utils
}
func NewHandler(deps Deps) *grpc.Server {
srv := grpc.NewServer()
imgSrv := ImageHandler{
converter: deps.Converter,
domain: deps.Domain,
volume: deps.Volume,
utils: deps.Utils,
}
pb.RegisterImageStorageServer(srv, &imgSrv)

View file

@ -2,14 +2,12 @@ package mainHandler
import (
"context"
"fmt"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"google.golang.org/protobuf/types/known/emptypb"
pb "imageStorage/pkg/proto/imageStorage"
"os"
"path/filepath"
"strings"
)
func (i *ImageHandler) UploadImage(ctx context.Context, req *pb.UploadMerchImageRequest) (*pb.UploadMerchImageResponse, error) {
@ -17,20 +15,18 @@ func (i *ImageHandler) UploadImage(ctx context.Context, req *pb.UploadMerchImage
return nil, status.Errorf(codes.InvalidArgument, "image data is empty")
}
path := i._makeMerchImagePath(req.UserUuid, req.MerchUuid)
path := i.utils.MerchImageVolumePath(req.UserUuid, req.MerchUuid)
if err := os.MkdirAll(path, 0777); err != nil {
return nil, err
}
full := filepath.Join(path, "full.jpg")
thumbnail := filepath.Join(path, "thumbnail.jpg")
fullFile, err := os.Create(full)
fullFile, err := os.Create(filepath.Join(path, i.utils.FilenameFromType("full")))
if err != nil {
return nil, err
}
defer fullFile.Close()
thumbnailFile, err := os.Create(thumbnail)
thumbnailFile, err := os.Create(filepath.Join(path, i.utils.FilenameFromType("thumbnail")))
if err != nil {
return nil, err
}
@ -41,38 +37,15 @@ func (i *ImageHandler) UploadImage(ctx context.Context, req *pb.UploadMerchImage
}
response := &pb.UploadMerchImageResponse{
FullImage: i._makeMerchImageURL(req.UserUuid, req.MerchUuid, full),
Thumbnail: i._makeMerchImageURL(req.UserUuid, req.MerchUuid, thumbnail),
FullImage: i.utils.MerchImageURL(req.UserUuid, req.MerchUuid, "full"),
Thumbnail: i.utils.MerchImageURL(req.UserUuid, req.MerchUuid, "thumbnail"),
}
return response, nil
}
func (i *ImageHandler) GetImage(ctx context.Context, req *pb.GetImageRequest) (*pb.GetImageResponse, error) {
path := i._makeMerchImagePath(req.UserUuid, req.MerchUuid)
unk := status.Error(codes.InvalidArgument, "unknown image type")
switch req.ImgType {
case pb.ImageType_UNKNOWN:
return nil, unk
case pb.ImageType_FULL:
return &pb.GetImageResponse{
Url: fmt.Sprintf("%s/%s", i.domain, filepath.Join(path, "full.jpg")),
Etag: "",
}, nil
case pb.ImageType_THUMBNAIL:
return &pb.GetImageResponse{
Url: fmt.Sprintf("%s/%s", i.domain, filepath.Join(path, "thumbnail.jpg")),
Etag: "",
}, nil
default:
return nil, unk
}
}
func (i *ImageHandler) DeleteImage(ctx context.Context, req *pb.DeleteImageRequest) (*emptypb.Empty, error) {
path := i._makeMerchImagePath(req.UserUuid, req.MerchUuid)
path := i.utils.MerchImageVolumePath(req.UserUuid, req.MerchUuid)
entries, err := os.ReadDir(path)
if err != nil {
@ -93,12 +66,3 @@ func (i *ImageHandler) DeleteImage(ctx context.Context, req *pb.DeleteImageReque
return &emptypb.Empty{}, nil
}
func (i *ImageHandler) _makeMerchImagePath(u, m string) string {
return fmt.Sprintf("%s/merchImages/%s/%s", i.volume, u, m)
}
func (i *ImageHandler) _makeMerchImageURL(u, m, n string) string {
d := strings.TrimSuffix(i.domain, "/")
return fmt.Sprintf("%s/merchImages/%s/%s/%s", d, u, m, n)
}