Files
sub2api/backend/internal/handler/wire.go
T

201 lines
7.3 KiB
Go
Raw Normal View History

2025-12-19 00:01:43 +08:00
package handler
import (
2025-12-24 21:07:21 +08:00
"github.com/Wei-Shaw/sub2api/internal/handler/admin"
"github.com/Wei-Shaw/sub2api/internal/service"
2025-12-19 00:01:43 +08:00
"github.com/google/wire"
)
// ProvideAdminHandlers creates the AdminHandlers struct
func ProvideAdminHandlers(
dashboardHandler *admin.DashboardHandler,
userHandler *admin.UserHandler,
groupHandler *admin.GroupHandler,
accountHandler *admin.AccountHandler,
announcementHandler *admin.AnnouncementHandler,
2026-02-28 15:01:20 +08:00
dataManagementHandler *admin.DataManagementHandler,
backupHandler *admin.BackupHandler,
2025-12-19 00:01:43 +08:00
oauthHandler *admin.OAuthHandler,
2025-12-22 22:58:31 +08:00
openaiOAuthHandler *admin.OpenAIOAuthHandler,
geminiOAuthHandler *admin.GeminiOAuthHandler,
antigravityOAuthHandler *admin.AntigravityOAuthHandler,
2026-06-16 18:38:07 +08:00
grokOAuthHandler *admin.GrokOAuthHandler,
2025-12-19 00:01:43 +08:00
proxyHandler *admin.ProxyHandler,
redeemHandler *admin.RedeemHandler,
2026-01-10 13:14:35 +08:00
promoHandler *admin.PromoHandler,
2025-12-19 00:01:43 +08:00
settingHandler *admin.SettingHandler,
opsHandler *admin.OpsHandler,
2025-12-19 00:01:43 +08:00
systemHandler *admin.SystemHandler,
subscriptionHandler *admin.SubscriptionHandler,
usageHandler *admin.UsageHandler,
userAttributeHandler *admin.UserAttributeHandler,
2026-02-05 21:52:54 +08:00
errorPassthroughHandler *admin.ErrorPassthroughHandler,
tlsFingerprintProfileHandler *admin.TLSFingerprintProfileHandler,
apiKeyHandler *admin.AdminAPIKeyHandler,
scheduledTestHandler *admin.ScheduledTestHandler,
channelHandler *admin.ChannelHandler,
channelMonitorHandler *admin.ChannelMonitorHandler,
channelMonitorTemplateHandler *admin.ChannelMonitorRequestTemplateHandler,
contentModerationHandler *admin.ContentModerationHandler,
paymentHandler *admin.PaymentHandler,
affiliateHandler *admin.AffiliateHandler,
2026-06-10 14:16:51 +08:00
complianceHandler *admin.ComplianceHandler,
2025-12-19 00:01:43 +08:00
) *AdminHandlers {
return &AdminHandlers{
Dashboard: dashboardHandler,
User: userHandler,
Group: groupHandler,
Account: accountHandler,
Announcement: announcementHandler,
DataManagement: dataManagementHandler,
Backup: backupHandler,
OAuth: oauthHandler,
OpenAIOAuth: openaiOAuthHandler,
GeminiOAuth: geminiOAuthHandler,
AntigravityOAuth: antigravityOAuthHandler,
2026-06-16 18:38:07 +08:00
GrokOAuth: grokOAuthHandler,
Proxy: proxyHandler,
Redeem: redeemHandler,
Promo: promoHandler,
Setting: settingHandler,
Ops: opsHandler,
System: systemHandler,
Subscription: subscriptionHandler,
Usage: usageHandler,
UserAttribute: userAttributeHandler,
ErrorPassthrough: errorPassthroughHandler,
TLSFingerprintProfile: tlsFingerprintProfileHandler,
APIKey: apiKeyHandler,
ScheduledTest: scheduledTestHandler,
Channel: channelHandler,
ChannelMonitor: channelMonitorHandler,
ChannelMonitorTemplate: channelMonitorTemplateHandler,
ContentModeration: contentModerationHandler,
Payment: paymentHandler,
Affiliate: affiliateHandler,
2026-06-10 14:16:51 +08:00
Compliance: complianceHandler,
2025-12-19 00:01:43 +08:00
}
}
2025-12-20 11:56:11 +08:00
// ProvideSystemHandler creates admin.SystemHandler with UpdateService
func ProvideSystemHandler(updateService *service.UpdateService, lockService *service.SystemOperationLockService) *admin.SystemHandler {
return admin.NewSystemHandler(updateService, lockService)
2025-12-19 00:01:43 +08:00
}
// ProvideSettingHandler creates SettingHandler with version from BuildInfo
2026-05-20 11:07:38 +08:00
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, opsService *service.OpsService, paymentConfigService *service.PaymentConfigService, paymentService *service.PaymentService, userAttributeService *service.UserAttributeService, notificationEmailService *service.NotificationEmailService) *admin.SettingHandler {
h := admin.NewSettingHandler(settingService, emailService, turnstileService, opsService, paymentConfigService, paymentService, userAttributeService)
h.SetNotificationEmailService(notificationEmailService)
return h
2025-12-19 00:01:43 +08:00
}
// ProvideHandlers creates the Handlers struct
func ProvideHandlers(
authHandler *AuthHandler,
userHandler *UserHandler,
apiKeyHandler *APIKeyHandler,
usageHandler *UsageHandler,
redeemHandler *RedeemHandler,
subscriptionHandler *SubscriptionHandler,
announcementHandler *AnnouncementHandler,
channelMonitorUserHandler *ChannelMonitorUserHandler,
2025-12-19 00:01:43 +08:00
adminHandlers *AdminHandlers,
gatewayHandler *GatewayHandler,
2025-12-22 22:58:31 +08:00
openaiGatewayHandler *OpenAIGatewayHandler,
2025-12-19 00:01:43 +08:00
settingHandler *SettingHandler,
totpHandler *TotpHandler,
paymentHandler *PaymentHandler,
paymentWebhookHandler *PaymentWebhookHandler,
availableChannelHandler *AvailableChannelHandler,
2026-07-04 05:30:50 +08:00
batchImageHandler *BatchImageHandler,
_ *service.IdempotencyCoordinator,
_ *service.IdempotencyCleanupService,
2025-12-19 00:01:43 +08:00
) *Handlers {
return &Handlers{
Auth: authHandler,
User: userHandler,
APIKey: apiKeyHandler,
Usage: usageHandler,
Redeem: redeemHandler,
Subscription: subscriptionHandler,
Announcement: announcementHandler,
ChannelMonitor: channelMonitorUserHandler,
Admin: adminHandlers,
Gateway: gatewayHandler,
OpenAIGateway: openaiGatewayHandler,
Setting: settingHandler,
Totp: totpHandler,
Payment: paymentHandler,
PaymentWebhook: paymentWebhookHandler,
AvailableChannel: availableChannelHandler,
2026-07-04 05:30:50 +08:00
BatchImage: batchImageHandler,
2025-12-19 00:01:43 +08:00
}
}
// ProviderSet is the Wire provider set for all handlers
var ProviderSet = wire.NewSet(
// Top-level handlers
NewAuthHandler,
NewUserHandler,
2025-12-19 00:01:43 +08:00
NewAPIKeyHandler,
NewUsageHandler,
NewRedeemHandler,
NewSubscriptionHandler,
NewAnnouncementHandler,
NewChannelMonitorUserHandler,
2025-12-19 00:01:43 +08:00
NewGatewayHandler,
2025-12-22 22:58:31 +08:00
NewOpenAIGatewayHandler,
NewTotpHandler,
2025-12-19 00:01:43 +08:00
ProvideSettingHandler,
NewPaymentHandler,
NewPaymentWebhookHandler,
NewAvailableChannelHandler,
2026-07-04 05:30:50 +08:00
NewBatchImageHandler,
2025-12-19 00:01:43 +08:00
// Admin handlers
admin.NewDashboardHandler,
admin.NewUserHandler,
admin.NewGroupHandler,
admin.ProvideAccountHandler,
admin.NewAnnouncementHandler,
2026-02-28 15:01:20 +08:00
admin.NewDataManagementHandler,
admin.NewBackupHandler,
2025-12-19 00:01:43 +08:00
admin.NewOAuthHandler,
2025-12-22 22:58:31 +08:00
admin.NewOpenAIOAuthHandler,
admin.NewGeminiOAuthHandler,
admin.NewAntigravityOAuthHandler,
2026-06-16 18:38:07 +08:00
admin.NewGrokOAuthHandler,
2025-12-19 00:01:43 +08:00
admin.NewProxyHandler,
admin.NewRedeemHandler,
2026-01-10 13:14:35 +08:00
admin.NewPromoHandler,
2026-05-20 11:07:38 +08:00
ProvideAdminSettingHandler,
admin.NewOpsHandler,
2025-12-19 00:01:43 +08:00
ProvideSystemHandler,
admin.NewSubscriptionHandler,
admin.NewUsageHandler,
admin.NewUserAttributeHandler,
2026-02-05 21:52:54 +08:00
admin.NewErrorPassthroughHandler,
admin.NewTLSFingerprintProfileHandler,
admin.NewAdminAPIKeyHandler,
admin.NewScheduledTestHandler,
admin.NewChannelHandler,
admin.NewChannelMonitorHandler,
admin.NewChannelMonitorRequestTemplateHandler,
admin.NewContentModerationHandler,
admin.NewPaymentHandler,
admin.NewAffiliateHandler,
2026-06-10 14:16:51 +08:00
admin.NewComplianceHandler,
2025-12-19 00:01:43 +08:00
// AdminHandlers and Handlers constructors
ProvideAdminHandlers,
ProvideHandlers,
)