Sfoglia il codice sorgente

Refactored response method and response serializers to return server data.

Christian Noon 10 anni fa
parent
commit
bc222dcd45

+ 6 - 6
Source/ResponseSerialization.swift

@@ -102,7 +102,7 @@ extension Request {
     public func response<T: ResponseSerializer, V where T.SerializedObject == V>(
         queue queue: dispatch_queue_t? = nil,
         responseSerializer: T,
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<V>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<V>) -> Void)
         -> Self
     {
         delegate.queue.addOperationWithBlock {
@@ -115,7 +115,7 @@ extension Request {
             }()
 
             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.
     */
-    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)
     }
 }
@@ -212,7 +212,7 @@ extension Request {
     */
     public func responseString(
         encoding encoding: NSStringEncoding? = nil,
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<String>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<String>) -> Void)
         -> Self
     {
         return response(
@@ -266,7 +266,7 @@ extension Request {
     */
     public func responseJSON(
         options options: NSJSONReadingOptions = .AllowFragments,
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<AnyObject>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<AnyObject>) -> Void)
         -> Self
     {
         return response(
@@ -320,7 +320,7 @@ extension Request {
     */
     public func responsePropertyList(
         options options: NSPropertyListReadOptions = NSPropertyListReadOptions(),
-        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, Result<AnyObject>) -> Void)
+        completionHandler: (NSURLRequest?, NSHTTPURLResponse?, NSData?, Result<AnyObject>) -> Void)
         -> Self
     {
         return response(

+ 4 - 1
Tests/DownloadTests.swift

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

+ 4 - 1
Tests/ManagerTests.swift

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

+ 8 - 2
Tests/RequestTests.swift

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

+ 40 - 10
Tests/ResponseTests.swift

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