proto + grpc handler

This commit is contained in:
nquidox 2025-10-20 22:21:55 +03:00
parent a72002540d
commit 37041fc8fe
15 changed files with 942 additions and 14 deletions

View file

@ -1,13 +1,70 @@
package app
import log "github.com/sirupsen/logrus"
import (
"context"
log "github.com/sirupsen/logrus"
"google.golang.org/grpc"
"imageStorage/config"
"net"
"time"
)
type App struct{}
func NewApp() *App {
return &App{}
type App struct {
config *config.Config
grpcServer *grpc.Server
}
func (app *App) Start() {
log.Info("Application started")
type Deps struct {
Config *config.Config
GrpcServer *grpc.Server
}
func NewApp(deps Deps) *App {
return &App{
config: deps.Config,
grpcServer: deps.GrpcServer,
}
}
func (app *App) Start(ctx context.Context) error {
serverErr := make(chan error, 1)
endpoint := net.JoinHostPort(app.config.App.Host, app.config.App.GrpcPort)
go func() {
listener, err := net.Listen("tcp", endpoint)
if err != nil {
log.WithField("err", err).Error("gRPC Server | Listener")
serverErr <- err
}
err = app.grpcServer.Serve(listener)
if err != nil {
log.WithField("err", err).Error("gRPC Server | Serve")
serverErr <- err
}
}()
log.Infof("Starting gRPC server on : %s", endpoint)
select {
case <-ctx.Done():
log.Info("Shutting down server")
shutdownCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
done := make(chan struct{})
go func() {
app.grpcServer.GracefulStop()
close(done)
}()
select {
case <-done:
log.Info("Server shutdown complete")
case <-shutdownCtx.Done():
app.grpcServer.Stop()
}
return nil
case err := <-serverErr:
return err
}
}

View file

@ -0,0 +1,11 @@
package convert
type Handler struct {
*service
}
func NewHandler() *Handler {
return &Handler{
service: newService(),
}
}

View file

@ -0,0 +1,15 @@
package convert
type service struct{}
func newService() *service {
return &service{}
}
func (s *service) ConvertToJpeg() error {
return nil
}
func (s *service) MakeThumbnail() error {
return nil
}

View file

@ -0,0 +1,6 @@
package interfaces
type Converter interface {
MakeThumbnail() error
ConvertToJpeg() error
}

View file

@ -0,0 +1,27 @@
package mainHandler
import (
"google.golang.org/grpc"
"imageStorage/internal/interfaces"
pb "imageStorage/pkg/proto/imageStorage"
)
type ImageHandler struct {
pb.UnimplementedImageStorageServer
converter interfaces.Converter
}
type Deps struct {
Converter interfaces.Converter
}
func NewHandler(deps Deps) *grpc.Server {
srv := grpc.NewServer()
imgSrv := ImageHandler{
converter: deps.Converter,
}
pb.RegisterImageStorageServer(srv, &imgSrv)
return srv
}

View file

@ -0,0 +1,18 @@
package mainHandler
import (
"context"
pb "imageStorage/pkg/proto/imageStorage"
)
func (i *ImageHandler) UploadImage(ctx context.Context, req *pb.UploadImageRequest) (*pb.UploadImageResponse, error) {
return nil, nil
}
func (i *ImageHandler) GetImage(ctx context.Context, req *pb.GetImageRequest) (*pb.GetImageResponse, error) {
return nil, nil
}
func (i *ImageHandler) DeleteImage(ctx context.Context, req *pb.DeleteImageRequest) (*pb.GetImageResponse, error) {
return nil, nil
}