Skip to content

Commit c9b3dbb

Browse files
committed
[UDP] Setup /converse endpoint
1 parent c2b9931 commit c9b3dbb

File tree

1 file changed

+87
-4
lines changed

1 file changed

+87
-4
lines changed

Pod/Classes/RecastAI.swift

Lines changed: 87 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@ RecastAIClient class handling request to the API
1414
*/
1515
public class RecastAIClient
1616
{
17-
static fileprivate let url : String = "https://api.recast.ai/v2/request"
18-
static fileprivate let url_voice : String = "ws://api.recast.ai/v2/request"
17+
static fileprivate let base_url : String = "https://api.recast.ai/v2/"
18+
static fileprivate let base_url_voice : String = "ws://api.recast.ai/v2/"
19+
static fileprivate let textRequest : String = base_url + "request"
20+
static fileprivate let textConverse : String = base_url + "converse"
21+
static fileprivate let voiceRequest : String = base_url_voice + "request"
22+
static fileprivate let voiceConverse : String = base_url_voice + "converse"
23+
1924
fileprivate var token : String
2025
fileprivate let language : String?
2126

@@ -33,6 +38,44 @@ public class RecastAIClient
3338
self.language = language
3439
}
3540

41+
/**
42+
Make a text converse to Recast API
43+
44+
- parameter request: sentence to send to Recast API
45+
- parameter lang: lang of the sentence if needed
46+
- parameter successHandler: closure called when request succeed
47+
- parameter failureHandler: closure called when request failed
48+
49+
- returns: void
50+
*/
51+
public func textConverse(_ request : String, token : String? = nil, lang: String? = nil, successHandler: @escaping (Response) -> Void, failureHandle: @escaping (Error) -> Void)
52+
{
53+
if let tkn = token
54+
{
55+
self.token = token!
56+
}
57+
let headers = ["Authorization" : "Token " + self.token]
58+
var param = ["text" : request]
59+
if let ln = lang
60+
{
61+
param["language"] = ln
62+
}
63+
else if let ln = self.language
64+
{
65+
param["language"] = ln
66+
}
67+
Alamofire.request(RecastAIClient.textConverse, method: .post, parameters: param, headers: headers).responseJSON {
68+
response in
69+
switch response.result {
70+
case .success(let value):
71+
let recastResponse = Response(json: value as! [String : AnyObject])
72+
successHandler(recastResponse)
73+
case .failure(let error):
74+
failureHandle(error)
75+
}
76+
}
77+
}
78+
3679
/**
3780
Make a text request to Recast API
3881

@@ -59,7 +102,7 @@ public class RecastAIClient
59102
{
60103
param["language"] = ln
61104
}
62-
Alamofire.request(RecastAIClient.url, method: .post, parameters: param, headers: headers).responseJSON {
105+
Alamofire.request(RecastAIClient.textRequest, method: .post, parameters: param, headers: headers).responseJSON {
63106
response in
64107
switch response.result {
65108
case .success(let value):
@@ -90,7 +133,7 @@ public class RecastAIClient
90133
Alamofire.upload(multipartFormData: { multipartFormData in
91134
multipartFormData.append(audioFileURL, withName: "voice")
92135
},
93-
to: RecastAIClient.url,
136+
to: RecastAIClient.voiceRequest,
94137
method: .post,
95138
headers: headers,
96139
encodingCompletion: { encodingResult in
@@ -110,5 +153,45 @@ public class RecastAIClient
110153
}
111154
})
112155
}
156+
157+
/**
158+
Make a voice converse to Recast API
159+
160+
- parameter audioFileURL: audio file URL to send to RecastAI
161+
- parameter lang: lang of the sentence if needed
162+
- parameter successHandler: closure called when request succeed
163+
- parameter failureHandler: closure called when request failed
164+
165+
- returns: void
166+
*/
167+
public func fileConverse(_ audioFileURL: URL, token : String? = nil, lang: String? = nil, successHandler: @escaping (Response) -> Void, failureHandle: @escaping (Error) -> Void) {
168+
if let tkn = token
169+
{
170+
self.token = token!
171+
}
172+
let headers = ["Authorization": "Token " + self.token]
173+
Alamofire.upload(multipartFormData: { multipartFormData in
174+
multipartFormData.append(audioFileURL, withName: "voice")
175+
},
176+
to: RecastAIClient.voiceConverse,
177+
method: .post,
178+
headers: headers,
179+
encodingCompletion: { encodingResult in
180+
switch encodingResult {
181+
case .success(let upload, _, _):
182+
upload.responseJSON { response in
183+
switch response.result {
184+
case .success(let value):
185+
let recastResponse = Response(json: value as! [String : AnyObject])
186+
successHandler(recastResponse)
187+
case .failure(let error):
188+
failureHandle(error)
189+
}
190+
}
191+
case .failure(let encodingError):
192+
failureHandle(encodingError)
193+
}
194+
})
195+
}
113196
}
114197

0 commit comments

Comments
 (0)