Files
steipete--codexbar/Sources/CodexBarCore/Providers/MiniMax/MiniMaxAPIRegion.swift
T
2026-07-13 12:22:33 +08:00

83 lines
2.6 KiB
Swift

import Foundation
public enum MiniMaxAPIRegion: String, CaseIterable, Sendable {
case global
case chinaMainland = "cn"
private static let codingPlanPath = "user-center/payment/coding-plan"
private static let codingPlanQuery = "cycle_type=3"
private static let remainsPath = "v1/api/openplatform/coding_plan/remains"
private static let tokenPlanRemainsPath = "v1/token_plan/remains"
private static let billingHistoryPath = "account/amount"
public var displayName: String {
switch self {
case .global:
"Global (platform.minimax.io)"
case .chinaMainland:
"China mainland (platform.minimaxi.com)"
}
}
public var baseURLString: String {
switch self {
case .global:
"https://platform.minimax.io"
case .chinaMainland:
"https://platform.minimaxi.com"
}
}
public var apiBaseURLString: String {
switch self {
case .global:
"https://api.minimax.io"
case .chinaMainland:
"https://api.minimaxi.com"
}
}
public var codingPlanURL: URL {
var components = URLComponents(string: self.baseURLString)!
components.path = "/" + Self.codingPlanPath
components.query = Self.codingPlanQuery
return components.url!
}
public var codingPlanRefererURL: URL {
var components = URLComponents(string: self.baseURLString)!
components.path = "/" + Self.codingPlanPath
return components.url!
}
public var remainsURL: URL {
URL(string: self.baseURLString)!.appendingPathComponent(Self.remainsPath)
}
public var apiRemainsURL: URL {
URL(string: self.apiBaseURLString)!.appendingPathComponent(Self.remainsPath)
}
public var tokenPlanRemainsURL: URL {
URL(string: self.apiBaseURLString)!.appendingPathComponent(Self.tokenPlanRemainsPath)
}
public var dashboardURL: URL {
var components = URLComponents(string: self.baseURLString)!
components.path = "/" + Self.codingPlanPath
components.query = Self.codingPlanQuery
return components.url!
}
public func billingHistoryURL(page: Int, limit: Int) -> URL {
var components = URLComponents(string: self.baseURLString)!
components.path = "/" + Self.billingHistoryPath
components.queryItems = [
URLQueryItem(name: "page", value: "\(page)"),
URLQueryItem(name: "limit", value: "\(limit)"),
URLQueryItem(name: "aggregate", value: "false"),
]
return components.url!
}
}