customer/internal/initialize/services.go

52 lines
1.7 KiB
Go
Raw Normal View History

2023-05-16 01:12:07 +00:00
package initialize
import (
"github.com/sirupsen/logrus"
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/models"
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/service/amocrm"
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/service/auth"
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/service/encrypt"
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/service/oauth"
"penahub.gitlab.yandexcloud.net/pena-services/pena-social-auth/internal/utils"
)
type ServicesDeps struct {
Logger *logrus.Logger
Config *models.ServiceConfiguration
Repositories *Repositories
Clients *Clients
}
type Services struct {
AmocrmService *amocrm.Service
AmocrmOAuthService *oauth.Service[models.AmocrmUserInformation]
}
func NewServices(deps *ServicesDeps) *Services {
authService := auth.New(&auth.Deps{
Logger: deps.Logger,
AuthClient: deps.Clients.AuthClient,
EncryptionService: encrypt.New(&encrypt.ServiceDeps{
JWT: utils.NewJWT[models.JWTAuthUser](&deps.Config.JWT),
PrivateCurveKey: deps.Config.AuthMicroservice.PrivateSignKey,
SignSecret: deps.Config.AuthMicroservice.AuthGroup,
}),
})
amocrmOAuthService := oauth.New(&oauth.Deps[models.AmocrmUserInformation]{
Logger: deps.Logger,
ServiceClient: deps.Clients.AmocrmClient,
OAuthClient: deps.Clients.AmocrmOAuthClient,
})
return &Services{
AmocrmOAuthService: amocrmOAuthService,
AmocrmService: amocrm.New(&amocrm.Deps{
Logger: deps.Logger,
AuthService: authService,
Repository: deps.Repositories.AmocrmRepository,
OAuthService: amocrmOAuthService,
}),
}
}