Improved error mapping in the Amiibo Live client in the library target.
This commit is contained in:
@@ -372,21 +372,28 @@ private extension AmiiboLiveClient {
|
||||
throw AmiiboServiceError.decoding
|
||||
case let urlError as URLError:
|
||||
switch urlError.code {
|
||||
case .cancelled:
|
||||
throw AmiiboServiceError.cancelled
|
||||
case .cannotParseResponse:
|
||||
throw AmiiboServiceError.decoding
|
||||
case .cannotFindHost,
|
||||
.cannotConnectToHost,
|
||||
.dataNotAllowed,
|
||||
.dnsLookupFailed,
|
||||
.internationalRoamingOff,
|
||||
.networkConnectionLost,
|
||||
.notConnectedToInternet,
|
||||
.secureConnectionFailed,
|
||||
.timedOut:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
default:
|
||||
throw AmiiboServiceError.unknown
|
||||
throw AmiiboServiceError.unknown(String(describing: urlError))
|
||||
}
|
||||
default:
|
||||
throw AmiiboServiceError.unknown
|
||||
throw AmiiboServiceError.unknown(String(describing: clientError.underlyingError))
|
||||
}
|
||||
default:
|
||||
throw AmiiboServiceError.unknown
|
||||
throw AmiiboServiceError.unknown(String(describing: error))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@ public enum AmiiboServiceError: Error {
|
||||
case notFound
|
||||
/// The server returned an undocumented HTTP status code.
|
||||
case undocumented(_ statusCode: Int)
|
||||
/// An unexpected error that does not fall into any other category.
|
||||
case unknown
|
||||
/// An unexpected error that does not fall into any other category, with a description of the underlying error.
|
||||
case unknown(_ description: String)
|
||||
}
|
||||
|
||||
// MARK: - Equatable
|
||||
@@ -50,7 +50,7 @@ extension AmiiboServiceError: LocalizedError {
|
||||
case .notAvailable: "The backend service is currently unreachable due to a network or server issue."
|
||||
case .notFound: "No results were found matching the given filter criteria."
|
||||
case .undocumented(let statusCode): "The server returned an undocumented HTTP status code: \(statusCode)."
|
||||
case .unknown: "An unexpected error occurred."
|
||||
case .unknown(let description): "An unexpected error occurred: \(description)"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -261,6 +261,6 @@ private enum Errors {
|
||||
.notAvailable,
|
||||
.notFound,
|
||||
.undocumented(500),
|
||||
.unknown
|
||||
.unknown("An underlying error description.")
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user