Browse Source

Expanding success and failure block of most explicit signature for AFJSONRequestOperation to include request and response objects

Mattt Thompson 14 years ago
parent
commit
63ecf4bc98
2 changed files with 16 additions and 8 deletions
  1. 2 2
      AFNetworking/AFJSONRequestOperation.h
  2. 14 6
      AFNetworking/AFJSONRequestOperation.m

+ 2 - 2
AFNetworking/AFJSONRequestOperation.h

@@ -34,8 +34,8 @@
 + (id)operationWithRequest:(NSURLRequest *)urlRequest
      acceptableStatusCodes:(NSIndexSet *)acceptableStatusCodes
     acceptableContentTypes:(NSSet *)acceptableContentTypes
-                   success:(void (^)(id JSON))success
-                   failure:(void (^)(NSError *error))failure;
+                   success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success
+                   failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure;
 
 + (NSIndexSet *)defaultAcceptableStatusCodes;
 + (NSSet *)defaultAcceptableContentTypes;

+ 14 - 6
AFNetworking/AFJSONRequestOperation.m

@@ -37,14 +37,22 @@
                    success:(void (^)(id JSON))success
                    failure:(void (^)(NSError *error))failure
 {    
-    return [self operationWithRequest:urlRequest acceptableStatusCodes:[self defaultAcceptableStatusCodes] acceptableContentTypes:[self defaultAcceptableContentTypes] success:success failure:failure];
+    return [self operationWithRequest:urlRequest acceptableStatusCodes:[self defaultAcceptableStatusCodes] acceptableContentTypes:[self defaultAcceptableContentTypes] success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
+        if (success) {
+            success(JSON);
+        }
+    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
+        if (failure) {
+            failure(error);
+        }
+    }];
 }
 
 + (id)operationWithRequest:(NSURLRequest *)urlRequest
      acceptableStatusCodes:(NSIndexSet *)acceptableStatusCodes
     acceptableContentTypes:(NSSet *)acceptableContentTypes
-                   success:(void (^)(id JSON))success
-                   failure:(void (^)(NSError *error))failure
+                   success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success
+                   failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
 {
     return [self operationWithRequest:urlRequest completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error) {        
         BOOL statusCodeAcceptable = [acceptableStatusCodes containsIndex:[response statusCode]];
@@ -59,7 +67,7 @@
         
         if (error) {
             if (failure) {
-                failure(error);
+                failure(request, response, error);
             }
         } else {
             id JSON = nil;
@@ -76,11 +84,11 @@
 
             if (error) {
                 if (failure) {
-                    failure(error);
+                    failure(request, response, error);
                 }
             } else {
                 if (success) {
-                    success(JSON);
+                    success(request, response, JSON);
                 }
             }
         }