Created
January 14, 2016 09:33
-
-
Save aaronschubert0/d6dd8b669cdb8109cc34 to your computer and use it in GitHub Desktop.
API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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