customer/internal/initialize/clients.go
2024-02-05 14:13:36 +03:00

77 lines
2.6 KiB
Go

package initialize
import (
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/interface/client"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
)
type ClientsDeps struct {
Logger *zap.Logger
AuthURL *models.AuthMicroserviceURL
HubadminURL *models.HubadminMicroserviceURL
CurrencyURL *models.CurrencyMicroserviceURL
DiscountServiceConfiguration *models.DiscountMicroserviceConfiguration
PaymentServiceConfiguration *models.PaymentMicroserviceConfiguration
VerificationURL *models.VerificationMicroserviceURL
TemplategenURL *models.TemplategenMicroserviceURL
MailClient *models.MailConfiguration
}
type Clients struct {
AuthClient *client.AuthClient
HubadminClient *client.HubadminClient
CurrencyClient *client.CurrencyClient
DiscountClient *client.DiscountClient
PaymentClient *client.PaymentClient
VerificationClient *client.VerificationClient
TemplateClient *client.TemplateClient
MailClient *client.MailClient
}
func NewClients(deps ClientsDeps) *Clients {
return &Clients{
AuthClient: client.NewAuthClient(client.AuthClientDeps{
Logger: deps.Logger,
URLs: deps.AuthURL,
}),
HubadminClient: client.NewHubadminClient(client.HubadminClientDeps{
Logger: deps.Logger,
URLs: deps.HubadminURL,
}),
CurrencyClient: client.NewCurrencyClient(client.CurrencyClientDeps{
Logger: deps.Logger,
URLs: deps.CurrencyURL,
}),
DiscountClient: client.NewDiscountClient(client.DiscountClientDeps{
Logger: deps.Logger,
DiscountServiceHost: deps.DiscountServiceConfiguration.HostGRPC,
}),
PaymentClient: client.NewPaymentClient(client.PaymentClientDeps{
Logger: deps.Logger,
PaymentServiceHost: deps.PaymentServiceConfiguration.HostGRPC,
}),
VerificationClient: client.NewVerificationClient(client.VerificationClientDeps{
Logger: deps.Logger,
URLs: deps.VerificationURL,
}),
TemplateClient: client.NewTemplateClient(client.TemplateClientDeps{
Logger: deps.Logger,
URLs: deps.TemplategenURL,
}),
MailClient: client.NewMailClient(client.MailClientDeps{
Logger: deps.Logger,
ApiUrl: deps.MailClient.ApiUrl,
Sender: deps.MailClient.Sender,
Auth: &models.PlainAuth{
Identity: deps.MailClient.Auth.Identity,
Username: deps.MailClient.Auth.Username,
Password: deps.MailClient.Auth.Password,
},
ApiKey: deps.MailClient.ApiKey,
FiberClient: fiber.AcquireClient(),
}),
}
}