Skip to content

Instantly share code, notes, and snippets.

@smonn
Created March 1, 2016 13:33
Show Gist options
  • Save smonn/aa561801b52aeb02d880 to your computer and use it in GitHub Desktop.
Save smonn/aa561801b52aeb02d880 to your computer and use it in GitHub Desktop.
import Foundation
class WebRequest: NSObject {
let request: NSMutableURLRequest
init(method: String, url: String) {
self.request = NSMutableURLRequest(URL: NSURL(string: url)!)
self.request.HTTPMethod = method
}
class func GET(url: String) -> WebRequest {
return WebRequest(method: "GET", url: url)
}
class func POST(url: String) -> WebRequest {
return WebRequest(method: "POST", url: url)
}
class func PUT(url: String) -> WebRequest {
return WebRequest(method: "PUT", url: url)
}
class func DELETE(url: String) -> WebRequest {
return WebRequest(method: "DELETE", url: url)
}
func setHeader(value: String, key: String) -> WebRequest {
self.request.addValue(value, forHTTPHeaderField: key)
return self
}
func setBodyWithString(string: String) -> WebRequest {
return self.setBody(string.dataUsingEncoding(NSUTF8StringEncoding))
}
func setBody(data: NSData?) -> WebRequest {
self.request.HTTPBody = data
return self
}
func send(done: (NSData?, NSURLResponse?, NSError?) -> Void) -> NSURLSessionDataTask {
let task = NSURLSession
.sharedSession()
.dataTaskWithRequest(self.request, completionHandler: done)
task.resume()
return task
}
}
WebRequest.POST("https://www.example.com/token")
.setBodyWithString("client_id=aaa&client_secret=bbb&grant_type=client_credentials")
.setHeader("application/json", key: "Accept")
.setHeader("application/x-www-form-urlencoded", key: "Content-Type")
.send({(data, response, error) in
print(data)
print(response)
print(error)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment