Refactoring implementation of AFHTTPRequest subclasses to fulfill AFHTTPClientOperation protocol
This commit is contained in:
parent
263e2f3d5c
commit
b7564e9f5a
5 changed files with 68 additions and 44 deletions
|
|
@ -94,28 +94,7 @@
|
|||
success:(void (^)(id object))success
|
||||
failure:(void (^)(NSHTTPURLResponse *response, NSError *error))failure
|
||||
{
|
||||
AFHTTPRequestOperation *operation = [[[self alloc] initWithRequest:urlRequest] autorelease];
|
||||
operation.completionBlock = ^ {
|
||||
if ([operation isCancelled]) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (operation.error) {
|
||||
if (failure) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
failure(operation.response, operation.error);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (success) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void) {
|
||||
success(operation.responseData);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return operation;
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ static dispatch_queue_t image_request_operation_processing_queue() {
|
|||
|
||||
@interface AFImageRequestOperation ()
|
||||
@property (readwrite, nonatomic, retain) UIImage *responseImage;
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes;
|
||||
+ (NSSet *)defaultAcceptablePathExtensions;
|
||||
@end
|
||||
|
||||
@implementation AFImageRequestOperation
|
||||
|
|
@ -93,13 +96,21 @@ static dispatch_queue_t image_request_operation_processing_queue() {
|
|||
return operation;
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes {
|
||||
return [NSSet setWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon" @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil];
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptablePathExtensions {
|
||||
return [NSSet setWithObjects:@"tif", @"tiff", @"jpg", @"jpeg", @"gif", @"png", @"ico", @"bmp", @"cur", nil];
|
||||
}
|
||||
|
||||
- (id)initWithRequest:(NSURLRequest *)urlRequest {
|
||||
self = [super initWithRequest:urlRequest];
|
||||
if (!self) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
self.acceptableContentTypes = [NSSet setWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon" @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil];
|
||||
self.acceptableContentTypes = [[self class] defaultAcceptableContentTypes];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
|
@ -125,13 +136,7 @@ static dispatch_queue_t image_request_operation_processing_queue() {
|
|||
#pragma mark - AFHTTPClientOperation
|
||||
|
||||
+ (BOOL)canProcessRequest:(NSURLRequest *)request {
|
||||
NSSet *acceptableContentTypes = [NSSet setWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon" @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil];
|
||||
NSSet *acceptablePathExtensions = [NSSet setWithObjects:@"tif", @"tiff", @"jpg", @"jpeg", @"gif", @"png", @"ico", @"bmp", @"cur", nil];
|
||||
return [acceptableContentTypes containsObject:[request valueForHTTPHeaderField:@"Accept"]] || [acceptablePathExtensions containsObject:[[request URL] pathExtension]];
|
||||
}
|
||||
|
||||
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
|
||||
return request;
|
||||
return [[self defaultAcceptableContentTypes] containsObject:[request valueForHTTPHeaderField:@"Accept"]] || [[self defaultAcceptablePathExtensions] containsObject:[[request URL] pathExtension]];
|
||||
}
|
||||
|
||||
+ (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ static dispatch_queue_t json_request_operation_processing_queue() {
|
|||
@interface AFJSONRequestOperation ()
|
||||
@property (readwrite, nonatomic, retain) id responseJSON;
|
||||
@property (readwrite, nonatomic, retain) NSError *error;
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes;
|
||||
+ (NSSet *)defaultAcceptablePathExtensions;
|
||||
@end
|
||||
|
||||
@implementation AFJSONRequestOperation
|
||||
|
|
@ -83,13 +86,21 @@ static dispatch_queue_t json_request_operation_processing_queue() {
|
|||
return operation;
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes {
|
||||
return [NSSet setWithObjects:@"application/json", @"application/x-javascript", @"text/javascript", @"text/x-javascript", @"text/x-json", @"text/json", @"text/plain", nil];
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptablePathExtensions {
|
||||
return [NSSet setWithObjects:@"json", nil];
|
||||
}
|
||||
|
||||
- (id)initWithRequest:(NSURLRequest *)urlRequest {
|
||||
self = [super initWithRequest:urlRequest];
|
||||
if (!self) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"application/x-javascript", @"text/javascript", @"text/x-javascript", @"text/x-json", @"text/json", @"text/plain", nil];
|
||||
self.acceptableContentTypes = [[self class] defaultAcceptableContentTypes];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
|
@ -123,12 +134,7 @@ static dispatch_queue_t json_request_operation_processing_queue() {
|
|||
#pragma mark - AFHTTPClientOperation
|
||||
|
||||
+ (BOOL)canProcessRequest:(NSURLRequest *)request {
|
||||
NSSet *acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"application/x-javascript", @"text/javascript", @"text/x-javascript", @"text/x-json", @"text/json", @"text/plain", nil];
|
||||
return [acceptableContentTypes containsObject:[request valueForHTTPHeaderField:@"Accept"]] || [[[request URL] pathExtension] isEqualToString:@"json"];
|
||||
}
|
||||
|
||||
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
|
||||
return request;
|
||||
return [[self defaultAcceptableContentTypes] containsObject:[request valueForHTTPHeaderField:@"Accept"]] || [[self defaultAcceptablePathExtensions] containsObject:[[request URL] pathExtension]];
|
||||
}
|
||||
|
||||
+ (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ static dispatch_queue_t property_list_request_operation_processing_queue() {
|
|||
@property (readwrite, nonatomic, retain) id responsePropertyList;
|
||||
@property (readwrite, nonatomic, assign) NSPropertyListFormat propertyListFormat;
|
||||
@property (readwrite, nonatomic, retain) NSError *error;
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes;
|
||||
+ (NSSet *)defaultAcceptablePathExtensions;
|
||||
@end
|
||||
|
||||
@implementation AFPropertyListRequestOperation
|
||||
|
|
@ -81,6 +84,14 @@ static dispatch_queue_t property_list_request_operation_processing_queue() {
|
|||
return operation;
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes {
|
||||
return [NSSet setWithObjects:@"application/x-plist", @"application/xml", nil];
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptablePathExtensions {
|
||||
return [NSSet setWithObjects:@"plist", nil];
|
||||
}
|
||||
|
||||
- (id)initWithRequest:(NSURLRequest *)urlRequest {
|
||||
self = [super initWithRequest:urlRequest];
|
||||
if (!self) {
|
||||
|
|
@ -116,12 +127,7 @@ static dispatch_queue_t property_list_request_operation_processing_queue() {
|
|||
#pragma mark - AFHTTPClientOperation
|
||||
|
||||
+ (BOOL)canProcessRequest:(NSURLRequest *)request {
|
||||
NSSet *acceptableContentTypes = [NSSet setWithObjects:@"application/x-plist", @"application/xml", nil];
|
||||
return [acceptableContentTypes containsObject:[request valueForHTTPHeaderField:@"Accept"]] || [[[request URL] pathExtension] isEqualToString:@"plist"];
|
||||
}
|
||||
|
||||
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
|
||||
return request;
|
||||
return [[self defaultAcceptableContentTypes] containsObject:[request valueForHTTPHeaderField:@"Accept"]] || [[self defaultAcceptablePathExtensions] containsObject:[[request URL] pathExtension]];
|
||||
}
|
||||
|
||||
+ (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@
|
|||
|
||||
@interface AFXMLRequestOperation ()
|
||||
@property (readwrite, nonatomic, retain) NSXMLParser *responseXMLParser;
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes;
|
||||
+ (NSSet *)defaultAcceptablePathExtensions;
|
||||
@end
|
||||
|
||||
@implementation AFXMLRequestOperation
|
||||
|
|
@ -58,13 +61,21 @@
|
|||
return operation;
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptableContentTypes {
|
||||
return [NSSet setWithObjects:@"application/xml", @"text/xml", nil];
|
||||
}
|
||||
|
||||
+ (NSSet *)defaultAcceptablePathExtensions {
|
||||
return [NSSet setWithObjects:@"xml", nil];
|
||||
}
|
||||
|
||||
- (id)initWithRequest:(NSURLRequest *)urlRequest {
|
||||
self = [super initWithRequest:urlRequest];
|
||||
if (!self) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
self.acceptableContentTypes = [NSSet setWithObjects:@"application/xml", @"text/xml", nil];
|
||||
self.acceptableContentTypes = [[self class] defaultAcceptableContentTypes];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
|
@ -82,4 +93,21 @@
|
|||
return _responseXMLParser;
|
||||
}
|
||||
|
||||
#pragma mark - AFHTTPClientOperation
|
||||
|
||||
+ (BOOL)canProcessRequest:(NSURLRequest *)request {
|
||||
return [[self defaultAcceptableContentTypes] containsObject:[request valueForHTTPHeaderField:@"Accept"]] || [[self defaultAcceptablePathExtensions] containsObject:[[request URL] pathExtension]];
|
||||
}
|
||||
|
||||
+ (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest
|
||||
success:(void (^)(id object))success
|
||||
failure:(void (^)(NSHTTPURLResponse *response, NSError *error))failure
|
||||
{
|
||||
return [self XMLParserRequestOperationWithRequest:urlRequest success:^(NSURLRequest __unused *request, NSHTTPURLResponse __unused *response, NSXMLParser *XMLParser) {
|
||||
success(XMLParser);
|
||||
} failure:^(NSURLRequest __unused *request, NSHTTPURLResponse *response, NSError *error) {
|
||||
failure(response, error);
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue