Skip to content

Instantly share code, notes, and snippets.

@damodarnamala
Created April 29, 2018 19:42
Show Gist options
  • Save damodarnamala/5714327412bb4581f6aa803d969552ae to your computer and use it in GitHub Desktop.
Save damodarnamala/5714327412bb4581f6aa803d969552ae to your computer and use it in GitHub Desktop.
import UIKit
import PromiseKit
let GET_POSTS = "https://jsonplaceholder.typicode.com/posts"
struct Post : Codable {
var userId : Int?
var id : Int?
var title : String?
var body : String?
}
extension Alamofire.DataRequest {
// Return a Promise for a Codable
public func responseCodable<T: Codable>() -> Promise<T> {
return Promise { resolver in
responseData(queue: nil) { response in
switch response.result {
case .success(let value):
let decoder = JSONDecoder()
do {
resolver.fulfill(try decoder.decode(T.self, from: value))
} catch let e {
resolver.reject(e)
}
case .failure(let error):
resolver.reject(error)
}
}
}
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let data : [Post] = self.getFeed().then { data in
return data
}
print("\n data \(data.first )")
}
func getFeed() -> Promise<[Post]> {
return Alamofire.request(GET_POSTS).responseDecodable()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment