DDRouter/Error/APIError.swift (19 lines of code) (raw):

import Foundation // MARK: - APIErrorModelProtocol // implement this protocol and pass implementation type as generic // parameter to the router and APIError types public protocol APIErrorModelProtocol: Decodable {} // MARK: - APIError // TODO: change this to correspond to normal status codes /// An error type usedor http public enum APIError<APIErrorModel: APIErrorModelProtocol>: Error { // General (internal) errors case serializeError(Error?) case internalError case nullData // 4xx Client errors /// HTTP Code 400 case badRequest(APIErrorModel?) /// HTTP Code 401 case unauthorized(APIErrorModel?) /// HTTP Code 403 case forbidden(APIErrorModel?) /// HTTP Code 404 case notFound /// HTTP Code 409 case conflict(APIErrorModel?) /// HTTP Code 429 case tooManyRequests // 5xx Server errors /// HTTP Code 500 case serverError(APIErrorModel?) /// HTTP Code 503 case serviceUnavailable // Network/connection errors case networkError // Low level network problems, e.g. can't connect, timeouts case insecureConnection // Thrown when NSURLSession detects security related network problems // Other errors case logoutError // Relogin failed, will be logged out directly // Unknown error case unknownError(APIErrorModel?) // Catch all }