Skip to content

Latest commit

 

History

History
47 lines (44 loc) · 1.54 KB

File metadata and controls

47 lines (44 loc) · 1.54 KB

Errors

  • If an error is returned in a network request QuickHatchHTTP provides an enum with errors
public enum RequestError: Error, Equatable {
    case unauthorized
    case unknownError(statusCode: Int)
    case cancelled
    case noResponse
    case requestWithError(statusCode: HTTPStatusCode)
    case serializationError(error: Error)
    case invalidParameters
    case malformedRequest
    case other(error: Error)
}	

Now if we want to check what error is..

import QuickHatch

class LoginViewPresenter {
    private let networkRequestFactory: NetworkRequestFactory
    private weak var view: LoginView

    init(requestFactory: NetworkRequestFactory, view: LoginView) {
        self.networkRequestFactory = requestFactory
        self.view = view
    }

    func login(user: String, password: String) {
        let request = URLRequest("getimage.com/user=\(user)&password=\(password)")
        networkRequestFactory.data(urlRequest: request) { result in
        switch result {
            case .success(let response):
                // show error messsage
                view?.showSuccessMessage(response.data)
            case .failure(let error):
                //show message or nothing
                if let requestError = error as? RequestError,
                    requestError == .unauthorized {
                    //show auth error
                }
                view?.showErrorMessage("Error downloading profile image")
        }
    }
}	

In this sample we are checking whether the error is unauthorized type or not.