| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- package handler
- import (
- "github.com/Wei-Shaw/sub2api/internal/config"
- "github.com/Wei-Shaw/sub2api/internal/handler/admin"
- "github.com/Wei-Shaw/sub2api/internal/securityaudit"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/google/wire"
- )
- // ProvideAdminHandlers creates the AdminHandlers struct
- func ProvideAdminHandlers(
- dashboardHandler *admin.DashboardHandler,
- userHandler *admin.UserHandler,
- userCleanupHandler *admin.UserCleanupHandler,
- intelligentTestHandler *admin.IntelligentTestHandler,
- groupHandler *admin.GroupHandler,
- accountHandler *admin.AccountHandler,
- accountTrafficHandler *admin.AccountTrafficHandler,
- announcementHandler *admin.AnnouncementHandler,
- dataManagementHandler *admin.DataManagementHandler,
- backupHandler *admin.BackupHandler,
- oauthHandler *admin.OAuthHandler,
- openaiOAuthHandler *admin.OpenAIOAuthHandler,
- geminiOAuthHandler *admin.GeminiOAuthHandler,
- antigravityOAuthHandler *admin.AntigravityOAuthHandler,
- grokOAuthHandler *admin.GrokOAuthHandler,
- cnProviderHandler *admin.CNProviderHandler,
- proxyHandler *admin.ProxyHandler,
- redeemHandler *admin.RedeemHandler,
- promoHandler *admin.PromoHandler,
- settingHandler *admin.SettingHandler,
- opsHandler *admin.OpsHandler,
- systemHandler *admin.SystemHandler,
- subscriptionHandler *admin.SubscriptionHandler,
- usageHandler *admin.UsageHandler,
- userAttributeHandler *admin.UserAttributeHandler,
- errorPassthroughHandler *admin.ErrorPassthroughHandler,
- tlsFingerprintProfileHandler *admin.TLSFingerprintProfileHandler,
- pluginHandler *admin.PluginHandler,
- apiKeyHandler *admin.AdminAPIKeyHandler,
- scheduledTestHandler *admin.ScheduledTestHandler,
- channelHandler *admin.ChannelHandler,
- channelMonitorHandler *admin.ChannelMonitorHandler,
- channelMonitorTemplateHandler *admin.ChannelMonitorRequestTemplateHandler,
- contentModerationHandler *admin.ContentModerationHandler,
- securityPolicyHandler *admin.SecurityPolicyHandler,
- globalPricingHandler *admin.GlobalPricingHandler,
- accountHealthHandler *admin.AccountHealthHandler,
- marginHandler *admin.MarginHandler,
- tieredRoutingHandler *admin.TieredRoutingHandler,
- spendGuardHandler *admin.SpendGuardHandler,
- ticketHandler *admin.TicketHandler,
- billingExportHandler *admin.BillingExportHandler,
- antiDegradeHandler *admin.AntiDegradeHandler,
- promptAuditHandler *securityaudit.PromptAdminHandler,
- paymentHandler *admin.PaymentHandler,
- affiliateHandler *admin.AffiliateHandler,
- complianceHandler *admin.ComplianceHandler,
- auditLogHandler *admin.AuditLogHandler,
- upstreamBillingProbe *service.UpstreamBillingProbeService,
- ollamaCloudUsage *service.OllamaCloudUsageService,
- ) *AdminHandlers {
- accountHandler.SetUpstreamBillingProbeService(upstreamBillingProbe)
- accountHandler.SetOllamaCloudUsageService(ollamaCloudUsage)
- accountHandler.SetAccountTrafficHandler(accountTrafficHandler)
- return &AdminHandlers{
- Dashboard: dashboardHandler,
- User: userHandler,
- UserCleanup: userCleanupHandler,
- IntelligentTest: intelligentTestHandler,
- Group: groupHandler,
- Account: accountHandler,
- AccountTraffic: accountTrafficHandler,
- Announcement: announcementHandler,
- DataManagement: dataManagementHandler,
- Backup: backupHandler,
- OAuth: oauthHandler,
- OpenAIOAuth: openaiOAuthHandler,
- GeminiOAuth: geminiOAuthHandler,
- AntigravityOAuth: antigravityOAuthHandler,
- GrokOAuth: grokOAuthHandler,
- CNProvider: cnProviderHandler,
- Proxy: proxyHandler,
- Redeem: redeemHandler,
- Promo: promoHandler,
- Setting: settingHandler,
- Ops: opsHandler,
- System: systemHandler,
- Subscription: subscriptionHandler,
- Usage: usageHandler,
- UserAttribute: userAttributeHandler,
- ErrorPassthrough: errorPassthroughHandler,
- TLSFingerprintProfile: tlsFingerprintProfileHandler,
- Plugin: pluginHandler,
- APIKey: apiKeyHandler,
- ScheduledTest: scheduledTestHandler,
- Channel: channelHandler,
- ChannelMonitor: channelMonitorHandler,
- ChannelMonitorTemplate: channelMonitorTemplateHandler,
- ContentModeration: contentModerationHandler,
- SecurityPolicy: securityPolicyHandler,
- GlobalPricing: globalPricingHandler,
- AccountHealth: accountHealthHandler,
- Margin: marginHandler,
- TieredRouting: tieredRoutingHandler,
- SpendGuard: spendGuardHandler,
- Ticket: ticketHandler,
- BillingExport: billingExportHandler,
- AntiDegrade: antiDegradeHandler,
- PromptAudit: promptAuditHandler,
- Payment: paymentHandler,
- Affiliate: affiliateHandler,
- Compliance: complianceHandler,
- AuditLog: auditLogHandler,
- }
- }
- func ProvideGatewayHandler(
- gatewayService *service.GatewayService,
- openAIGatewayService *service.OpenAIGatewayService,
- geminiCompatService *service.GeminiMessagesCompatService,
- antigravityGatewayService *service.AntigravityGatewayService,
- userService *service.UserService,
- concurrencyService *service.ConcurrencyService,
- billingCacheService *service.BillingCacheService,
- usageService *service.UsageService,
- apiKeyService *service.APIKeyService,
- usageRecordWorkerPool *service.UsageRecordWorkerPool,
- errorPassthroughService *service.ErrorPassthroughService,
- contentModerationService *service.ContentModerationService,
- userMsgQueueService *service.UserMessageQueueService,
- cfg *config.Config,
- settingService *service.SettingService,
- coordinator *securityaudit.Coordinator,
- securityPolicyService *service.SecurityPolicyService,
- ) *GatewayHandler {
- h := NewGatewayHandler(gatewayService, openAIGatewayService, geminiCompatService, antigravityGatewayService,
- userService, concurrencyService, billingCacheService, usageService, apiKeyService, usageRecordWorkerPool,
- errorPassthroughService, contentModerationService, userMsgQueueService, cfg, settingService)
- h.securityAuditCoordinator = coordinator
- h.securityPolicyService = securityPolicyService
- return h
- }
- func ProvideOpenAIGatewayHandler(
- gatewayService *service.OpenAIGatewayService,
- pluginManager *service.PluginManager,
- concurrencyService *service.ConcurrencyService,
- billingCacheService *service.BillingCacheService,
- apiKeyService *service.APIKeyService,
- usageRecordWorkerPool *service.UsageRecordWorkerPool,
- errorPassthroughService *service.ErrorPassthroughService,
- contentModerationService *service.ContentModerationService,
- opsService *service.OpsService,
- grokQuotaService *service.GrokQuotaService,
- cfg *config.Config,
- coordinator *securityaudit.Coordinator,
- securityPolicyService *service.SecurityPolicyService,
- ) *OpenAIGatewayHandler {
- gatewayService.SetPluginManager(pluginManager)
- h := NewOpenAIGatewayHandler(gatewayService, concurrencyService, billingCacheService, apiKeyService,
- usageRecordWorkerPool, errorPassthroughService, contentModerationService, opsService, cfg)
- h.securityAuditCoordinator = coordinator
- h.securityPolicyService = securityPolicyService
- h.grokMediaEligibilityProber = grokQuotaService
- return h
- }
- func ProvideBatchImageHandler(
- batchService *service.BatchImagePublicService,
- download *service.BatchImageDownloadService,
- cleanup *service.BatchImageCleanupService,
- openAI *OpenAIGatewayHandler,
- ) *BatchImageHandler {
- h := NewBatchImageHandler(batchService, download, cleanup)
- h.openAI = openAI
- return h
- }
- // ProvideSystemHandler creates admin.SystemHandler with UpdateService
- func ProvideSystemHandler(updateService *service.UpdateService, lockService *service.SystemOperationLockService) *admin.SystemHandler {
- return admin.NewSystemHandler(updateService, lockService)
- }
- // ProvideSettingHandler creates SettingHandler with version from BuildInfo
- func ProvideSettingHandler(settingService *service.SettingService, buildInfo BuildInfo, notificationEmailService *service.NotificationEmailService) *SettingHandler {
- h := NewSettingHandler(settingService, buildInfo.Version)
- h.SetNotificationEmailService(notificationEmailService)
- return h
- }
- // ProvideAdminSettingHandler creates admin.SettingHandler with notification template APIs.
- func ProvideAdminSettingHandler(settingService *service.SettingService, emailService *service.EmailService, turnstileService *service.TurnstileService, aliyunCaptchaService *service.AliyunCaptchaService, opsService *service.OpsService, paymentConfigService *service.PaymentConfigService, paymentService *service.PaymentService, userAttributeService *service.UserAttributeService, notificationEmailService *service.NotificationEmailService, totpService *service.TotpService, userService *service.UserService) *admin.SettingHandler {
- h := admin.NewSettingHandler(settingService, emailService, turnstileService, opsService, paymentConfigService, paymentService, userAttributeService)
- h.SetNotificationEmailService(notificationEmailService)
- h.SetAliyunCaptchaService(aliyunCaptchaService)
- h.SetStepUpDeps(totpService, userService)
- return h
- }
- // ProvideHandlers creates the Handlers struct
- func ProvideHandlers(
- authHandler *AuthHandler,
- userHandler *UserHandler,
- apiKeyHandler *APIKeyHandler,
- usageHandler *UsageHandler,
- redeemHandler *RedeemHandler,
- subscriptionHandler *SubscriptionHandler,
- announcementHandler *AnnouncementHandler,
- channelMonitorUserHandler *ChannelMonitorUserHandler,
- channelMonitorV2Handler *ChannelMonitorV2Handler,
- adminHandlers *AdminHandlers,
- gatewayHandler *GatewayHandler,
- openaiGatewayHandler *OpenAIGatewayHandler,
- settingHandler *SettingHandler,
- totpHandler *TotpHandler,
- passkeyHandler *PasskeyHandler,
- paymentHandler *PaymentHandler,
- paymentWebhookHandler *PaymentWebhookHandler,
- availableChannelHandler *AvailableChannelHandler,
- modelPlazaHandler *ModelPlazaHandler,
- asyncImageHandler *AsyncImageHandler,
- batchImageHandler *BatchImageHandler,
- accountCapabilityHandler *AccountCapabilityHandler,
- _ *service.IdempotencyCoordinator,
- _ *service.IdempotencyCleanupService,
- _ *service.OpenAIQuotaAutoResetService,
- ) *Handlers {
- return &Handlers{
- Auth: authHandler,
- User: userHandler,
- APIKey: apiKeyHandler,
- Usage: usageHandler,
- Redeem: redeemHandler,
- Subscription: subscriptionHandler,
- Announcement: announcementHandler,
- ChannelMonitor: channelMonitorUserHandler,
- ChannelMonitorV2: channelMonitorV2Handler,
- Admin: adminHandlers,
- Gateway: gatewayHandler,
- OpenAIGateway: openaiGatewayHandler,
- Setting: settingHandler,
- Totp: totpHandler,
- Passkey: passkeyHandler,
- Payment: paymentHandler,
- PaymentWebhook: paymentWebhookHandler,
- AvailableChannel: availableChannelHandler,
- ModelPlaza: modelPlazaHandler,
- AsyncImage: asyncImageHandler,
- BatchImage: batchImageHandler,
- AccountCapability: accountCapabilityHandler,
- }
- }
- // ProviderSet is the Wire provider set for all handlers
- var ProviderSet = wire.NewSet(
- admin.NewUserCleanupHandler,
- admin.NewIntelligentTestHandler,
- NewAccountCapabilityHandler,
- // Top-level handlers
- NewAuthHandler,
- NewUserHandler,
- NewAPIKeyHandler,
- NewUsageHandler,
- NewRedeemHandler,
- NewSubscriptionHandler,
- NewAnnouncementHandler,
- NewChannelMonitorUserHandler,
- NewChannelMonitorV2Handler,
- ProvideGatewayHandler,
- ProvideOpenAIGatewayHandler,
- NewTotpHandler,
- NewPasskeyHandler,
- ProvideSettingHandler,
- NewPaymentHandler,
- NewPaymentWebhookHandler,
- NewAvailableChannelHandler,
- NewModelPlazaHandler,
- NewAsyncImageHandler,
- ProvideBatchImageHandler,
- // Admin handlers
- admin.NewDashboardHandler,
- admin.NewUserHandler,
- admin.NewGroupHandlerWithConfig,
- admin.ProvideAccountHandler,
- admin.NewAccountTrafficHandler,
- admin.NewAnnouncementHandler,
- admin.NewDataManagementHandler,
- admin.NewBackupHandler,
- admin.NewOAuthHandler,
- admin.NewOpenAIOAuthHandler,
- admin.NewGeminiOAuthHandler,
- admin.NewAntigravityOAuthHandler,
- admin.NewGrokOAuthHandler,
- admin.NewCNProviderHandler,
- admin.NewProxyHandler,
- admin.NewRedeemHandler,
- admin.NewPromoHandler,
- ProvideAdminSettingHandler,
- admin.NewOpsHandler,
- ProvideSystemHandler,
- admin.NewSubscriptionHandler,
- admin.NewUsageHandler,
- admin.NewUserAttributeHandler,
- admin.NewErrorPassthroughHandler,
- admin.NewTLSFingerprintProfileHandler,
- admin.NewPluginHandler,
- admin.NewAdminAPIKeyHandler,
- admin.NewScheduledTestHandler,
- admin.NewChannelHandler,
- admin.NewChannelMonitorHandler,
- admin.NewChannelMonitorRequestTemplateHandler,
- admin.NewContentModerationHandler,
- admin.NewSecurityPolicyHandler,
- admin.NewGlobalPricingHandler,
- admin.NewAccountHealthHandler,
- admin.NewMarginHandler,
- admin.NewTieredRoutingHandler,
- admin.NewSpendGuardHandler,
- admin.NewTicketHandler,
- admin.NewBillingExportHandler,
- admin.NewAntiDegradeHandler,
- admin.NewPaymentHandler,
- admin.NewAffiliateHandler,
- admin.NewComplianceHandler,
- admin.NewAuditLogHandler,
- // AdminHandlers and Handlers constructors
- ProvideAdminHandlers,
- ProvideHandlers,
- )
|