94 lines
3.0 KiB
Go
94 lines
3.0 KiB
Go
package serverimp
|
|
|
|
import (
|
|
oracleclient "github.com/tech/sendico/fx/oracle/client"
|
|
chainclient "github.com/tech/sendico/gateway/chain/client"
|
|
mntxclient "github.com/tech/sendico/gateway/mntx/client"
|
|
ledgerclient "github.com/tech/sendico/ledger/client"
|
|
"github.com/tech/sendico/payments/orchestrator/internal/service/orchestrator"
|
|
feesv1 "github.com/tech/sendico/pkg/proto/billing/fees/v1"
|
|
)
|
|
|
|
type orchestratorDeps struct {
|
|
feesClient feesv1.FeeEngineClient
|
|
ledgerClient ledgerclient.Client
|
|
gatewayClient chainclient.Client
|
|
paymentGatewayClient chainclient.Client
|
|
mntxClient mntxclient.Client
|
|
oracleClient oracleclient.Client
|
|
}
|
|
|
|
func (i *Imp) initDependencies(cfg *config) *orchestratorDeps {
|
|
deps := &orchestratorDeps{}
|
|
if cfg == nil {
|
|
return deps
|
|
}
|
|
|
|
deps.feesClient, i.feesConn = i.initFeesClient(cfg.Fees)
|
|
|
|
deps.ledgerClient = i.initLedgerClient(cfg.Ledger)
|
|
if deps.ledgerClient != nil {
|
|
i.ledgerClient = deps.ledgerClient
|
|
}
|
|
|
|
deps.gatewayClient = i.initGatewayClient(cfg.Gateway)
|
|
if deps.gatewayClient != nil {
|
|
i.gatewayClient = deps.gatewayClient
|
|
}
|
|
|
|
deps.paymentGatewayClient = i.initPaymentGatewayClient(cfg.PaymentGateway)
|
|
if deps.paymentGatewayClient != nil {
|
|
i.paymentGatewayClient = deps.paymentGatewayClient
|
|
}
|
|
|
|
deps.mntxClient = i.initMntxClient(cfg.Mntx)
|
|
if deps.mntxClient != nil {
|
|
i.mntxClient = deps.mntxClient
|
|
}
|
|
|
|
deps.oracleClient = i.initOracleClient(cfg.Oracle)
|
|
if deps.oracleClient != nil {
|
|
i.oracleClient = deps.oracleClient
|
|
}
|
|
|
|
return deps
|
|
}
|
|
|
|
func (i *Imp) buildServiceOptions(cfg *config, deps *orchestratorDeps) []orchestrator.Option {
|
|
if cfg == nil || deps == nil {
|
|
return nil
|
|
}
|
|
opts := []orchestrator.Option{}
|
|
if deps.feesClient != nil {
|
|
opts = append(opts, orchestrator.WithFeeEngine(deps.feesClient, cfg.Fees.callTimeout()))
|
|
}
|
|
if deps.ledgerClient != nil {
|
|
opts = append(opts, orchestrator.WithLedgerClient(deps.ledgerClient))
|
|
}
|
|
if deps.gatewayClient != nil {
|
|
opts = append(opts, orchestrator.WithChainGatewayClient(deps.gatewayClient))
|
|
}
|
|
if deps.paymentGatewayClient != nil {
|
|
opts = append(opts, orchestrator.WithProviderSettlementGatewayClient(deps.paymentGatewayClient))
|
|
}
|
|
if railGateways := buildRailGateways(deps.gatewayClient, deps.paymentGatewayClient, cfg.GatewayInstances); len(railGateways) > 0 {
|
|
opts = append(opts, orchestrator.WithRailGateways(railGateways))
|
|
}
|
|
if deps.mntxClient != nil {
|
|
opts = append(opts, orchestrator.WithMntxGateway(deps.mntxClient))
|
|
}
|
|
if deps.oracleClient != nil {
|
|
opts = append(opts, orchestrator.WithOracleClient(deps.oracleClient))
|
|
}
|
|
if routes := buildCardGatewayRoutes(cfg.CardGateways); len(routes) > 0 {
|
|
opts = append(opts, orchestrator.WithCardGatewayRoutes(routes))
|
|
}
|
|
if feeAccounts := buildFeeLedgerAccounts(cfg.FeeAccounts); len(feeAccounts) > 0 {
|
|
opts = append(opts, orchestrator.WithFeeLedgerAccounts(feeAccounts))
|
|
}
|
|
if registry := buildGatewayRegistry(i.logger, cfg.GatewayInstances, i.discoveryReg); registry != nil {
|
|
opts = append(opts, orchestrator.WithGatewayRegistry(registry))
|
|
}
|
|
return opts
|
|
}
|