@@ -42,14 +42,6 @@ - (id)init
42
42
return self;
43
43
}
44
44
45
- - (id )initWithURL : (NSURL *)url
46
- {
47
- if (self = [super init ]) {
48
- _url = url;
49
- }
50
- return self;
51
- }
52
-
53
45
// Create global serial GCD queue for NSURL tasks
54
46
dispatch_queue_t networkTasksQueue ()
55
47
{
@@ -62,29 +54,33 @@ dispatch_queue_t networkTasksQueue()
62
54
}
63
55
64
56
# pragma mark - GET
65
- - (void )GETWithCompletion : (OPTLYHTTPRequestManagerResponse)completion {
66
- [self GETWithParameters: nil completionHandler: completion];
57
+ - (void )GETWithURL : (NSURL *)url
58
+ completion : (OPTLYHTTPRequestManagerResponse)completion {
59
+ [self GETWithParameters: nil url: url completionHandler: completion];
67
60
}
68
61
69
62
- (void )GETWithBackoffRetryInterval : (NSInteger )backoffRetryInterval
63
+ url : (NSURL *)url
70
64
retries : (NSInteger )retries
71
65
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
72
66
{
73
67
// TODO: Wrap this in a TEST preprocessor definition
74
68
self.delaysTest = [NSMutableArray new ];
75
69
76
70
[self GETWithParameters: nil
71
+ url: url
77
72
backoffRetryInterval: backoffRetryInterval
78
73
retries: retries
79
74
completionHandler: completion];
80
75
}
81
76
82
77
# pragma mark - GET (with parameters)
83
78
- (void )GETWithParameters : (NSDictionary *)parameters
79
+ url : (NSURL *)url
84
80
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
85
81
{
86
82
NSURLSession *ephemeralSession = [NSURLSession sessionWithConfiguration: [NSURLSessionConfiguration ephemeralSessionConfiguration ]];
87
- NSURL *urlWithParameterQuery = [self buildQueryURL: self . url withParameters: parameters];
83
+ NSURL *urlWithParameterQuery = [self buildQueryURL: url withParameters: parameters];
88
84
NSURLSessionDataTask *downloadTask = [ephemeralSession dataTaskWithURL: urlWithParameterQuery
89
85
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
90
86
if (completion) {
@@ -96,6 +92,7 @@ - (void)GETWithParameters:(NSDictionary *)parameters
96
92
}
97
93
98
94
- (void )GETWithParameters : (NSDictionary *)parameters
95
+ url : (NSURL *)url
99
96
backoffRetryInterval : (NSInteger )backoffRetryInterval
100
97
retries : (NSInteger )retries
101
98
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
@@ -104,6 +101,7 @@ - (void)GETWithParameters:(NSDictionary *)parameters
104
101
self.delaysTest = [NSMutableArray new ];
105
102
106
103
[self GETWithParameters: parameters
104
+ url: url
107
105
backoffRetryInterval: backoffRetryInterval
108
106
retries: retries
109
107
completionHandler: completion
@@ -112,6 +110,7 @@ - (void)GETWithParameters:(NSDictionary *)parameters
112
110
}
113
111
114
112
- (void )GETWithParameters : (NSDictionary *)parameters
113
+ url : (NSURL *)url
115
114
backoffRetryInterval : (NSInteger )backoffRetryInterval
116
115
retries : (NSInteger )retries
117
116
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
@@ -141,32 +140,36 @@ - (void)GETWithParameters:(NSDictionary *)parameters
141
140
}
142
141
143
142
__weak typeof (self) weakSelf = self;
144
- [self GETWithParameters: parameters completionHandler: ^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
145
- if (error) {
146
- dispatch_time_t delayTime = [weakSelf backoffDelay: backoffRetryAttempt
147
- backoffRetryInterval: backoffRetryInterval];
148
- dispatch_after (delayTime, networkTasksQueue (), ^(void ){
149
-
150
- [weakSelf GETWithParameters: parameters
151
- backoffRetryInterval: backoffRetryInterval
152
- retries: retries
153
- completionHandler: completion
154
- backoffRetryAttempt: backoffRetryAttempt+1
155
- error: error];
156
- });
157
- } else {
158
- if (completion) {
159
- completion (data, response, error);
160
- }
161
- }
162
- }];
143
+ [self GETWithParameters: parameters
144
+ url: url
145
+ completionHandler: ^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
146
+ if (error) {
147
+ dispatch_time_t delayTime = [weakSelf backoffDelay: backoffRetryAttempt
148
+ backoffRetryInterval: backoffRetryInterval];
149
+ dispatch_after (delayTime, networkTasksQueue (), ^(void ){
150
+
151
+ [weakSelf GETWithParameters: parameters
152
+ url: url
153
+ backoffRetryInterval: backoffRetryInterval
154
+ retries: retries
155
+ completionHandler: completion
156
+ backoffRetryAttempt: backoffRetryAttempt+1
157
+ error: error];
158
+ });
159
+ } else {
160
+ if (completion) {
161
+ completion (data, response, error);
162
+ }
163
+ }
164
+ }];
163
165
}
164
166
165
167
# pragma mark - GET (if modified)
166
168
- (void )GETIfModifiedSince : (NSString *)lastModifiedDate
169
+ url : (NSURL *)url
167
170
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
168
171
{
169
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [ self url ] ];
172
+ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url];
170
173
[request setValue: lastModifiedDate forHTTPHeaderField: @" If-Modified-Since" ];
171
174
172
175
NSURLSession *ephemeralSession = [NSURLSession sessionWithConfiguration: [NSURLSessionConfiguration ephemeralSessionConfiguration ]];
@@ -180,6 +183,7 @@ - (void)GETIfModifiedSince:(NSString *)lastModifiedDate
180
183
}
181
184
182
185
- (void )GETIfModifiedSince : (NSString *)lastModifiedDate
186
+ url : (NSURL *)url
183
187
backoffRetryInterval : (NSInteger )backoffRetryInterval
184
188
retries : (NSInteger )retries
185
189
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
@@ -188,6 +192,7 @@ - (void)GETIfModifiedSince:(NSString *)lastModifiedDate
188
192
self.delaysTest = [NSMutableArray new ];
189
193
190
194
[self GETIfModifiedSince: lastModifiedDate
195
+ url: url
191
196
backoffRetryInterval: backoffRetryInterval
192
197
retries: retries
193
198
completionHandler: completion
@@ -196,6 +201,7 @@ - (void)GETIfModifiedSince:(NSString *)lastModifiedDate
196
201
}
197
202
198
203
- (void )GETIfModifiedSince : (NSString *)lastModifiedDate
204
+ url : (NSURL *)url
199
205
backoffRetryInterval : (NSInteger )backoffRetryInterval
200
206
retries : (NSInteger )retries
201
207
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
@@ -224,33 +230,42 @@ - (void)GETIfModifiedSince:(NSString *)lastModifiedDate
224
230
}
225
231
226
232
__weak typeof (self) weakSelf = self;
227
- [self GETIfModifiedSince: lastModifiedDate completionHandler: ^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
228
- if (error) {
229
- dispatch_time_t delayTime = [weakSelf backoffDelay: backoffRetryAttempt
230
- backoffRetryInterval: backoffRetryInterval];
231
- dispatch_after (delayTime, networkTasksQueue (), ^(void ){
232
- [weakSelf GETIfModifiedSince: lastModifiedDate
233
- backoffRetryInterval: backoffRetryInterval
234
- retries: retries
235
- completionHandler: completion
236
- backoffRetryAttempt: backoffRetryAttempt+1
237
- error: error];
238
- });
239
- } else {
240
- if (completion) {
241
- completion (data, response, error);
242
- }
243
- }
244
- }];
233
+ [self GETIfModifiedSince: lastModifiedDate
234
+ url: url
235
+ completionHandler: ^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
236
+ NSInteger statusCode = 503 ;
237
+ if (response != nil && error == nil ) {
238
+ NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
239
+ statusCode = (long )[httpResponse statusCode ];
240
+ }
241
+ if (error != nil || statusCode >= 400 ) {
242
+ dispatch_time_t delayTime = [weakSelf backoffDelay: backoffRetryAttempt
243
+ backoffRetryInterval: backoffRetryInterval];
244
+ dispatch_after (delayTime, networkTasksQueue (), ^(void ){
245
+ [weakSelf GETIfModifiedSince: lastModifiedDate
246
+ url: url
247
+ backoffRetryInterval: backoffRetryInterval
248
+ retries: retries
249
+ completionHandler: completion
250
+ backoffRetryAttempt: backoffRetryAttempt+1
251
+ error: error];
252
+ });
253
+ } else {
254
+ if (completion) {
255
+ completion (data, response, error);
256
+ }
257
+ }
258
+ }];
245
259
}
246
260
247
261
248
262
# pragma mark - POST
249
263
- (void )POSTWithParameters : (NSDictionary *)parameters
264
+ url : (NSURL *)url
250
265
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
251
266
{
252
267
NSURLSession *ephemeralSession = [NSURLSession sessionWithConfiguration: [NSURLSessionConfiguration ephemeralSessionConfiguration ]];
253
- NSMutableURLRequest *request = [[NSMutableURLRequest alloc ] initWithURL: [ self url ] ];
268
+ NSMutableURLRequest *request = [[NSMutableURLRequest alloc ] initWithURL: url];
254
269
[request setHTTPMethod: kHTTPRequestMethodPost ];
255
270
256
271
NSError *JSONSerializationError = nil ;
@@ -277,6 +292,7 @@ - (void)POSTWithParameters:(NSDictionary *)parameters
277
292
}
278
293
279
294
- (void )POSTWithParameters : (nonnull NSDictionary *)parameters
295
+ url : (NSURL *)url
280
296
backoffRetryInterval : (NSInteger )backoffRetryInterval
281
297
retries : (NSInteger )retries
282
298
completionHandler : (nullable OPTLYHTTPRequestManagerResponse)completion
@@ -285,6 +301,7 @@ - (void)POSTWithParameters:(nonnull NSDictionary *)parameters
285
301
self.delaysTest = [NSMutableArray new ];
286
302
287
303
[self POSTWithParameters: parameters
304
+ url: url
288
305
backoffRetryInterval: backoffRetryInterval
289
306
retries: retries
290
307
completionHandler: completion
@@ -293,6 +310,7 @@ - (void)POSTWithParameters:(nonnull NSDictionary *)parameters
293
310
}
294
311
295
312
- (void )POSTWithParameters : (NSDictionary *)parameters
313
+ url : (NSURL *)url
296
314
backoffRetryInterval : (NSInteger )backoffRetryInterval
297
315
retries : (NSInteger )retries
298
316
completionHandler : (OPTLYHTTPRequestManagerResponse)completion
@@ -321,24 +339,27 @@ - (void)POSTWithParameters:(NSDictionary *)parameters
321
339
}
322
340
323
341
__weak typeof (self) weakSelf = self;
324
- [self POSTWithParameters: parameters completionHandler: ^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
325
- if (error) {
326
- dispatch_time_t delayTime = [weakSelf backoffDelay: backoffRetryAttempt
327
- backoffRetryInterval: backoffRetryInterval];
328
- dispatch_after (delayTime, networkTasksQueue (), ^(void ){
329
- [weakSelf POSTWithParameters: parameters
330
- backoffRetryInterval: backoffRetryInterval
331
- retries: retries
332
- completionHandler: completion
333
- backoffRetryAttempt: backoffRetryAttempt+1
334
- error: error];
335
- });
336
- } else {
337
- if (completion) {
338
- completion (data, response, error);
339
- }
340
- }
341
- }];
342
+ [self POSTWithParameters: parameters
343
+ url: url
344
+ completionHandler: ^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
345
+ if (error) {
346
+ dispatch_time_t delayTime = [weakSelf backoffDelay: backoffRetryAttempt
347
+ backoffRetryInterval: backoffRetryInterval];
348
+ dispatch_after (delayTime, networkTasksQueue (), ^(void ){
349
+ [weakSelf POSTWithParameters: parameters
350
+ url: url
351
+ backoffRetryInterval: backoffRetryInterval
352
+ retries: retries
353
+ completionHandler: completion
354
+ backoffRetryAttempt: backoffRetryAttempt+1
355
+ error: error];
356
+ });
357
+ } else {
358
+ if (completion) {
359
+ completion (data, response, error);
360
+ }
361
+ }
362
+ }];
342
363
}
343
364
344
365
# pragma mark - Helper Methods
0 commit comments