133 lines · 4.0 KB · Swift
RawDownload
import Foundation public enum AlibabaCodingPlanAPIRegion: String, CaseIterable, Sendable {    case international = "intl"    case chinaMainland = "cn"     private static let endpointPath = "data/api.json"     public var displayName: String {        switch self {        case .international:            "International (modelstudio.console.alibabacloud.com)"        case .chinaMainland:            "China mainland (bailian.console.aliyun.com)"        }    }     public var gatewayBaseURLString: String {        switch self {        case .international:            "https://modelstudio.console.alibabacloud.com"        case .chinaMainland:            "https://bailian.console.aliyun.com"        }    }     public var dashboardURL: URL {        switch self {        case .international:            URL(                string: "https://modelstudio.console.alibabacloud.com/ap-southeast-1/?tab=coding-plan#/efm/coding_plan")!        case .chinaMainland:            URL(string: "https://bailian.console.aliyun.com/cn-beijing/?tab=model#/efm/coding_plan")!        }    }     public var consoleDomain: String {        switch self {        case .international:            "modelstudio.console.alibabacloud.com"        case .chinaMainland:            "bailian.console.aliyun.com"        }    }     public var consoleSite: String {        switch self {        case .international:            "MODELSTUDIO_ALIBABACLOUD"        case .chinaMainland:            "BAILIAN_ALIYUN"        }    }     public var consoleRefererURL: URL {        switch self {        case .international:            URL(string: "https://modelstudio.console.alibabacloud.com/ap-southeast-1/?tab=coding-plan")!        case .chinaMainland:            URL(string: "https://bailian.console.aliyun.com/cn-beijing/?tab=model")!        }    }     public var quotaURL: URL {        var components = URLComponents(string: self.gatewayBaseURLString)!        components.path = "/" + Self.endpointPath        components.queryItems = [            URLQueryItem(                name: "action",                value: "zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2"),            URLQueryItem(name: "product", value: "broadscope-bailian"),            URLQueryItem(name: "api", value: "queryCodingPlanInstanceInfoV2"),            URLQueryItem(name: "currentRegionId", value: self.currentRegionID),        ]        return components.url!    }     public var consoleRPCBaseURLString: String {        switch self {        case .international:            "https://bailian-singapore-cs.alibabacloud.com"        case .chinaMainland:            "https://bailian-cs.console.aliyun.com"        }    }     public var consoleRPCURL: URL {        var components = URLComponents(string: self.consoleRPCBaseURLString)!        components.path = "/" + Self.endpointPath        components.queryItems = [            URLQueryItem(name: "action", value: self.consoleRPCAction),            URLQueryItem(name: "product", value: self.consoleRPCProduct),            URLQueryItem(name: "api", value: self.consoleQuotaAPIName),            URLQueryItem(name: "_v", value: "undefined"),        ]        return components.url!    }     public var consoleRPCAction: String {        switch self {        case .international:            "IntlBroadScopeAspnGateway"        case .chinaMainland:            "BroadScopeAspnGateway"        }    }     public var consoleRPCProduct: String {        "sfm_bailian"    }     public var consoleQuotaAPIName: String {        "zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2"    }     public var commodityCode: String {        switch self {        case .international:            "sfm_codingplan_public_intl"        case .chinaMainland:            "sfm_codingplan_public_cn"        }    }     public var currentRegionID: String {        switch self {        case .international:            "ap-southeast-1"        case .chinaMainland:            "cn-beijing"        }    }}