diff --git a/AFNetworking/AFHTTPRequestOperation.h b/AFNetworking/AFHTTPRequestOperation.h index 235cc1a..7c3d234 100644 --- a/AFNetworking/AFHTTPRequestOperation.h +++ b/AFNetworking/AFHTTPRequestOperation.h @@ -107,3 +107,18 @@ failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; @end + + +@interface AFHTTPRequestOperation (AFInternal) + +/** + Executes the successBlock on the corresponding successCallbackQueue. + */ +- (void)dispatchSuccessBlock:(void (^)(AFHTTPRequestOperation *operation, id responseObject))successBlock responseObject:(id)responseObject; + +/** + Executes the failureBlock on the corresponding failureCallbackQueue. + */ +- (void)dispatchFailureBlock:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failureBlock error:(NSError *)error; + +@end \ No newline at end of file diff --git a/AFNetworking/AFHTTPRequestOperation.m b/AFNetworking/AFHTTPRequestOperation.m index 2fa2326..6f72918 100644 --- a/AFNetworking/AFHTTPRequestOperation.m +++ b/AFNetworking/AFHTTPRequestOperation.m @@ -127,17 +127,9 @@ } if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } + [self dispatchFailureBlock:failure error:self.error]; } else { - if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, self.responseData); - }); - } + [self dispatchSuccessBlock:success responseObject:self.responseString]; } }; } @@ -146,6 +138,25 @@ + (BOOL)canProcessRequest:(NSURLRequest *)request { return YES; -} +} + +#pragma mark - AFInternal + +- (void)dispatchSuccessBlock:(void (^)(AFHTTPRequestOperation *operation, id responseObject))successBlock responseObject:(id)responseObject { + if (successBlock) { + dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ + successBlock(self, responseObject); + }); + } +} + +- (void)dispatchFailureBlock:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failureBlock error:(NSError *)error { + if (failureBlock) { + dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failureBlock(self, error); + }); + + } +} @end diff --git a/AFNetworking/AFImageRequestOperation.m b/AFNetworking/AFImageRequestOperation.m index d1f4d2b..554f6b7 100644 --- a/AFNetworking/AFImageRequestOperation.m +++ b/AFNetworking/AFImageRequestOperation.m @@ -230,17 +230,9 @@ static dispatch_queue_t image_request_operation_processing_queue() { dispatch_async(image_request_operation_processing_queue(), ^(void) { if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, self.responseImage); - }); - } + [self dispatchFailureBlock:failure error:self.error]; + } else { + [self dispatchSuccessBlock:success responseObject:self.responseImage]; } }); }; diff --git a/AFNetworking/AFJSONRequestOperation.m b/AFNetworking/AFJSONRequestOperation.m index cc7d661..07e6113 100644 --- a/AFNetworking/AFJSONRequestOperation.m +++ b/AFNetworking/AFJSONRequestOperation.m @@ -134,17 +134,9 @@ static dispatch_queue_t json_request_operation_processing_queue() { id JSON = self.responseJSON; if (self.JSONError) { - if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.JSONError); - }); - } + [self dispatchFailureBlock:failure error:self.JSONError]; } else { - if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, JSON); - }); - } + [self dispatchSuccessBlock:success responseObject:JSON]; } }); } diff --git a/AFNetworking/AFPropertyListRequestOperation.m b/AFNetworking/AFPropertyListRequestOperation.m index 0fcade0..b65692e 100644 --- a/AFNetworking/AFPropertyListRequestOperation.m +++ b/AFNetworking/AFPropertyListRequestOperation.m @@ -124,26 +124,16 @@ static dispatch_queue_t property_list_request_operation_processing_queue() { } if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } + [self dispatchFailureBlock:failure error:self.error]; } else { dispatch_async(property_list_request_operation_processing_queue(), ^(void) { id propertyList = self.responsePropertyList; - - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - if (self.propertyListError) { - if (failure) { - failure(self, self.propertyListError); - } - } else { - if (success) { - success(self, propertyList); - } - } - }); + + if (self.propertyListError) { + [self dispatchFailureBlock:failure error:self.propertyListError]; + }else { + [self dispatchSuccessBlock:success responseObject:propertyList]; + } }); } }; diff --git a/AFNetworking/AFXMLRequestOperation.m b/AFNetworking/AFXMLRequestOperation.m index ee7865a..f3966c4 100644 --- a/AFNetworking/AFXMLRequestOperation.m +++ b/AFNetworking/AFXMLRequestOperation.m @@ -187,17 +187,9 @@ static dispatch_queue_t xml_request_operation_processing_queue() { } if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } + [self dispatchFailureBlock:failure error:self.error]; } else { - if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, self.responseXMLParser); - }); - } + [self dispatchSuccessBlock:success responseObject:self.responseXMLParser]; } }; }