2
0
Эх сурвалжийг харах

Refactored RequestType to RequestTask and moved TaskConvertible in as well.

Christian Noon 9 жил өмнө
parent
commit
763747a945

+ 16 - 16
Source/Request.swift

@@ -77,8 +77,11 @@ open class Request {
     /// A closure executed when monitoring upload or download progress of a request.
     public typealias ProgressHandler = (Progress) -> Void
 
-    enum RequestType {
-        case data, download, upload, stream
+    enum RequestTask {
+        case data(TaskConvertible?, URLSessionTask?)
+        case download(TaskConvertible?, URLSessionTask?)
+        case upload(TaskConvertible?, URLSessionTask?)
+        case stream(TaskConvertible?, URLSessionTask?)
     }
 
     // MARK: Properties
@@ -119,25 +122,22 @@ open class Request {
 
     // MARK: Lifecycle
 
-    init(
-        session: URLSession,
-        requestType: RequestType,
-        task: URLSessionTask? = nil,
-        originalTask: TaskConvertible? = nil,
-        error: Error? = nil)
-    {
+    init(session: URLSession, requestTask: RequestTask, error: Error? = nil) {
         self.session = session
-        self.originalTask = originalTask
 
-        switch (task, requestType) {
-        case (is URLSessionUploadTask, .upload), (nil, .upload):
-            taskDelegate = UploadTaskDelegate(task: task)
-        case (is URLSessionDataTask, .data), (nil, .data):
+        switch requestTask {
+        case .data(let originalTask, let task):
             taskDelegate = DataTaskDelegate(task: task)
-        case (is URLSessionDownloadTask, .download), (nil, .download):
+            self.originalTask = originalTask
+        case .download(let originalTask, let task):
             taskDelegate = DownloadTaskDelegate(task: task)
-        default:
+            self.originalTask = originalTask
+        case .upload(let originalTask, let task):
+            taskDelegate = UploadTaskDelegate(task: task)
+            self.originalTask = originalTask
+        case .stream(let originalTask, let task):
             taskDelegate = TaskDelegate(task: task)
+            self.originalTask = originalTask
         }
 
         delegate.error = error

+ 12 - 12
Source/SessionManager.swift

@@ -253,7 +253,7 @@ open class SessionManager {
             let originalTask = DataRequest.Requestable(urlRequest: originalRequest)
 
             let task = try originalTask.task(session: session, adapter: adapter, queue: queue)
-            let request = DataRequest(session: session, requestType: .data, task: task, originalTask: originalTask)
+            let request = DataRequest(session: session, requestTask: .data(originalTask, task))
 
             delegate[task] = request
 
@@ -268,7 +268,7 @@ open class SessionManager {
     // MARK: Private - Request Implementation
 
     private func request(failedWith error: Error) -> DataRequest {
-        let request = DataRequest(session: session, requestType: .data, error: error)
+        let request = DataRequest(session: session, requestTask: .data(nil, nil), error: error)
         if startRequestsImmediately { request.resume() }
         return request
     }
@@ -372,7 +372,7 @@ open class SessionManager {
     {
         do {
             let task = try downloadable.task(session: session, adapter: adapter, queue: queue)
-            let request = DownloadRequest(session: session, requestType: .download, task: task, originalTask: downloadable)
+            let request = DownloadRequest(session: session, requestTask: .download(downloadable, task))
 
             request.downloadDelegate.destination = destination
 
@@ -387,7 +387,7 @@ open class SessionManager {
     }
 
     private func download(failedWith error: Error) -> DownloadRequest {
-        let download = DownloadRequest(session: session, requestType: .download, error: error)
+        let download = DownloadRequest(session: session, requestTask: .download(nil, nil), error: error)
         if startRequestsImmediately { download.resume() }
         return download
     }
@@ -672,24 +672,24 @@ open class SessionManager {
     private func upload(_ uploadable: UploadRequest.Uploadable) -> UploadRequest {
         do {
             let task = try uploadable.task(session: session, adapter: adapter, queue: queue)
-            let request = UploadRequest(session: session, requestType: .upload, task: task, originalTask: uploadable)
+            let upload = UploadRequest(session: session, requestTask: .upload(uploadable, task))
 
             if case let .stream(inputStream, _) = uploadable {
-                request.delegate.taskNeedNewBodyStream = { _, _ in inputStream }
+                upload.delegate.taskNeedNewBodyStream = { _, _ in inputStream }
             }
 
-            delegate[task] = request
+            delegate[task] = upload
 
-            if startRequestsImmediately { request.resume() }
+            if startRequestsImmediately { upload.resume() }
 
-            return request
+            return upload
         } catch {
             return upload(failedWith: error)
         }
     }
 
     private func upload(failedWith error: Error) -> UploadRequest {
-        let upload = UploadRequest(session: session, requestType: .upload, error: error)
+        let upload = UploadRequest(session: session, requestTask: .upload(nil, nil), error: error)
         if startRequestsImmediately { upload.resume() }
         return upload
     }
@@ -732,7 +732,7 @@ open class SessionManager {
     private func stream(_ streamable: StreamRequest.Streamable) -> StreamRequest {
         do {
             let task = try streamable.task(session: session, adapter: adapter, queue: queue)
-            let request = StreamRequest(session: session, requestType: .upload, task: task, originalTask: streamable)
+            let request = StreamRequest(session: session, requestTask: .stream(streamable, task))
 
             delegate[task] = request
 
@@ -745,7 +745,7 @@ open class SessionManager {
     }
 
     private func stream(failedWith error: Error) -> StreamRequest {
-        let stream = StreamRequest(session: session, requestType: .stream, error: error)
+        let stream = StreamRequest(session: session, requestTask: .stream(nil, nil), error: error)
         if startRequestsImmediately { stream.resume() }
         return stream
     }

+ 8 - 16
Tests/ValidationTests.swift

@@ -342,13 +342,7 @@ class ContentTypeValidationTestCase: BaseTestCase {
                     let originalTask = DataRequest.Requestable(urlRequest: originalRequest)
 
                     let task = try originalTask.task(session: session, adapter: adapter, queue: queue)
-
-                    let request = MockDataRequest(
-                        session: session,
-                        requestType: .data,
-                        task: task,
-                        originalTask: originalTask
-                    )
+                    let request = MockDataRequest(session: session, requestTask: .data(originalTask, task))
 
                     delegate[task] = request
 
@@ -356,7 +350,9 @@ class ContentTypeValidationTestCase: BaseTestCase {
 
                     return request
                 } catch {
-                    return DataRequest(session: session, requestType: .data, error: error)
+                    let request = DataRequest(session: session, requestTask: .data(nil, nil), error: error)
+                    if startRequestsImmediately { request.resume() }
+                    return request
                 }
             }
 
@@ -370,13 +366,7 @@ class ContentTypeValidationTestCase: BaseTestCase {
                     let originalTask = DownloadRequest.Downloadable.request(originalRequest)
 
                     let task = try originalTask.task(session: session, adapter: adapter, queue: queue)
-
-                    let request = MockDownloadRequest(
-                        session: session,
-                        requestType: .download,
-                        task: task,
-                        originalTask: originalTask
-                    )
+                    let request = MockDownloadRequest(session: session, requestTask: .download(originalTask, task))
 
                     request.downloadDelegate.destination = destination
 
@@ -386,7 +376,9 @@ class ContentTypeValidationTestCase: BaseTestCase {
 
                     return request
                 } catch {
-                    return DownloadRequest(session: session, requestType: .download, error: error)
+                    let download = DownloadRequest(session: session, requestTask: .download(nil, nil), error: error)
+                    if startRequestsImmediately { download.resume() }
+                    return download
                 }
             }
         }