// // ApiError.swift // Pods // // Created by Mauro Bender on 25/8/16. // // import Alamofire public enum ApiError: Error { case network( error: Error, response: DataResponse ) case invalidURL(url: URLConvertible) case jsonSerialization(error: AFError) case unknown( error: Error ) } public extension ApiError { init( response: DataResponse ) { let error = response.result.error! if let statusCode = response.response?.statusCode , !(200...299).contains( statusCode ) { self = .network( error: error, response: response ) } else if let error = error as? AFError { switch error { case .responseSerializationFailed(_): self = .jsonSerialization( error: error ) case .invalidURL(let url): self = .invalidURL(url: url) default: self = .unknown(error: error) } } else { self = .unknown(error: error) } } }