@@ -23,6 +23,18 @@ public enum OAuth1Error: Error {
23
23
extension OAuth1Error : CustomStringConvertible {
24
24
public var description : String {
25
25
switch self {
26
+ case . couldNotGenerateSignature:
27
+ return " couldNotGenerateSignature "
28
+
29
+ case . invalidAuthrozeURL( let url) :
30
+ return " invalidAuthrozeURL: \( url) "
31
+
32
+ case . missingRequiredParameters( let param) :
33
+ return " missingRequiredParameter: \( param) "
34
+
35
+ case . accessTokenIsMissingInSession:
36
+ return " accessTokenIsMissingInSession "
37
+
26
38
case . verifyFailed( let req, let res) :
27
39
return stringify ( code: " verifyFailed " , request: req, response: res)
28
40
@@ -31,9 +43,6 @@ extension OAuth1Error: CustomStringConvertible {
31
43
32
44
case . failedToGetRequestToken( let req, let res) :
33
45
return stringify ( code: " failedToGetRequestToken " , request: req, response: res)
34
-
35
- default :
36
- return " \( self ) "
37
46
}
38
47
}
39
48
@@ -123,22 +132,23 @@ public class OAuth1 {
123
132
124
133
params [ " oauth_signature " ] = sig
125
134
126
- var urlRequest = URLRequest ( url: URL ( string: requestTokenUrl) !)
127
- urlRequest. httpMethod = " POST "
128
-
129
- urlRequest. addValue ( OAuth1 . oAuthAuthorizationString ( fromParameters: params, withAllowedCharacters: withAllowedCharacters) , forHTTPHeaderField: " Authorization " )
130
-
131
- let ( response, data) = try URLSession . shared. resumeSync ( with: urlRequest)
135
+ let authorizationValue = OAuth1 . oAuthAuthorizationString ( fromParameters: params, withAllowedCharacters: withAllowedCharacters)
132
136
133
- let bodyDictionary = OAuth1 . parse ( bodyData: data)
137
+ let request = Request (
138
+ method: . post,
139
+ url: URL ( string: requestTokenUrl) !,
140
+ headers: [ " Authorization " : authorizationValue]
141
+ )
142
+ let client = try HTTPClient ( url: request. url)
143
+ try client. open ( )
144
+ let response = try client. request ( request)
134
145
135
146
guard ( 200 ..< 300 ) . contains ( response. statusCode) else {
136
- throw OAuth1Error . failedToGetRequestToken (
137
- urlRequest. transform ( ) ,
138
- response. transform ( withBodyData: data)
139
- )
147
+ throw OAuth1Error . failedToGetRequestToken ( request, response)
140
148
}
141
149
150
+ let bodyDictionary = OAuth1 . parse ( bodyData: response. body. asData ( ) )
151
+
142
152
guard let oauthToken = bodyDictionary [ " oauth_token " ] else {
143
153
throw OAuth1Error . missingRequiredParameters ( " oauth_token " )
144
154
}
@@ -189,21 +199,23 @@ public class OAuth1 {
189
199
190
200
params [ " oauth_signature " ] = sig
191
201
192
- var urlRequest = URLRequest ( url: URL ( string: verifyURL) !)
193
- urlRequest. httpMethod = " GET "
202
+ let authrozationString = OAuth1 . oAuthAuthorizationString ( fromParameters: params, withAllowedCharacters: withAllowedCharacters)
194
203
195
- urlRequest. addValue ( OAuth1 . oAuthAuthorizationString ( fromParameters: params, withAllowedCharacters: withAllowedCharacters) , forHTTPHeaderField: " Authorization " )
204
+ let request = Request (
205
+ method: . get,
206
+ url: URL ( string: verifyURL) !,
207
+ headers: [ " Authorization " : authrozationString]
208
+ )
196
209
197
- let ( response, data) = try URLSession . shared. resumeSync ( with: urlRequest)
210
+ let client = try HTTPClient ( url: request. url)
211
+ try client. open ( )
212
+ let response = try client. request ( request)
198
213
199
214
guard ( 200 ..< 300 ) . contains ( response. statusCode) else {
200
- throw OAuth1Error . verifyFailed (
201
- urlRequest. transform ( ) ,
202
- response. transform ( withBodyData: data)
203
- )
215
+ throw OAuth1Error . verifyFailed ( request, response)
204
216
}
205
217
206
- return try JSONSerialization . jsonObject ( with: data , options: [ ] ) as? [ String : Any ] ?? [ : ]
218
+ return try JSONSerialization . jsonObject ( with: response . body . asData ( ) , options: [ ] ) as? [ String : Any ] ?? [ : ]
207
219
}
208
220
209
221
public func getAccessToken( request: Request , requestToken: RequestToken ) throws -> Credential {
@@ -239,21 +251,23 @@ public class OAuth1 {
239
251
240
252
params [ " oauth_signature " ] = sig
241
253
242
- var urlRequest = URLRequest ( url: URL ( string: urlString) !)
243
- urlRequest. httpMethod = " POST "
254
+ let authrozationString = OAuth1 . oAuthAuthorizationString ( fromParameters: params, withAllowedCharacters: withAllowedCharacters)
244
255
245
- urlRequest. addValue ( OAuth1 . oAuthAuthorizationString ( fromParameters: params, withAllowedCharacters: withAllowedCharacters) , forHTTPHeaderField: " Authorization " )
256
+ let request = Request (
257
+ method: . post,
258
+ url: URL ( string: urlString) !,
259
+ headers: [ " Authorization " : authrozationString]
260
+ )
246
261
247
- let ( response, data) = try URLSession . shared. resumeSync ( with: urlRequest)
262
+ let client = try HTTPClient ( url: request. url)
263
+ try client. open ( )
264
+ let response = try client. request ( request)
248
265
249
266
guard ( 200 ..< 300 ) . contains ( response. statusCode) else {
250
- throw OAuth1Error . failedToGetAccessToken (
251
- urlRequest. transform ( ) ,
252
- response. transform ( withBodyData: data)
253
- )
267
+ throw OAuth1Error . failedToGetAccessToken ( request, response)
254
268
}
255
269
256
- return try Credential ( withDictionary: OAuth1 . parse ( bodyData: data ) )
270
+ return try Credential ( withDictionary: OAuth1 . parse ( bodyData: response . body . asData ( ) ) )
257
271
}
258
272
}
259
273
0 commit comments