From 8149aac7ac7b7cf1bce33b842e17e1cfd3c7a766 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sun, 19 Sep 2021 22:07:15 +0200
Subject: [PATCH] Add HostCallback

---
 AppleLibs/Network/Requests/DataManager.swift | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/AppleLibs/Network/Requests/DataManager.swift b/AppleLibs/Network/Requests/DataManager.swift
index afaa9dc..07400ab 100644
--- a/AppleLibs/Network/Requests/DataManager.swift
+++ b/AppleLibs/Network/Requests/DataManager.swift
@@ -46,9 +46,11 @@ public class DataManager: NSObject, URLSessionDelegate
             self.context = context
         }
     }
+    
+    public typealias HostCallback = () -> Host
 
     private let timeout: TimeInterval
-    public private(set) var host: Host
+    public private(set) var hostCallback: HostCallback
 
     private lazy var urlSession: URLSession = {
         URLSession(configuration: .default, delegate: self, delegateQueue: OperationQueue.main)
@@ -59,8 +61,12 @@ public class DataManager: NSObject, URLSessionDelegate
 
     public var delegate: DataManagerDelegate?
     
-    public init(host: Host, responseOkFilter: HttpSuccessFilter, responseFilters: [Int: HttpResponseFilter] = [:], timeout: TimeInterval = 10.0) {
-        self.host = host
+    public convenience init(host: Host, responseOkFilter: HttpSuccessFilter, responseFilters: [Int: HttpResponseFilter] = [:], timeout: TimeInterval = 10.0) {
+        self.init(hostCallback: { host }, responseOkFilter: responseOkFilter, responseFilters: responseFilters, timeout: timeout)
+    }
+    
+    public required init(hostCallback: @escaping HostCallback, responseOkFilter: HttpSuccessFilter, responseFilters: [Int: HttpResponseFilter] = [:], timeout: TimeInterval = 10.0) {
+        self.hostCallback = hostCallback
         self.responseOkFilter = responseOkFilter
         self.responseFilters = responseFilters
         self.timeout = timeout
@@ -68,6 +74,7 @@ public class DataManager: NSObject, URLSessionDelegate
     }
 
     public func url(username: String = "", password: String = "", path: String) -> String {
+        let host = hostCallback()
         var url: String = host.protocol
 
         if !username.isEmpty || !password.isEmpty {
-- 
GitLab