utils DI
This commit is contained in:
parent
d5610fbb30
commit
a995f4c75a
3 changed files with 16 additions and 46 deletions
|
|
@ -1,5 +1,7 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
App AppConfig
|
App AppConfig
|
||||||
}
|
}
|
||||||
|
|
@ -19,9 +21,13 @@ func NewConfig() *Config {
|
||||||
Host: getEnv("HOST", ""),
|
Host: getEnv("HOST", ""),
|
||||||
HttpPort: getEnv("HTTP_PORT", ""),
|
HttpPort: getEnv("HTTP_PORT", ""),
|
||||||
GrpcPort: getEnv("GRPC_PORT", ""),
|
GrpcPort: getEnv("GRPC_PORT", ""),
|
||||||
Domain: getEnv("DOMAIN", ""),
|
Domain: formatDomain(getEnv("DOMAIN", "")),
|
||||||
Volume: getEnv("VOLUME", ""),
|
Volume: getEnv("VOLUME", ""),
|
||||||
LogLevel: getEnv("LOG_LEVEL", ""),
|
LogLevel: getEnv("LOG_LEVEL", ""),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func formatDomain(domain string) string {
|
||||||
|
return strings.TrimRight(domain, "/")
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,22 +9,22 @@ import (
|
||||||
type ImageHandler struct {
|
type ImageHandler struct {
|
||||||
pb.UnimplementedImageStorageServer
|
pb.UnimplementedImageStorageServer
|
||||||
converter interfaces.Converter
|
converter interfaces.Converter
|
||||||
domain string
|
|
||||||
volume string
|
volume string
|
||||||
|
utils interfaces.Utils
|
||||||
}
|
}
|
||||||
|
|
||||||
type Deps struct {
|
type Deps struct {
|
||||||
Converter interfaces.Converter
|
Converter interfaces.Converter
|
||||||
Domain string
|
|
||||||
Volume string
|
Volume string
|
||||||
|
Utils interfaces.Utils
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewHandler(deps Deps) *grpc.Server {
|
func NewHandler(deps Deps) *grpc.Server {
|
||||||
srv := grpc.NewServer()
|
srv := grpc.NewServer()
|
||||||
imgSrv := ImageHandler{
|
imgSrv := ImageHandler{
|
||||||
converter: deps.Converter,
|
converter: deps.Converter,
|
||||||
domain: deps.Domain,
|
|
||||||
volume: deps.Volume,
|
volume: deps.Volume,
|
||||||
|
utils: deps.Utils,
|
||||||
}
|
}
|
||||||
|
|
||||||
pb.RegisterImageStorageServer(srv, &imgSrv)
|
pb.RegisterImageStorageServer(srv, &imgSrv)
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,12 @@ package mainHandler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
"google.golang.org/protobuf/types/known/emptypb"
|
"google.golang.org/protobuf/types/known/emptypb"
|
||||||
pb "imageStorage/pkg/proto/imageStorage"
|
pb "imageStorage/pkg/proto/imageStorage"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (i *ImageHandler) UploadImage(ctx context.Context, req *pb.UploadMerchImageRequest) (*pb.UploadMerchImageResponse, error) {
|
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")
|
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 {
|
if err := os.MkdirAll(path, 0777); err != nil {
|
||||||
return nil, err
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer fullFile.Close()
|
defer fullFile.Close()
|
||||||
|
|
||||||
thumbnailFile, err := os.Create(thumbnail)
|
thumbnailFile, err := os.Create(filepath.Join(path, i.utils.FilenameFromType("thumbnail")))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -41,38 +37,15 @@ func (i *ImageHandler) UploadImage(ctx context.Context, req *pb.UploadMerchImage
|
||||||
}
|
}
|
||||||
|
|
||||||
response := &pb.UploadMerchImageResponse{
|
response := &pb.UploadMerchImageResponse{
|
||||||
FullImage: i._makeMerchImageURL(req.UserUuid, req.MerchUuid, full),
|
FullImage: i.utils.MerchImageURL(req.UserUuid, req.MerchUuid, "full"),
|
||||||
Thumbnail: i._makeMerchImageURL(req.UserUuid, req.MerchUuid, thumbnail),
|
Thumbnail: i.utils.MerchImageURL(req.UserUuid, req.MerchUuid, "thumbnail"),
|
||||||
}
|
}
|
||||||
|
|
||||||
return response, nil
|
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) {
|
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)
|
entries, err := os.ReadDir(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -93,12 +66,3 @@ func (i *ImageHandler) DeleteImage(ctx context.Context, req *pb.DeleteImageReque
|
||||||
|
|
||||||
return &emptypb.Empty{}, nil
|
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)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue