Browse Source

Refactored response method and response serializers to return server data.

Christian Noon 10 years ago
parent
commit
bc222dcd45

+ 6 - 6
Source/ResponseSerialization.swift

@@ -102,7 +102,7 @@ extension Request {
     public func response<T: ResponseSerializer, V where T.SerializedObject == V>(
     public func response<T: ResponseSerializer, V where T.SerializedObject == V>(
         queue queue: dispatch_queue_t? = nil,
         queue queue: dispatch_queue_t? = nil,
         responseSerializer: T,
         responseSerializer: T,
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<V>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<V>) -> Void)
         -> Self
         -> Self
     {
     {
         delegate.queue.addOperationWithBlock {
         delegate.queue.addOperationWithBlock {
@@ -115,7 +115,7 @@ extension Request {
             }()
             }()
 
 
             dispatch_async(queue ?? dispatch_get_main_queue()) {
             dispatch_async(queue ?? dispatch_get_main_queue()) {
-                completionHandler(self.request, self.response, result)
+                completionHandler(self.request, self.response, self.delegate.data, result)
             }
             }
         }
         }
 
 
@@ -151,7 +151,7 @@ extension Request {
 
 
         - returns: The request.
         - returns: The request.
     */
     */
-    public func responseData(completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<NSData>) -> Void) -> Self {
+    public func responseData(completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<NSData>) -> Void) -> Self {
         return response(responseSerializer: Request.dataResponseSerializer(), completionHandler: completionHandler)
         return response(responseSerializer: Request.dataResponseSerializer(), completionHandler: completionHandler)
     }
     }
 }
 }
