// // NetworkServices.swift // suixinkan // import Foundation @MainActor /// 全局网络依赖容器,集中提供 APIClient 与各业务 API。 final class NetworkServices { static let shared = NetworkServices() let apiClient: APIClient let authAPI: AuthAPI let profileAPI: ProfileAPI let statisticsAPI: StatisticsAPI let orderAPI: OrderAPI let homeAPI: HomeAPI let paymentAPI: PaymentAPI let taskAPI: TaskAPI let inviteAPI: InviteAPI let walletAPI: WalletAPI let scenicQueueAPI: ScenicQueueAPI let travelAlbumAPI: TravelAlbumAPI let sampleManagementAPI: SampleManagementAPI let liveAPI: LiveAPI let wildPhotographerReportAPI: WildPhotographerReportAPI let uploadAPI: UploadAPI let ossUploadService: OSSUploadService private init() { let client = APIClient(environment: .current) apiClient = client authAPI = AuthAPI(client: client) profileAPI = ProfileAPI(client: client) statisticsAPI = StatisticsAPI(client: client) orderAPI = OrderAPI(client: client) homeAPI = HomeAPI(client: client) paymentAPI = PaymentAPI(client: client) taskAPI = TaskAPI(client: client) inviteAPI = InviteAPI(client: client) walletAPI = WalletAPI(client: client) scenicQueueAPI = ScenicQueueAPI(client: client) travelAlbumAPI = TravelAlbumAPI(client: client) sampleManagementAPI = SampleManagementAPI(client: client) liveAPI = LiveAPI(client: client) wildPhotographerReportAPI = WildPhotographerReportAPI(client: client) uploadAPI = UploadAPI(client: client) ossUploadService = OSSUploadService(configService: uploadAPI) client.bindAuthTokenProvider { let token = AppStore.shared.token.trimmingCharacters(in: .whitespacesAndNewlines) return token.isEmpty ? nil : token } } /// 测试专用初始化,允许注入 mock `APIClient`。 init(apiClient: APIClient) { self.apiClient = apiClient authAPI = AuthAPI(client: apiClient) profileAPI = ProfileAPI(client: apiClient) statisticsAPI = StatisticsAPI(client: apiClient) orderAPI = OrderAPI(client: apiClient) homeAPI = HomeAPI(client: apiClient) paymentAPI = PaymentAPI(client: apiClient) taskAPI = TaskAPI(client: apiClient) inviteAPI = InviteAPI(client: apiClient) walletAPI = WalletAPI(client: apiClient) scenicQueueAPI = ScenicQueueAPI(client: apiClient) travelAlbumAPI = TravelAlbumAPI(client: apiClient) sampleManagementAPI = SampleManagementAPI(client: apiClient) liveAPI = LiveAPI(client: apiClient) wildPhotographerReportAPI = WildPhotographerReportAPI(client: apiClient) uploadAPI = UploadAPI(client: apiClient) ossUploadService = OSSUploadService(configService: uploadAPI) } }