import Foundation // MARK: - API Endpoints /// API 端点枚举 /// /// 定义了应用中所有可用的 API 端点路径。 /// 使用枚举确保端点路径的类型安全和统一管理。 /// /// 添加新端点时,只需在此枚举中添加新的 case 即可。 /// /// 使用示例: /// ```swift /// let configPath = APIEndpoint.config.path // "/client/config" /// ``` enum APIEndpoint: String, CaseIterable { case config = "/client/config" case configInit = "/client/init" case login = "/auth/login" // 可以继续添加其他端点 var path: String { return self.rawValue } } // MARK: - API Configuration /// API 配置结构体 /// /// 集中管理 API 相关的配置参数,包括: /// - 服务器地址配置 /// - 请求超时设置 /// - 数据大小限制 /// - 默认请求头设置 /// /// 配置特点: /// - 支持不同环境的服务器地址 /// - 防止资源超限的保护机制 /// - 自动添加认证和设备信息头部 struct APIConfiguration { static let baseURL = "http://beta.api.molistar.xyz" static let timeout: TimeInterval = 30.0 static let maxDataSize: Int = 50 * 1024 * 1024 // 50MB 限制,防止资源超限 /// 默认请求头配置 /// /// 返回所有 API 请求都需要的基础请求头,包括: /// - Content-Type 和 Accept 头部 /// - 压缩支持配置 /// - 语言和版本信息 /// - 用户认证信息(如果已登录) /// /// 这些头部会自动添加到每个请求中,确保服务器能够正确处理请求 static var defaultHeaders: [String: String] { var headers = [ "Content-Type": "application/json", "Accept": "application/json", "Accept-Encoding": "gzip, br", "Accept-Language": Locale.current.languageCode ?? "en", "App-Version": Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0.0" ] // 添加用户认证相关 headers(如果存在) if let userId = UserInfoManager.getCurrentUserId() { headers["pub_uid"] = userId } if let userTicket = UserInfoManager.getCurrentUserTicket() { headers["pub_ticket"] = userTicket } return headers } } // MARK: - Request Models struct LoginRequest: Codable { let username: String let password: String } // MARK: - Empty Request struct EmptyRequest: Codable {}