@@ -14,8 +14,13 @@ RecastAIClient class handling request to the API
14
14
*/
15
15
public class RecastAIClient
16
16
{
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
+
19
24
fileprivate var token : String
20
25
fileprivate let language : String ?
21
26
@@ -33,6 +38,44 @@ public class RecastAIClient
33
38
self . language = language
34
39
}
35
40
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
+
36
79
/**
37
80
Make a text request to Recast API
38
81
@@ -59,7 +102,7 @@ public class RecastAIClient
59
102
{
60
103
param [ " language " ] = ln
61
104
}
62
- Alamofire . request ( RecastAIClient . url , method: . post, parameters: param, headers: headers) . responseJSON {
105
+ Alamofire . request ( RecastAIClient . textRequest , method: . post, parameters: param, headers: headers) . responseJSON {
63
106
response in
64
107
switch response. result {
65
108
case . success( let value) :
@@ -90,7 +133,7 @@ public class RecastAIClient
90
133
Alamofire . upload ( multipartFormData: { multipartFormData in
91
134
multipartFormData. append ( audioFileURL, withName: " voice " )
92
135
} ,
93
- to: RecastAIClient . url ,
136
+ to: RecastAIClient . voiceRequest ,
94
137
method: . post,
95
138
headers: headers,
96
139
encodingCompletion: { encodingResult in
@@ -110,5 +153,45 @@ public class RecastAIClient
110
153
}
111
154
} )
112
155
}
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
+ }
113
196
}
114
197
0 commit comments