@@ -109,71 +109,39 @@ - (NSURLSessionDataTask *)GET:(NSString *)URLString
109109 success : (void (^)(NSURLSessionDataTask *task, id responseObject))success
110110 failure : (void (^)(NSURLSessionDataTask *task, NSError *error))failure
111111{
112- NSMutableURLRequest *request = [self .requestSerializer requestWithMethod :@" GET" URLString: [[ NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters error: nil ];
112+ NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod :@" GET" URLString: URLString parameters: parameters success: success failure: failure ];
113113
114- __block NSURLSessionDataTask *task = [self dataTaskWithRequest: request completionHandler: ^(NSURLResponse * __unused response, id responseObject, NSError *error) {
115- if (error) {
116- if (failure) {
117- failure (task, error);
118- }
119- } else {
120- if (success) {
121- success (task, responseObject);
122- }
123- }
124- }];
114+ [dataTask resume ];
125115
126- [task resume ];
127-
128- return task;
116+ return dataTask;
129117}
130118
131119- (NSURLSessionDataTask *)HEAD : (NSString *)URLString
132120 parameters : (id )parameters
133121 success : (void (^)(NSURLSessionDataTask *task))success
134122 failure : (void (^)(NSURLSessionDataTask *task, NSError *error))failure
135123{
136- NSMutableURLRequest *request = [self .requestSerializer requestWithMethod: @" HEAD" URLString: [[NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters error: nil ];
137-
138- __block NSURLSessionDataTask *task = [self dataTaskWithRequest: request completionHandler: ^(NSURLResponse * __unused response, id __unused responseObject, NSError *error) {
139- if (error) {
140- if (failure) {
141- failure (task, error);
142- }
143- } else {
144- if (success) {
145- success (task);
146- }
124+ NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod: @" HEAD" URLString: URLString parameters: parameters success: ^(NSURLSessionDataTask *task, __unused id responseObject) {
125+ if (success) {
126+ success (task);
147127 }
148- }];
128+ } failure: failure ];
149129
150- [task resume ];
130+ [dataTask resume ];
151131
152- return task ;
132+ return dataTask ;
153133}
154134
155135- (NSURLSessionDataTask *)POST : (NSString *)URLString
156136 parameters : (id )parameters
157137 success : (void (^)(NSURLSessionDataTask *task, id responseObject))success
158138 failure : (void (^)(NSURLSessionDataTask *task, NSError *error))failure
159139{
160- NSMutableURLRequest *request = [self .requestSerializer requestWithMethod: @" POST" URLString: [[NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters error: nil ];
161-
162- __block NSURLSessionDataTask *task = [self dataTaskWithRequest: request completionHandler: ^(NSURLResponse * __unused response, id responseObject, NSError *error) {
163- if (error) {
164- if (failure) {
165- failure (task, error);
166- }
167- } else {
168- if (success) {
169- success (task, responseObject);
170- }
171- }
172- }];
140+ NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod: @" POST" URLString: URLString parameters: parameters success: success failure: failure];
173141
174- [task resume ];
142+ [dataTask resume ];
175143
176- return task ;
144+ return dataTask ;
177145}
178146
179147- (NSURLSessionDataTask *)POST : (NSString *)URLString
@@ -182,7 +150,20 @@ - (NSURLSessionDataTask *)POST:(NSString *)URLString
182150 success : (void (^)(NSURLSessionDataTask *task, id responseObject))success
183151 failure : (void (^)(NSURLSessionDataTask *task, NSError *error))failure
184152{
185- NSMutableURLRequest *request = [self .requestSerializer multipartFormRequestWithMethod: @" POST" URLString: [[NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters constructingBodyWithBlock: block error: nil ];
153+ NSError *serializationError = nil ;
154+ NSMutableURLRequest *request = [self .requestSerializer multipartFormRequestWithMethod: @" POST" URLString: [[NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters constructingBodyWithBlock: block error: &serializationError];
155+ if (serializationError) {
156+ if (failure) {
157+ #pragma clang diagnostic push
158+ #pragma clang diagnostic ignored "-Wgnu"
159+ dispatch_async (self.completionQueue ?: dispatch_get_main_queue (), ^{
160+ failure (nil , serializationError);
161+ });
162+ #pragma clang diagnostic pop
163+ }
164+
165+ return nil ;
166+ }
186167
187168 __block NSURLSessionDataTask *task = [self uploadTaskWithStreamedRequest: request progress: nil completionHandler: ^(NSURLResponse * __unused response, id responseObject, NSError *error) {
188169 if (error) {
@@ -206,71 +187,72 @@ - (NSURLSessionDataTask *)PUT:(NSString *)URLString
206187 success : (void (^)(NSURLSessionDataTask *task, id responseObject))success
207188 failure : (void (^)(NSURLSessionDataTask *task, NSError *error))failure
208189{
209- NSMutableURLRequest *request = [self .requestSerializer requestWithMethod :@" PUT" URLString: [[ NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters error: nil ];
190+ NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod :@" PUT" URLString: URLString parameters: parameters success: success failure: failure ];
210191
211- __block NSURLSessionDataTask *task = [self dataTaskWithRequest: request completionHandler: ^(NSURLResponse * __unused response, id responseObject, NSError *error) {
212- if (error) {
213- if (failure) {
214- failure (task, error);
215- }
216- } else {
217- if (success) {
218- success (task, responseObject);
219- }
220- }
221- }];
192+ [dataTask resume ];
222193
223- [task resume ];
224-
225- return task;
194+ return dataTask;
226195}
227196
228197- (NSURLSessionDataTask *)PATCH : (NSString *)URLString
229198 parameters : (id )parameters
230199 success : (void (^)(NSURLSessionDataTask *task, id responseObject))success
231200 failure : (void (^)(NSURLSessionDataTask *task, NSError *error))failure
232201{
233- NSMutableURLRequest *request = [self .requestSerializer requestWithMethod: @" PATCH" URLString: [[NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters error: nil ];
234-
235- __block NSURLSessionDataTask *task = [self dataTaskWithRequest: request completionHandler: ^(NSURLResponse * __unused response, id responseObject, NSError *error) {
236- if (error) {
237- if (failure) {
238- failure (task, error);
239- }
240- } else {
241- if (success) {
242- success (task, responseObject);
243- }
244- }
245- }];
202+ NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod: @" PATCH" URLString: URLString parameters: parameters success: success failure: failure];
246203
247- [task resume ];
204+ [dataTask resume ];
248205
249- return task ;
206+ return dataTask ;
250207}
251208
252209- (NSURLSessionDataTask *)DELETE : (NSString *)URLString
253210 parameters : (id )parameters
254211 success : (void (^)(NSURLSessionDataTask *task, id responseObject))success
255212 failure : (void (^)(NSURLSessionDataTask *task, NSError *error))failure
256213{
257- NSMutableURLRequest *request = [self .requestSerializer requestWithMethod: @" DELETE" URLString: [[NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters error: nil ];
214+ NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod: @" DELETE" URLString: URLString parameters: parameters success: success failure: failure];
215+
216+ [dataTask resume ];
217+
218+ return dataTask;
219+ }
220+
221+ - (NSURLSessionDataTask *)dataTaskWithHTTPMethod : (NSString *)method
222+ URLString : (NSString *)URLString
223+ parameters : (id )parameters
224+ success : (void (^)(NSURLSessionDataTask *, id ))success
225+ failure : (void (^)(NSURLSessionDataTask *, NSError *))failure
226+ {
227+ NSError *serializationError = nil ;
228+ NSMutableURLRequest *request = [self .requestSerializer requestWithMethod: method URLString: [[NSURL URLWithString: URLString relativeToURL: self .baseURL] absoluteString ] parameters: parameters error: &serializationError];
229+ if (serializationError) {
230+ if (failure) {
231+ #pragma clang diagnostic push
232+ #pragma clang diagnostic ignored "-Wgnu"
233+ dispatch_async (self.completionQueue ?: dispatch_get_main_queue (), ^{
234+ failure (nil , serializationError);
235+ });
236+ #pragma clang diagnostic pop
237+ }
238+
239+ return nil ;
240+ }
258241
259- __block NSURLSessionDataTask *task = [self dataTaskWithRequest: request completionHandler: ^(NSURLResponse * __unused response, id responseObject, NSError *error) {
242+ __block NSURLSessionDataTask *dataTask = nil ;
243+ dataTask = [self dataTaskWithRequest: request completionHandler: ^(NSURLResponse * __unused response, id responseObject, NSError *error) {
260244 if (error) {
261245 if (failure) {
262- failure (task , error);
246+ failure (dataTask , error);
263247 }
264248 } else {
265249 if (success) {
266- success (task , responseObject);
250+ success (dataTask , responseObject);
267251 }
268252 }
269253 }];
270254
271- [task resume ];
272-
273- return task;
255+ return dataTask;
274256}
275257
276258#pragma mark - NSObject
@@ -279,7 +261,7 @@ - (NSString *)description {
279261 return [NSString stringWithFormat: @" <%@ : %p , baseURL: %@ , session: %@ , operationQueue: %@ >" , NSStringFromClass ([self class ]), self , [self .baseURL absoluteString ], self .session, self .operationQueue];
280262}
281263
282- #pragma mark - NSecureCoding
264+ #pragma mark - NSSecureCoding
283265
284266+ (BOOL )supportsSecureCoding {
285267 return YES ;
@@ -291,7 +273,7 @@ - (id)initWithCoder:(NSCoder *)decoder {
291273 if (!configuration) {
292274 NSString *configurationIdentifier = [decoder decodeObjectOfClass: [NSString class ] forKey: @" identifier" ];
293275 if (configurationIdentifier) {
294- #if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED ) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED ) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1100)
276+ #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED ) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED ) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1100)
295277 configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier: configurationIdentifier];
296278#else
297279 configuration = [NSURLSessionConfiguration backgroundSessionConfiguration: configurationIdentifier];
0 commit comments