Skip to content

Instantly share code, notes, and snippets.

@boska
Created April 20, 2016 10:01
Show Gist options
  • Select an option

  • Save boska/adcdcdd80069d5a73cbd4b1ad5a37b4d to your computer and use it in GitHub Desktop.

Select an option

Save boska/adcdcdd80069d5a73cbd4b1ad5a37b4d to your computer and use it in GitHub Desktop.
import Moya
enum API {
case Timeline
case Me
case GroupTimeline(id: Int)
case OpenGraph(url: String)
case Places(query: String, longitude: Double, latitude: Double)
case Post(topic :Topic)
}
let APIProvider = MoyaProvider<API>(plugins: [NetworkLoggerPlugin(verbose: true, responseDataFormatter: JSONResponseDataFormatter)])
extension API: TargetType {
var baseURL: NSURL { return NSURL(string: "http://api-secret-app.intentarget.com/v1.0")! }
var path: String {
switch self {
case .Timeline:
return "/timeline"
case .Me(let id):
return "/users/\(id)"
case .GroupTimeline(let id):
return "/group/\(id)/timeline"
case .Post(let topic):
return "/group/\(topic.groupId!)/topic"
case .OpenGraph(_):
return "/search/url/"
case .Places(_):
return "/search/location/"
}
}
var method: Moya.Method {
switch self {
case .Timeline, .Me, .GroupTimeline(_), .OpenGraph(_), .Places(_):
return .GET
case .Post(_):
return .POST
}
}
var parameters: [String: AnyObject]? {
switch self {
case .Timeline, .Me, .GroupTimeline(_):
return nil
case .OpenGraph(let url):
return ["url" : url]
case .Places(let query, let longitude, let latitude):
return ["q" : query, "center" : "\(String(longitude)),\(String(latitude))"]
case .Post(let topic):
return ["content": topic.content!, "anonymous" : "1"]
}
}
var sampleData: NSData { return NSData() }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment