diff --git a/AppleLibs/Network/Requests/DataManager.swift b/AppleLibs/Network/Requests/DataManager.swift index a8827ad07babfeb1e23266981b4cf3831c061d71..b01a8b7e74769c876ff6a22cf6853753d0f0bdcd 100644 --- a/AppleLibs/Network/Requests/DataManager.swift +++ b/AppleLibs/Network/Requests/DataManager.swift @@ -138,7 +138,7 @@ open class DataManager: NSObject, URLSessionDelegate req.setValue("application/json", forHTTPHeaderField: "Accept") } - req.timeoutInterval = self.timeout + req.timeoutInterval = request.timeout ?? self.timeout if let authentication = request.authentication { if let headerKey = authentication.headerKey, let headerValue = authentication.headerValue { diff --git a/AppleLibs/Network/Requests/Request.swift b/AppleLibs/Network/Requests/Request.swift index adc8fb5b6f3b3f0d36cdec9e3d63c7d462751981..3fd6091d0599fcb301371dc0cd9a571d2b20466a 100644 --- a/AppleLibs/Network/Requests/Request.swift +++ b/AppleLibs/Network/Requests/Request.swift @@ -70,8 +70,10 @@ public class Request: CustomStringConvertible public var payload: Data? public var contentType: String? + + public var timeout: TimeInterval? - public init(url: String, method: RequestMethod, authentication: Authentication?, parameters: [String: String] = [:], payload: Data? = nil, contentType: String?) { + public init(url: String, method: RequestMethod, authentication: Authentication?, parameters: [String: String] = [:], payload: Data? = nil, contentType: String?, timeout: TimeInterval?) { self.url = url self.method = method self.authentication = authentication @@ -82,6 +84,7 @@ public class Request: CustomStringConvertible } else { self.contentType = nil } + self.timeout = timeout } public func constructUrl() -> URL? { diff --git a/AppleLibs/Network/Requests/RequestBuilder.swift b/AppleLibs/Network/Requests/RequestBuilder.swift index 00b2e2d8797dedb1555abfffc7d7f93e3525e737..90e1acd10e58feb60bc27fefeb550bfb433f7bb8 100644 --- a/AppleLibs/Network/Requests/RequestBuilder.swift +++ b/AppleLibs/Network/Requests/RequestBuilder.swift @@ -20,6 +20,7 @@ public class RequestBuilder private var parameters: [String: String] = [:] private var payload: Data? private var contentType: String? + private var timeout: TimeInterval? public func url(_ url: String) -> RequestBuilder { self.url = url @@ -58,7 +59,12 @@ public class RequestBuilder return self } + public func timeout(timeout: TimeInterval) -> RequestBuilder { + self.timeout = timeout + return self + } + public func build() -> Request { - Request(url: url, method: method, authentication: authentication, parameters: parameters, payload: payload, contentType: contentType) + Request(url: url, method: method, authentication: authentication, parameters: parameters, payload: payload, contentType: contentType, timeout: timeout) } }