49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package grpc_clients
|
|
|
|
import (
|
|
"context"
|
|
"gitea.pena/PenaSide/tariffs/internal/proto/tariffs"
|
|
"go.uber.org/zap"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
)
|
|
|
|
type Deps struct {
|
|
Logger *zap.Logger
|
|
TariffServiceHost string
|
|
}
|
|
|
|
type TariffGRPCClient struct {
|
|
logger *zap.Logger
|
|
tariffServiceHost string
|
|
}
|
|
|
|
func NewTariffGRPCClient(deps Deps) *TariffGRPCClient {
|
|
return &TariffGRPCClient{
|
|
logger: deps.Logger,
|
|
tariffServiceHost: deps.TariffServiceHost,
|
|
}
|
|
}
|
|
|
|
func (c *TariffGRPCClient) GetTariff(ctx context.Context, id string) (*tariffs.GetTariffResponse, error) {
|
|
connection, err := grpc.Dial(c.tariffServiceHost, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
|
if err != nil {
|
|
c.logger.Error("failed to connect to TariffService", zap.Error(err), zap.String("tariff_service_host", c.tariffServiceHost))
|
|
return nil, err
|
|
}
|
|
defer func() {
|
|
if closeErr := connection.Close(); closeErr != nil {
|
|
c.logger.Error("failed to close connection to TariffService", zap.Error(closeErr))
|
|
}
|
|
}()
|
|
|
|
client := tariffs.NewTariffServiceClient(connection)
|
|
|
|
result, err := client.GetTariff(ctx, &tariffs.GetTariffRequest{Id: id})
|
|
if err != nil {
|
|
c.logger.Error("failed to get tariff", zap.String("id", id), zap.Error(err))
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|