// // V2vApi.swift // SodaLive // // Created by klaus on 2/9/26. // import Foundation import Moya enum V2vApi { case join(request: V2VJoinRequest) case leave(agentId: String) } extension V2vApi: TargetType { var baseURL: URL { URL(string: "https://api.agora.io/api/speech-to-speech-translation/v2/")! } var path: String { switch self { case .join: return "projects/\(AGORA_APP_ID)/join" case .leave(let agentId): return "projects/\(AGORA_APP_ID)/agents/\(agentId)/leave" } } var method: Moya.Method { .post } var task: Task { switch self { case .join(let request): return .requestJSONEncodable(request) case .leave: return .requestPlain } } var headers: [String: String]? { let credential = "\(AGORA_CUSTOMER_ID):\(AGORA_CUSTOMER_SECRET)" let basicToken = Data(credential.utf8).base64EncodedString() return [ "Authorization": "Basic \(basicToken)", "X-Request-Id": UUID().uuidString, "Content-Type": "application/json" ] } }