Skip to content
Snippets Groups Projects
Commit 4b8750c8 authored by Tobias Ullerich's avatar Tobias Ullerich
Browse files

Add DataManagerDelegate

parent 55a3f915
Branches
No related tags found
No related merge requests found
...@@ -20,6 +20,11 @@ public protocol HttpSuccessFilter ...@@ -20,6 +20,11 @@ public protocol HttpSuccessFilter
func handleResponse(data: Data?, response: HTTPURLResponse, responseHandler: ResponseHandler?, sender: Any?, promise: Promise<Data?, ResponseError>) func handleResponse(data: Data?, response: HTTPURLResponse, responseHandler: ResponseHandler?, sender: Any?, promise: Promise<Data?, ResponseError>)
} }
public protocol DataManagerDelegate
{
func manipulateRequest(request: Request) -> Request
}
public class DataManager: NSObject, URLSessionDelegate public class DataManager: NSObject, URLSessionDelegate
{ {
public enum DataManagerError: Error public enum DataManagerError: Error
...@@ -52,6 +57,8 @@ public class DataManager: NSObject, URLSessionDelegate ...@@ -52,6 +57,8 @@ public class DataManager: NSObject, URLSessionDelegate
private var responseOkFilter: HttpSuccessFilter private var responseOkFilter: HttpSuccessFilter
private var responseFilters: [Int: HttpResponseFilter] = [:] private var responseFilters: [Int: HttpResponseFilter] = [:]
public var delegate: DataManagerDelegate?
public init(host: Host, responseOkFilter: HttpSuccessFilter, responseFilters: [Int: HttpResponseFilter] = [:], timeout: TimeInterval = 10.0) { public init(host: Host, responseOkFilter: HttpSuccessFilter, responseFilters: [Int: HttpResponseFilter] = [:], timeout: TimeInterval = 10.0) {
self.host = host self.host = host
self.responseOkFilter = responseOkFilter self.responseOkFilter = responseOkFilter
...@@ -85,8 +92,10 @@ public class DataManager: NSObject, URLSessionDelegate ...@@ -85,8 +92,10 @@ public class DataManager: NSObject, URLSessionDelegate
print("Request: \(r)") print("Request: \(r)")
} }
if var req: URLRequest = createUrlRequest(request: r) { let request = delegate?.manipulateRequest(request: r) ?? r
if let authentication = r.authentication {
if var req: URLRequest = createUrlRequest(request: request) {
if let authentication = request.authentication {
if let headerKey = authentication.headerKey, let headerValue = authentication.headerValue { if let headerKey = authentication.headerKey, let headerValue = authentication.headerValue {
req.setValue(headerValue, forHTTPHeaderField: headerKey) req.setValue(headerValue, forHTTPHeaderField: headerKey)
} }
...@@ -106,7 +115,7 @@ public class DataManager: NSObject, URLSessionDelegate ...@@ -106,7 +115,7 @@ public class DataManager: NSObject, URLSessionDelegate
if response.is2xx { if response.is2xx {
self.responseOkFilter.handleResponse(data: data, response: response, responseHandler: responseHandler, sender: sender, promise: promise) self.responseOkFilter.handleResponse(data: data, response: response, responseHandler: responseHandler, sender: sender, promise: promise)
} else if let filter = self.responseFilters[response.statusCode] { } else if let filter = self.responseFilters[response.statusCode] {
filter.handleResponse(request: r, data: data, responseHandler: responseHandler, sender: sender, promise: promise) filter.handleResponse(request: request, data: data, responseHandler: responseHandler, sender: sender, promise: promise)
} else { } else {
promise.fail(error: ResponseError.getErrorForStatusCode(code: response.statusCode)) promise.fail(error: ResponseError.getErrorForStatusCode(code: response.statusCode))
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment