From 661ff940a4077e90697f4a17eecb7673b6fb4905 Mon Sep 17 00:00:00 2001 From: Linus Date: Fri, 15 Jun 2018 15:25:26 +0200 Subject: [PATCH 1/3] added convenient progress handler for all requests --- Source/Operation.swift | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Source/Operation.swift b/Source/Operation.swift index 90e2b41..2e1123a 100644 --- a/Source/Operation.swift +++ b/Source/Operation.swift @@ -212,8 +212,8 @@ open class HTTP { Class method to run a GET request that handles the URLRequest and parameter encoding for you. */ @discardableResult open class func GET(_ url: String, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, - requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), completionHandler: ((Response) -> Void)? = nil) -> HTTP? { - return Run(url, method: .GET, parameters: parameters, headers: headers, requestSerializer: requestSerializer, completionHandler: completionHandler) + requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), progressHandler: ((Float) -> Void)? = nil, completionHandler: ((Response) -> Void)? = nil) -> HTTP? { + return Run(url, method: .GET, parameters: parameters, headers: headers, requestSerializer: requestSerializer, progressHandler: progressHandler, completionHandler: completionHandler) } /** @@ -233,27 +233,27 @@ open class HTTP { /** Class method to run a POST request that handles the URLRequest and parameter encoding for you. */ - @discardableResult open class func POST(_ url: String, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), completionHandler: ((Response) -> Void)? = nil) -> HTTP? { - return Run(url, method: .POST, parameters: parameters, headers: headers, requestSerializer: requestSerializer, completionHandler: completionHandler) + @discardableResult open class func POST(_ url: String, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), progressHandler: ((Float) -> Void)? = nil, completionHandler: ((Response) -> Void)? = nil) -> HTTP? { + return Run(url, method: .POST, parameters: parameters, headers: headers, requestSerializer: requestSerializer, progressHandler: progressHandler, completionHandler: completionHandler) } /** Class method to run a PUT request that handles the URLRequest and parameter encoding for you. */ @discardableResult open class func PUT(_ url: String, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, - requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), completionHandler: ((Response) -> Void)? = nil) -> HTTP? { - return Run(url, method: .PUT, parameters: parameters, headers: headers, requestSerializer: requestSerializer, completionHandler: completionHandler) + requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), progressHandler: ((Float) -> Void)? = nil, completionHandler: ((Response) -> Void)? = nil) -> HTTP? { + return Run(url, method: .PUT, parameters: parameters, headers: headers, requestSerializer: requestSerializer, progressHandler: progressHandler, completionHandler: completionHandler) } /** - Class method to run a PUT request that handles the URLRequest and parameter encoding for you. + Class method to run a PATCH request that handles the URLRequest and parameter encoding for you. */ @discardableResult open class func PATCH(_ url: String, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), completionHandler: ((Response) -> Void)? = nil) -> HTTP? { return Run(url, method: .PATCH, parameters: parameters, headers: headers, requestSerializer: requestSerializer, completionHandler: completionHandler) } - @discardableResult class func Run(_ url: String, method: HTTPVerb, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), completionHandler: ((Response) -> Void)? = nil) -> HTTP? { - guard let task = HTTP.New(url, method: method, parameters: parameters, headers: headers, requestSerializer: requestSerializer, completionHandler: completionHandler) else {return nil} + @discardableResult class func Run(_ url: String, method: HTTPVerb, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), progressHandler: ((Float) -> Void)? = nil, completionHandler: ((Response) -> Void)? = nil) -> HTTP? { + guard let task = HTTP.New(url, method: method, parameters: parameters, headers: headers, requestSerializer: requestSerializer, progressHandler: progressHandler, completionHandler: completionHandler) else {return nil} task.run() return task } @@ -262,8 +262,8 @@ open class HTTP { Class method to create a Download request that handles the URLRequest and parameter encoding for you. */ open class func Download(_ url: String, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, - requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), completion:@escaping ((Response, URL) -> Void)) { - guard let task = HTTP.New(url, method: .GET, parameters: parameters, headers: headers, requestSerializer: requestSerializer) else {return} + requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), progressHandler: ((Float) -> Void)? = nil, completion:@escaping ((Response, URL) -> Void)) { + guard let task = HTTP.New(url, method: .GET, parameters: parameters, headers: headers, requestSerializer: requestSerializer, progressHandler: progressHandler) else {return} task.downloadHandler = completion task.run() } @@ -271,7 +271,7 @@ open class HTTP { /** Class method to create a HTTP request that handles the URLRequest and parameter encoding for you. */ - open class func New(_ url: String, method: HTTPVerb, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), completionHandler: ((Response) -> Void)? = nil) -> HTTP? { + open class func New(_ url: String, method: HTTPVerb, parameters: HTTPParameterProtocol? = nil, headers: [String:String]? = nil, requestSerializer: HTTPSerializeProtocol = HTTPParameterSerializer(), progressHandler: ((Float) -> Void)? = nil, completionHandler: ((Response) -> Void)? = nil) -> HTTP? { guard var req = URLRequest(urlString: url, headers: headers) else { guard let handler = completionHandler else { return nil } let resp = Response() @@ -293,6 +293,7 @@ open class HTTP { } } let httpReq = HTTP(req) + httpReq.progress = progressHandler httpReq.onFinish = completionHandler return httpReq } From 45117a9b0c554f0893ce0187c3a8dea3d7a095b2 Mon Sep 17 00:00:00 2001 From: Linus Date: Mon, 25 Jun 2018 11:29:55 +0200 Subject: [PATCH 2/3] Arrays now converted to string and passed as parameter Arrays now properly converted to string such as "['1', '2']" and passed to request as parameter. Fixes #293. --- Source/Request.swift | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Source/Request.swift b/Source/Request.swift index 6767352..d92cab0 100644 --- a/Source/Request.swift +++ b/Source/Request.swift @@ -132,7 +132,7 @@ extension Dictionary: HTTPParameterProtocol { Support for the Array type as an HTTPParameter. */ extension Array: HTTPParameterProtocol { - + /* public func createPairs(_ key: String?) -> [HTTPPair] { var collect = [HTTPPair]() for v in self { @@ -148,6 +148,19 @@ extension Array: HTTPParameterProtocol { } return collect } + */ + + public func createPairs(_ key: String?) -> [HTTPPair] { + let pair: HTTPPair = HTTPPair(key: (key != nil ? "\(key!)" : key), value: self.stringRepresentation) + return [pair] + } + + var stringRepresentation: String { + var str = "[" + self.forEach { str += "\($0)," } + str = String(str.dropLast()) // drops last comma + return str + "]" + } } /** From c6e8e445ddc8215d8b0daea3baf43284f548d74c Mon Sep 17 00:00:00 2001 From: Linus Date: Mon, 25 Jun 2018 17:08:10 +0200 Subject: [PATCH 3/3] was not a good idea... --- Source/Request.swift | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/Source/Request.swift b/Source/Request.swift index d92cab0..6767352 100644 --- a/Source/Request.swift +++ b/Source/Request.swift @@ -132,7 +132,7 @@ extension Dictionary: HTTPParameterProtocol { Support for the Array type as an HTTPParameter. */ extension Array: HTTPParameterProtocol { - /* + public func createPairs(_ key: String?) -> [HTTPPair] { var collect = [HTTPPair]() for v in self { @@ -148,19 +148,6 @@ extension Array: HTTPParameterProtocol { } return collect } - */ - - public func createPairs(_ key: String?) -> [HTTPPair] { - let pair: HTTPPair = HTTPPair(key: (key != nil ? "\(key!)" : key), value: self.stringRepresentation) - return [pair] - } - - var stringRepresentation: String { - var str = "[" - self.forEach { str += "\($0)," } - str = String(str.dropLast()) // drops last comma - return str + "]" - } } /**