From 4b8750c8fdc2a14041f2222d26819ae8229a9b7e Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 25 Apr 2021 21:17:00 +0200 Subject: [PATCH] Add DataManagerDelegate --- AppleLibs/Network/Requests/DataManager.swift | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/AppleLibs/Network/Requests/DataManager.swift b/AppleLibs/Network/Requests/DataManager.swift index 8608170..afaa9dc 100644 --- a/AppleLibs/Network/Requests/DataManager.swift +++ b/AppleLibs/Network/Requests/DataManager.swift @@ -20,6 +20,11 @@ public protocol HttpSuccessFilter 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 enum DataManagerError: Error @@ -52,6 +57,8 @@ public class DataManager: NSObject, URLSessionDelegate private var responseOkFilter: HttpSuccessFilter private var responseFilters: [Int: HttpResponseFilter] = [:] + public var delegate: DataManagerDelegate? + public init(host: Host, responseOkFilter: HttpSuccessFilter, responseFilters: [Int: HttpResponseFilter] = [:], timeout: TimeInterval = 10.0) { self.host = host self.responseOkFilter = responseOkFilter @@ -85,8 +92,10 @@ public class DataManager: NSObject, URLSessionDelegate print("Request: \(r)") } - if var req: URLRequest = createUrlRequest(request: r) { - if let authentication = r.authentication { + let request = delegate?.manipulateRequest(request: r) ?? r + + if var req: URLRequest = createUrlRequest(request: request) { + if let authentication = request.authentication { if let headerKey = authentication.headerKey, let headerValue = authentication.headerValue { req.setValue(headerValue, forHTTPHeaderField: headerKey) } @@ -106,7 +115,7 @@ public class DataManager: NSObject, URLSessionDelegate if response.is2xx { self.responseOkFilter.handleResponse(data: data, response: response, responseHandler: responseHandler, sender: sender, promise: promise) } 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 { promise.fail(error: ResponseError.getErrorForStatusCode(code: response.statusCode)) } -- GitLab