Removing AFInternal category, opting instead to inline success and failure dispatch
Minor refactoring and reformatting of AFHTTPRequest subclasses Changing AFXMLRequestOperation error to XMLError to match rest of subclasses
This commit is contained in:
parent
64555e5dff
commit
b723e5b75c
6 changed files with 97 additions and 87 deletions
|
|
@ -74,12 +74,12 @@
|
|||
@property (readonly) BOOL hasAcceptableContentType;
|
||||
|
||||
/**
|
||||
The callback dispatch queue on success. If this is NULL (default), the main queue is used.
|
||||
The callback dispatch queue on success. If `NULL` (default), the main queue is used.
|
||||
*/
|
||||
@property (nonatomic) dispatch_queue_t successCallbackQueue;
|
||||
|
||||
/**
|
||||
The callback dispatch queue on failure. If this is NULL (default), the main queue is used.
|
||||
The callback dispatch queue on failure. If `NULL` (default), the main queue is used.
|
||||
*/
|
||||
@property (nonatomic) dispatch_queue_t failureCallbackQueue;
|
||||
|
||||
|
|
@ -107,18 +107,3 @@
|
|||
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;
|
||||
|
||||
@end
|
||||
|
|
@ -49,8 +49,17 @@
|
|||
[_acceptableStatusCodes release];
|
||||
[_acceptableContentTypes release];
|
||||
[_HTTPError release];
|
||||
if (_successCallbackQueue) { dispatch_release(_successCallbackQueue), _successCallbackQueue=NULL;}
|
||||
if (_failureCallbackQueue) { dispatch_release(_failureCallbackQueue), _failureCallbackQueue=NULL;}
|
||||
|
||||
if (_successCallbackQueue) {
|
||||
dispatch_release(_successCallbackQueue);
|
||||
_successCallbackQueue = NULL;
|
||||
}
|
||||
|
||||
if (_failureCallbackQueue) {
|
||||
dispatch_release(_failureCallbackQueue);
|
||||
_failureCallbackQueue = NULL;
|
||||
}
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
|
@ -92,7 +101,6 @@
|
|||
|
||||
- (void)setSuccessCallbackQueue:(dispatch_queue_t)successCallbackQueue {
|
||||
if (successCallbackQueue != _successCallbackQueue) {
|
||||
|
||||
if (_successCallbackQueue) {
|
||||
dispatch_release(_successCallbackQueue);
|
||||
}
|
||||
|
|
@ -106,7 +114,6 @@
|
|||
|
||||
- (void)setFailureCallbackQueue:(dispatch_queue_t)failureCallbackQueue {
|
||||
if (failureCallbackQueue != _failureCallbackQueue) {
|
||||
|
||||
if (_failureCallbackQueue) {
|
||||
dispatch_release(_failureCallbackQueue);
|
||||
}
|
||||
|
|
@ -127,9 +134,17 @@
|
|||
}
|
||||
|
||||
if (self.error) {
|
||||
[self dispatchFailureBlock:failure];
|
||||
if (failure) {
|
||||
dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
failure(self, self.error);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
[self dispatchSuccessBlock:success responseObject:self.responseString];
|
||||
if (success) {
|
||||
dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
success(self, self.responseString);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -140,22 +155,4 @@
|
|||
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 {
|
||||
if (failureBlock) {
|
||||
dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
failureBlock(self, self.error);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -109,11 +109,11 @@ static dispatch_queue_t image_request_operation_processing_queue() {
|
|||
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
|
||||
if (success) {
|
||||
NSImage *image = responseObject;
|
||||
|
||||
|
||||
if (imageProcessingBlock) {
|
||||
image = imageProcessingBlock(image);
|
||||
}
|
||||
|
||||
|
||||
success(operation.request, operation.response, image);
|
||||
}
|
||||
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||||
|
|
@ -230,9 +230,17 @@ static dispatch_queue_t image_request_operation_processing_queue() {
|
|||
|
||||
dispatch_async(image_request_operation_processing_queue(), ^(void) {
|
||||
if (self.error) {
|
||||
[self dispatchFailureBlock:failure];
|
||||
if (failure) {
|
||||
dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
failure(self, self.error);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
[self dispatchSuccessBlock:success responseObject:self.responseImage];
|
||||
if (success) {
|
||||
dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
success(self, self.responseImage);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -124,15 +124,27 @@ static dispatch_queue_t json_request_operation_processing_queue() {
|
|||
}
|
||||
|
||||
if (self.error) {
|
||||
[self dispatchFailureBlock:failure];
|
||||
if (failure) {
|
||||
dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
failure(self, self.error);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
dispatch_async(json_request_operation_processing_queue(), ^(void) {
|
||||
id JSON = self.responseJSON;
|
||||
|
||||
if (self.JSONError) {
|
||||
[self dispatchFailureBlock:failure];
|
||||
if (failure) {
|
||||
dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
failure(self, self.error);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
[self dispatchSuccessBlock:success responseObject:JSON];
|
||||
if (success) {
|
||||
dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
success(self, JSON);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,15 +124,27 @@ static dispatch_queue_t property_list_request_operation_processing_queue() {
|
|||
}
|
||||
|
||||
if (self.error) {
|
||||
[self dispatchFailureBlock:failure];
|
||||
if (failure) {
|
||||
dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{
|
||||
failure(self, self.error);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
dispatch_async(property_list_request_operation_processing_queue(), ^(void) {
|
||||
id propertyList = self.responsePropertyList;
|
||||
|
||||
if (self.propertyListError) {
|
||||
[self dispatchFailureBlock:failure];
|
||||
}else {
|
||||
[self dispatchSuccessBlock:success responseObject:propertyList];
|
||||
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, propertyList);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
|
||||
#include <Availability.h>
|
||||
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED
|
||||
static dispatch_queue_t af_xml_request_operation_processing_queue;
|
||||
static dispatch_queue_t xml_request_operation_processing_queue() {
|
||||
if (af_xml_request_operation_processing_queue == NULL) {
|
||||
|
|
@ -33,14 +32,13 @@ static dispatch_queue_t xml_request_operation_processing_queue() {
|
|||
|
||||
return af_xml_request_operation_processing_queue;
|
||||
}
|
||||
#endif
|
||||
|
||||
@interface AFXMLRequestOperation ()
|
||||
@property (readwrite, nonatomic, retain) NSXMLParser *responseXMLParser;
|
||||
#if __MAC_OS_X_VERSION_MIN_REQUIRED
|
||||
@property (readwrite, nonatomic, retain) NSXMLDocument *responseXMLDocument;
|
||||
#endif
|
||||
@property (readwrite, nonatomic, retain) NSError *error;
|
||||
@property (readwrite, nonatomic, retain) NSError *XMLError;
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes;
|
||||
+ (NSSet *)defaultAcceptablePathExtensions;
|
||||
|
|
@ -51,7 +49,7 @@ static dispatch_queue_t xml_request_operation_processing_queue() {
|
|||
#if __MAC_OS_X_VERSION_MIN_REQUIRED
|
||||
@synthesize responseXMLDocument = _responseXMLDocument;
|
||||
#endif
|
||||
@synthesize error = _XMLError;
|
||||
@synthesize XMLError = _XMLError;
|
||||
|
||||
+ (AFXMLRequestOperation *)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest
|
||||
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success
|
||||
|
|
@ -76,34 +74,20 @@ static dispatch_queue_t xml_request_operation_processing_queue() {
|
|||
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLDocument *document))success
|
||||
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLDocument *document))failure
|
||||
{
|
||||
AFXMLRequestOperation *operation = [[[self alloc] initWithRequest:urlRequest] autorelease];
|
||||
operation.completionBlock = ^ {
|
||||
if ([operation isCancelled]) {
|
||||
return;
|
||||
AFXMLRequestOperation *requestOperation = [[[self alloc] initWithRequest:urlRequest] autorelease];
|
||||
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, __unused id responseObject) {
|
||||
if (success) {
|
||||
NSXMLDocument *XMLDocument = [(AFXMLRequestOperation *)operation responseXMLDocument];
|
||||
success(operation.request, operation.response, XMLDocument);
|
||||
}
|
||||
|
||||
if (operation.error) {
|
||||
if (failure) {
|
||||
NSXMLDocument *XMLDocument = operation.responseXMLDocument;
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
failure(operation.request, operation.response, operation.error, XMLDocument);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
dispatch_async(xml_request_operation_processing_queue(), ^(void) {
|
||||
if (success) {
|
||||
NSXMLDocument *XMLDocument = operation.responseXMLDocument;
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
success(operation.request, operation.response, XMLDocument);
|
||||
});
|
||||
}
|
||||
});
|
||||
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||||
if (failure) {
|
||||
NSXMLDocument *XMLDocument = [(AFXMLRequestOperation *)operation responseXMLDocument];
|
||||
failure(operation.request, operation.response, error, XMLDocument);
|
||||
}
|
||||
};
|
||||
}];
|
||||
|
||||
return operation;
|
||||
return requestOperation;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -151,7 +135,7 @@ static dispatch_queue_t xml_request_operation_processing_queue() {
|
|||
if (!_responseXMLDocument && [self.responseData length] > 0 && [self isFinished]) {
|
||||
NSError *error = nil;
|
||||
self.responseXMLDocument = [[[NSXMLDocument alloc] initWithData:self.responseData options:0 error:&error] autorelease];
|
||||
self.error = error;
|
||||
self.XMLError = error;
|
||||
}
|
||||
|
||||
return _responseXMLDocument;
|
||||
|
|
@ -186,11 +170,23 @@ static dispatch_queue_t xml_request_operation_processing_queue() {
|
|||
return;
|
||||
}
|
||||
|
||||
if (self.error) {
|
||||
[self dispatchFailureBlock:failure];
|
||||
} else {
|
||||
[self dispatchSuccessBlock:success responseObject:self.responseXMLParser];
|
||||
}
|
||||
dispatch_async(xml_request_operation_processing_queue(), ^(void) {
|
||||
NSXMLParser *XMLParser = self.responseXMLParser;
|
||||
|
||||
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, XMLParser);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue