58 lines
2.1 KiB
Swift
58 lines
2.1 KiB
Swift
// ===----------------------------------------------------------------------===
|
|
//
|
|
// This source file is part of the Amiibo Service open source project
|
|
//
|
|
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
|
|
// Licensed under Apache license v2.0
|
|
//
|
|
// See LICENSE for license information
|
|
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
// ===----------------------------------------------------------------------===
|
|
|
|
import Foundation
|
|
|
|
/// A representation of all the possible errors that the ``AmiiboService`` service could throw.
|
|
public enum AmiiboServiceError: Error {
|
|
/// The request was malformed or contained invalid filter parameters.
|
|
case badRequest
|
|
/// The request was cancelled before a response was received.
|
|
case cancelled
|
|
/// The response body could not be decoded into the expected model.
|
|
case decoding
|
|
/// The backend service is currently unreachable due to a network or server issue.
|
|
case notAvailable
|
|
/// No results were found matching the given filter criteria.
|
|
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
|
|
}
|
|
|
|
// MARK: - Equatable
|
|
|
|
extension AmiiboServiceError: Equatable {}
|
|
|
|
// MARK: - LocalizedError
|
|
|
|
extension AmiiboServiceError: LocalizedError {
|
|
|
|
// MARK: Properties
|
|
|
|
public var errorDescription: String? {
|
|
switch self {
|
|
case .badRequest: "The request was malformed or contained invalid filter parameters."
|
|
case .cancelled: "The request was cancelled before a response was received."
|
|
case .decoding: "The response body could not be decoded into the expected model."
|
|
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."
|
|
}
|
|
}
|
|
|
|
}
|