Skip to content

Instantly share code, notes, and snippets.

@aaronschubert0
Created January 14, 2016 09:33
Show Gist options
  • Save aaronschubert0/d6dd8b669cdb8109cc34 to your computer and use it in GitHub Desktop.
Save aaronschubert0/d6dd8b669cdb8109cc34 to your computer and use it in GitHub Desktop.
API
import Foundation
enum APIRequest {
case GET
case POST
}
struct Parameter {
let key: String!
let value: String!
init(key: String, value: String) {
self.key = key
self.value = value
}
func stringValue() -> String {
return "\(self.key)=\(self.value)"
}
}
struct API {
var requestURL: String!
var requestType: APIRequest!
var data: NSData!
var baseURL: String!
init() {
self.baseURL = "http://player.api.stv.tv/v1/"
}
}
extension API {
func get(url: String) -> API{
var api = API()
api.requestURL = api.baseURL
api.requestURL.appendContentsOf(url)
api.requestType = .GET
return api
}
func parameters(parameters: [Parameter]) -> API {
var api = self
api.requestURL.appendContentsOf("?")
for (index, parameter) in parameters.enumerate() {
if index > 0 {
api.requestURL.appendContentsOf("&")
}
api.requestURL.appendContentsOf(parameter.stringValue())
}
return api
}
func go(completion: (NSData? -> Void)) {
let session = NSURLSession.sharedSession()
print(NSURL(string: self.requestURL)!)
let task = session.dataTaskWithURL(NSURL(string: self.requestURL)!) { (let data, let response, let error) -> Void in
completion(data)
}
task.resume()
}
}
let pam1 = Parameter(key: "groupToken", value: "371")
let pam2 = Parameter(key: "limit", value: "3")
let parameters = [pam1, pam2]
API().get("programmes/recommended").parameters(parameters).go(){data in
print(data)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment