Skip to content

Instantly share code, notes, and snippets.

View macbaszii's full-sized avatar
🏠
Working from home

iMacbaszii macbaszii

🏠
Working from home
View GitHub Profile
typealias UserCompletionBlock = (user: User?, error: NSError?) -> ()
func currentUser(withCompletionBlock completionBlock: UserCompletionBlock) {
Alamofire.request(Router.CurrentUser)
.responseObject(typeOfError: ExampleAPIError.self) { (response: Response<User, NSError>) in
switch response.result {
case .Success(let user):
completionBlock(user: user, error: nil)
case .Failure(let error):
completionBlock(user: nil, error: error)
}
import Foundation
import Alamofire
import ObjectMapper
let DefaultErrorMessage = "ObjectMapper failed to serialize response."
enum ExampleErrorCode: Int {
case DataSerializationError = -6004
case EndpointError = 404
}
switch response.statusCode {
case 200..<400:
break
default:
if let errorParsed = Mapper<E>().map(JSONToMap) {
let failureReason = errorParsed.message
let error = newError(.EndpointError, failureReason:
failureReason ?? DefaultErrorMessage)
return .Failure(error)
}
public static func ObjectMapperSerializer<T: Mappable, E: APIError>(keyPath: String?, mapToObject object: T? = nil, typeOfError errorType: E.Type) -> ResponseSerializer<T, NSError> {
return ResponseSerializer { request, response, data, error in
guard error == nil else {
return .Failure(error!)
}
guard let _ = data else {
let failureReason = "Data could not be serialized. Input data was nil."
let error = newError(.DataSerializationError, failureReason: failureReason)
return .Failure(error)
import Foundation
import ObjectMapper
public protocol APIError: Mappable {
var type: String? { get set }
var message: String? { get set }
}
public class ExampleAPIError: APIError {
public var type: String?
{
"error": {
"type": "endpoint_error",
"message": "Email not invited"
}
}
public static func ObjectMapperSerializer<T: Mappable>(keyPath: String?, mapToObject object: T? = nil, context: MapContext? = nil) -> ResponseSerializer<T, NSError> {
return ResponseSerializer { request, response, data, error in
guard error == nil else {
return .Failure(error!)
}
guard let _ = data else {
let failureReason = "Data could not be serialized. Input data was nil."
let error = newError(.DataSerializationFailed, failureReason: failureReason)
return .Failure(error)
let URL = "https://raw.githubusercontent.com/tristanhimmelman/AlamofireObjectMapper/2ee8f34d21e8febfdefb2b3a403f18a43818d70a/sample_keypath_json"
let expectation = expectationWithDescription("\(URL)")
Alamofire.request(.GET, URL).responseObject(keyPath: "data") { (response: Response<WeatherResponse, NSError>) in
expectation.fulfill()
let weatherResponse = response.result.value
print(weatherResponse?.location)
if let threeDayForecast = weatherResponse?.threeDayForecast {
DispatchQueue.global().async {
// Background thread
DispatchQueue.main.async {
// UI Updates
}
}
import UIKit
import Shimmer
class PlaceholderCell: UITableViewCell {
@IBOutlet var nameShimmerView: FBShimmeringView!
@IBOutlet var emailShimmerView: FBShimmeringView!
override func awakeFromNib() {
super.awakeFromNib()