라이브룸 V2V 번역 자막 기능을 추가한다
라이브룸에서 진행자 언어와 기기 언어가 다를 때 자막 토글을 제공한다. 룸 정보 응답에 V2V 워커 토큰과 진행자 언어 코드를 포함한다. Agora V2V 에이전트 참여와 종료 API 연동을 추가한다
This commit is contained in:
53
SodaLive/Sources/Live/Room/V2V/V2vApi.swift
Normal file
53
SodaLive/Sources/Live/Room/V2V/V2vApi.swift
Normal file
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// 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"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user