@@ -212,7 +212,7 @@ extension Request {
     */
     */
     public func responseString(
     public func responseString(
         encoding encoding: NSStringEncoding? = nil,
         encoding encoding: NSStringEncoding? = nil,
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<String>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<String>) -> Void)
         -> Self
         -> Self
     {
     {
         return response(
         return response(
@@ -266,7 +266,7 @@ extension Request {
     */
     */
     public func responseJSON(
     public func responseJSON(
         options options: NSJSONReadingOptions = .AllowFragments,
         options options: NSJSONReadingOptions = .AllowFragments,
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<AnyObject>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<AnyObject>) -> Void)
         -> Self
         -> Self
     {
     {
         return response(
         return response(
@@ -320,7 +320,7 @@ extension Request {
     */
     */
     public func responsePropertyList(
     public func responsePropertyList(
         options options: NSPropertyListReadOptions = NSPropertyListReadOptions(),
         options options: NSPropertyListReadOptions = NSPropertyListReadOptions(),
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<AnyObject>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<AnyObject>) -> Void)
         -> Self
         -> Self
     {
     {
         return response(
         return response(

+ 4 - 1
Tests/DownloadTests.swift

@@ -432,6 +432,7 @@ class DownloadResumeDataTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>!
         var result: Result<AnyObject>!
 
 
         // When
         // When
@@ -439,9 +440,10 @@ class DownloadResumeDataTestCase: BaseTestCase {
         download.progress { _, _, _ in
         download.progress { _, _, _ in
             download.cancel()
             download.cancel()
         }
         }
-        download.responseJSON { responseRequest, responseResponse, responseResult in
+        download.responseJSON { responseRequest, responseResponse, responseData, responseResult in
             request = responseRequest
             request = responseRequest
             response = responseResponse
             response = responseResponse
+            data = responseData
             result = responseResult
             result = responseResult
 
 
             expectation.fulfill()
             expectation.fulfill()
@@ -452,6 +454,7 @@ class DownloadResumeDataTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
 
 
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertNotNil(result.data, "data should not be nil")
         XCTAssertNotNil(result.data, "data should not be nil")

+ 4 - 1
Tests/ManagerTests.swift

@@ -141,13 +141,15 @@ class ManagerConfigurationHeadersTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>?
         var result: Result<AnyObject>?
 
 
         // When
         // When
         manager.request(.GET, "https://httpbin.org/headers")
         manager.request(.GET, "https://httpbin.org/headers")
-            .responseJSON { responseRequest, responseResponse, responseResult in
+            .responseJSON { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -158,6 +160,7 @@ class ManagerConfigurationHeadersTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
 
 
         if let result = result {
         if let result = result {
             XCTAssertTrue(result.isSuccess, "result should be a success")
             XCTAssertTrue(result.isSuccess, "result should be a success")

+ 8 - 2
Tests/RequestTests.swift

@@ -292,13 +292,15 @@ class RequestResponseTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>?
         var result: Result<AnyObject>?
 
 
         // When
         // When
         Alamofire.request(.POST, URLString, parameters: parameters)
         Alamofire.request(.POST, URLString, parameters: parameters)
-            .responseJSON { responseRequest, responseResponse, responseResult in
+            .responseJSON { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -309,6 +311,7 @@ class RequestResponseTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
         XCTAssertNotNil(result, "result should be nil")
         XCTAssertNotNil(result, "result should be nil")
 
 
         if let
         if let
@@ -352,13 +355,15 @@ class RequestResponseTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>?
         var result: Result<AnyObject>?
 
 
         // When
         // When
         Alamofire.request(.POST, URLString, parameters: parameters)
         Alamofire.request(.POST, URLString, parameters: parameters)
-            .responseJSON { responseRequest, responseResponse, responseResult in
+            .responseJSON { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -369,6 +374,7 @@ class RequestResponseTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
         XCTAssertNotNil(result, "result should be nil")
         XCTAssertNotNil(result, "result should be nil")
 
 
         if let
         if let

+ 40 - 10
Tests/ResponseTests.swift

@@ -32,13 +32,15 @@ class ResponseDataTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<NSData>!
         var result: Result<NSData>!
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
-            .responseData { responseRequest, responseResponse, responseResult in
+            .responseData { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -49,6 +51,8 @@ class ResponseDataTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
+
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertNotNil(result.value, "result value should not be nil")
         XCTAssertNotNil(result.value, "result value should not be nil")
         XCTAssertNil(result.data, "result data should be nil")
         XCTAssertNil(result.data, "result data should be nil")
@@ -62,13 +66,15 @@ class ResponseDataTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<NSData>!
         var result: Result<NSData>!
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
-            .responseData { responseRequest, responseResponse, responseResult in
+            .responseData { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -79,6 +85,8 @@ class ResponseDataTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNil(response, "response should be nil")
         XCTAssertNil(response, "response should be nil")
+        XCTAssertNotNil(data, "data should not be nil")
+
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertNil(result.value, "result value should not be nil")
         XCTAssertNil(result.value, "result value should not be nil")
         XCTAssertNotNil(result.data, "result data should be nil")
         XCTAssertNotNil(result.data, "result data should be nil")
@@ -96,13 +104,15 @@ class ResponseStringTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<String>!
         var result: Result<String>!
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
-            .responseString { responseRequest, responseResponse, responseResult in
+            .responseString { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -113,6 +123,8 @@ class ResponseStringTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
+
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertNotNil(result.value, "result value should not be nil")
         XCTAssertNotNil(result.value, "result value should not be nil")
         XCTAssertNil(result.data, "result data should be nil")
         XCTAssertNil(result.data, "result data should be nil")
@@ -126,13 +138,15 @@ class ResponseStringTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<String>!
         var result: Result<String>!
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
-            .responseString { responseRequest, responseResponse, responseResult in
+            .responseString { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -143,9 +157,11 @@ class ResponseStringTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNil(response, "response should be nil")
         XCTAssertNil(response, "response should be nil")
+        XCTAssertNotNil(data, "data should not be nil")
+
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertNil(result.value, "result value should not be nil")
         XCTAssertNil(result.value, "result value should not be nil")
-        XCTAssertNotNil(result.data, "result data should be nil")
+        XCTAssertNotNil(result.data, "result data should not be nil")
         XCTAssertTrue(result.error != nil, "result error should not be nil")
         XCTAssertTrue(result.error != nil, "result error should not be nil")
     }
     }
 }
 }
@@ -160,13 +176,15 @@ class ResponseJSONTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>!
         var result: Result<AnyObject>!
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
-            .responseJSON { responseRequest, responseResponse, responseResult in
+            .responseJSON { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -177,6 +195,8 @@ class ResponseJSONTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
+
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertNotNil(result.value, "result value should not be nil")
         XCTAssertNotNil(result.value, "result value should not be nil")
         XCTAssertNil(result.data, "result data should be nil")
         XCTAssertNil(result.data, "result data should be nil")
@@ -190,13 +210,15 @@ class ResponseJSONTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>!
         var result: Result<AnyObject>!
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
-            .responseJSON { responseRequest, responseResponse, responseResult in
+            .responseJSON { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -207,9 +229,11 @@ class ResponseJSONTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNil(response, "response should be nil")
         XCTAssertNil(response, "response should be nil")
+        XCTAssertNotNil(data, "data should not be nil")
+
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertTrue(result.isFailure, "result should be a failure")
         XCTAssertNil(result.value, "result value should not be nil")
         XCTAssertNil(result.value, "result value should not be nil")
-        XCTAssertNotNil(result.data, "result data should be nil")
+        XCTAssertNotNil(result.data, "result data should not be nil")
         XCTAssertTrue(result.error != nil, "result error should not be nil")
         XCTAssertTrue(result.error != nil, "result error should not be nil")
     }
     }
 
 
@@ -220,13 +244,15 @@ class ResponseJSONTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>!
         var result: Result<AnyObject>!
 
 
         // When
         // When
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
-            .responseJSON { responseRequest, responseResponse, responseResult in
+            .responseJSON { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -237,6 +263,7 @@ class ResponseJSONTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertTrue(result.isSuccess, "result should be success")
 
 
         // The `as NSString` cast is necessary due to a compiler bug. See the following rdar for more info.
         // The `as NSString` cast is necessary due to a compiler bug. See the following rdar for more info.
@@ -255,13 +282,15 @@ class ResponseJSONTestCase: BaseTestCase {
 
 
         var request: NSURLRequest?
         var request: NSURLRequest?
         var response: NSHTTPURLResponse?
         var response: NSHTTPURLResponse?
+        var data: NSData?
         var result: Result<AnyObject>!
         var result: Result<AnyObject>!
 
 
         // When
         // When
         Alamofire.request(.POST, URLString, parameters: ["foo": "bar"])
         Alamofire.request(.POST, URLString, parameters: ["foo": "bar"])
-            .responseJSON { responseRequest, responseResponse, responseResult in
+            .responseJSON { responseRequest, responseResponse, responseData, responseResult in
                 request = responseRequest
                 request = responseRequest
                 response = responseResponse
                 response = responseResponse
+                data = responseData
                 result = responseResult
                 result = responseResult
 
 
                 expectation.fulfill()
                 expectation.fulfill()
@@ -272,6 +301,7 @@ class ResponseJSONTestCase: BaseTestCase {
         // Then
         // Then
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(request, "request should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
         XCTAssertNotNil(response, "response should not be nil")
+        XCTAssertNotNil(data, "data should not be nil")
         XCTAssertTrue(result.isSuccess, "result should be success")
         XCTAssertTrue(result.isSuccess, "result should be success")
 
 
         // The `as NSString` cast is necessary due to a compiler bug. See the following rdar for more info.
         // The `as NSString` cast is necessary due to a compiler bug. See the following rdar for more info.