Skip to content
Snippets Groups Projects
Commit 9eb24e8f authored by Semyon Krestyaninov's avatar Semyon Krestyaninov :dog2:
Browse files

fix

parent ec44a629
No related branches found
No related tags found
No related merge requests found
......@@ -11,35 +11,40 @@ import (
// @protobuf git.perx.ru/perxis/perxis-go/proto/images
type Images interface {
// Get Применяет переданные команды и параметры к файлу, идентификатор которого передан в запросе.
//
// Команды выполняются в порядке их передачи.
// Поддерживаемые команды:
// - crop (ширина, высота, режим масштабирования (опционально))
// - fit (ширина, высота, режим масштабирования (опционально))
// - resize (ширина, высота, режим масштабирования (опционально))
// - format (один из форматов: jpeg, png, gif, tiff, bmp)
// Параметры команды должны быть разделены знаком тире (-).
// Размеры могут быть указаны в следующих форматах:
// - 128-128 (старый формат)
// - 128x128 (новый формат)
// - 128x (только ширина)
// - x128 (только высота)
// Возвращает объект File с заполненным полем File.URL
// Get Применяет команды и параметры к файлу и возвращает объект File с заполненным полем URL
Get(ctx context.Context, source *files.File, opts *GetOptions) (result *files.File, err error)
}
type GetOptions struct {
Commands []*Command
Preset *string
Format *string
Quality *int
Hint *string
Resampling *string
NoCache *bool
Preset string
Format string
Quality int
Hint string
Resampling string
NoCache bool
}
type Command struct {
Op string
Value []string
CropCommand *CropCommand
FitCommand *FitCommand
ResizeCommand *ResizeCommand
}
type CropCommand struct {
Width int
Height int
Resampling string
}
type FitCommand struct {
Width int
Height int
Resampling string
}
type ResizeCommand struct {
Width int
Height int
Resampling string
}
......@@ -7,7 +7,6 @@ package transportgrpc
import (
service "git.perx.ru/perxis/perxis-go/images"
file "git.perx.ru/perxis/perxis-go/pkg/files"
"git.perx.ru/perxis/perxis-go/pkg/optional"
pbfile "git.perx.ru/perxis/perxis-go/proto/files"
pbimage "git.perx.ru/perxis/perxis-go/proto/images"
)
......@@ -48,23 +47,18 @@ func PtrGetOptionsToProto(opts *service.GetOptions) (*pbimage.GetRequest_GetOpti
commands := make([]*pbimage.Command, 0, len(opts.Commands))
for _, command := range opts.Commands {
commands = append(commands, &pbimage.Command{
Op: command.Op,
Value: command.Value,
})
commands = append(commands, PtrCommandToProto(command))
}
p := &pbimage.GetRequest_GetOptions{
Commands: commands,
Preset: opts.Preset,
Format: opts.Format,
Quality: int32(opts.Quality),
Hint: opts.Hint,
Resampling: opts.Resampling,
NoCache: opts.NoCache,
}
if opts.Quality != nil {
p.Quality = optional.Ptr(int32(*opts.Quality))
}
return p, nil
}
......@@ -77,31 +71,111 @@ func ProtoToPtrGetOptions(protoOpts *pbimage.GetRequest_GetOptions) (*service.Ge
commands := make([]*service.Command, 0, len(protoOpts.Commands))
for _, command := range protoOpts.Commands {
commands = append(commands, &service.Command{
Op: command.Op,
Value: command.Value,
})
commands = append(commands, ProtoCommandToPtr(command))
}
s := &service.GetOptions{
Commands: commands,
Preset: protoOpts.Preset,
Format: protoOpts.Format,
Quality: int(protoOpts.Quality),
Hint: protoOpts.Hint,
Resampling: protoOpts.Resampling,
NoCache: protoOpts.NoCache,
}
if protoOpts.Quality != nil {
s.Quality = optional.Ptr(int(*protoOpts.Quality))
}
return s, nil
}
func ProtoCommandToPtr(cmd *pbimage.Command) *service.Command {
switch cmd.GetCommandType().(type) {
case *pbimage.Command_Crop:
return &service.Command{CropCommand: ProtoCropCommandToPtr(cmd.GetCrop())}
case *pbimage.Command_Fit:
return &service.Command{FitCommand: ProtoFitCommandToPtr(cmd.GetFit())}
case *pbimage.Command_Resize:
return &service.Command{ResizeCommand: ProtoResizeCommandToPtr(cmd.GetResize())}
default:
return nil
}
}
func ProtoCropCommandToPtr(cmd *pbimage.CropCommand) *service.CropCommand {
return &service.CropCommand{
Width: int(cmd.Width),
Height: int(cmd.Height),
Resampling: cmd.Resampling,
}
}
func ProtoFitCommandToPtr(cmd *pbimage.FitCommand) *service.FitCommand {
return &service.FitCommand{
Width: int(cmd.Width),
Height: int(cmd.Height),
Resampling: cmd.Resampling,
}
}
func ProtoResizeCommandToPtr(cmd *pbimage.ResizeCommand) *service.ResizeCommand {
return &service.ResizeCommand{
Width: int(cmd.Width),
Height: int(cmd.Height),
Resampling: cmd.Resampling,
}
}
func PtrCommandToProto(cmd *service.Command) *pbimage.Command {
switch {
case cmd.CropCommand != nil:
return &pbimage.Command{
CommandType: &pbimage.Command_Crop{
Crop: PtrCropCommandToProto(cmd.CropCommand),
},
}
case cmd.FitCommand != nil:
return &pbimage.Command{
CommandType: &pbimage.Command_Fit{
Fit: PtrFitCommandToProto(cmd.FitCommand),
},
}
case cmd.ResizeCommand != nil:
return &pbimage.Command{
CommandType: &pbimage.Command_Resize{
Resize: PtrResizeCommandToProto(cmd.ResizeCommand),
},
}
default:
return nil
}
}
func PtrCropCommandToProto(cmd *service.CropCommand) *pbimage.CropCommand {
return &pbimage.CropCommand{
Width: int64(cmd.Width),
Height: int64(cmd.Height),
Resampling: cmd.Resampling,
}
}
func PtrFitCommandToProto(cmd *service.FitCommand) *pbimage.FitCommand {
return &pbimage.FitCommand{
Width: int64(cmd.Width),
Height: int64(cmd.Height),
Resampling: cmd.Resampling,
}
}
func PtrResizeCommandToProto(cmd *service.ResizeCommand) *pbimage.ResizeCommand {
return &pbimage.ResizeCommand{
Width: int64(cmd.Width),
Height: int64(cmd.Height),
Resampling: cmd.Resampling,
}
}
//func PtrFilesFileToProto(source *files.File) (*pbimage.File, error) {
// panic("function not provided") // TODO: provide convert
//}
//
//func ProtoToPtrFilesFile(protoSource *images.File) (*files.File, error) {
// panic("function not provided") // TODO: provide convert
//}
Subproject commit 0b85a13e5dd2ead3e6a4b506aa23f23e668f2b10
Subproject commit 12887fabc3f8ea15ca89ab10f435c78e5baaead7
This diff is collapsed.
......@@ -28,12 +28,7 @@ const (
//
// ImageService - сервис для обработки изображений
type ImagesClient interface {
// Размеры могут быть указаны в следующих форматах:
// - 128-128 (старый формат)
// - 128x128 (новый формат)
// - 128x (только ширина)
// - x128 (только высота)
// Возвращает объект File с заполненным полем File.URL
// Применяет команды и параметры к файлу и возвращает объект File с заполненным полем URL
Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error)
}
......@@ -61,12 +56,7 @@ func (c *imagesClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.Cal
//
// ImageService - сервис для обработки изображений
type ImagesServer interface {
// Размеры могут быть указаны в следующих форматах:
// - 128-128 (старый формат)
// - 128x128 (новый формат)
// - 128x (только ширина)
// - x128 (только высота)
// Возвращает объект File с заполненным полем File.URL
// Применяет команды и параметры к файлу и возвращает объект File с заполненным полем URL
Get(context.Context, *GetRequest) (*GetResponse, error)
mustEmbedUnimplementedImagesServer()
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment