freshOS / ws-deprecated

⚠️ Deprecated - (in favour of Networking) :cloud: Elegantly connect to a JSON api. (Alamofire + Promises + JSON Parsing)
MIT License
353 stars 32 forks source link

Parameter Encoding in WSRequest #57

Open lernamanto opened 6 years ago

lernamanto commented 6 years ago

I am using WS to send requests to an API, and my request always fails when the verb is DELETE.

I have digged into it and the reason is that for the DELETE requests the parameters Encoding is always set to "URLEncoding.default", even if in my implementation I try to pass a different one.

In the method is buildRequest() in the WSRequest.swift file, there is this code which sets the encoding to URLEncoding.default for anything else than POST or PUT:

var request: URLRequest? if httpVerb == .post || httpVerb == .put { request = try? postParameterEncoding.encode(r, with: params) } else { request = try? URLEncoding.default.encode(r, with: params) } return request ?? r

I have change this to the following:

var request: URLRequest? if httpVerb == .post || httpVerb == .put || httpVerb == .delete { request = try? postParameterEncoding.encode(r, with: params) } else { request = try? URLEncoding.default.encode(r, with: params) } return request ?? r

And now the DELETE requests work fine.

However when I'll download future updates I'll have to do it again.

Would it not be better to just have this:

var request: URLRequest? request = try? postParameterEncoding.encode(r, with: params) return request ?? r

And let the user pass the encoding needed?

Thanks