라이브룸에서 진행자 언어와 기기 언어가 다를 때 자막 토글을 제공한다. 룸 정보 응답에 V2V 워커 토큰과 진행자 언어 코드를 포함한다. Agora V2V 에이전트 참여와 종료 API 연동을 추가한다
54 lines
1.2 KiB
Swift
54 lines
1.2 KiB
Swift
//
|
|
// 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"
|
|
]
|
|
}
|
|
}
|