提交 763747a9 编写于 作者: C Christian Noon

Refactored RequestType to RequestTask and moved TaskConvertible in as well.

上级 133aec3b
......@@ -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
......
......@@ -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
}
......
......@@ -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
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册