The result of trying to write maintainable, clean code:
func fetchNumbersFromServer(completion: @escaping (NumbersResult) -> Void) {
let urlString = "https://some-site.com/some-file"
var request = URLRequest(url: URL.init(string: urlString)!)
// I want to configure the request, yet make the code extenda
request = URLRequest.configure(request: request)
// create URLSession configuration, delegate and session
...
session.dataTask(with: request) { (data, response, error) -> Void in
// handle response
}.resume()
}
extension URLRequest {
static func configure(request: URLRequest) -> URLRequest {
// request in must be made mutable
var request = request
request.setValue("some user agent", forHTTPHeaderField: "User-Agent")
request.timeoutInterval = 10
return request
}
}
By using a type method, this works to modify the request. However, it feels awkward to me, so I was wondering if there was a better (or more effective) way to accomplish 'configuring' the URLRequest.