Tests updates and other fixes (#27)
This PR contains the work done to update the live test data to its latest version. Plus other improvements have been made: * conformed the `AmiiboServiceError` error to the `LocalizableError` protocol, * improved the `ISODateTimeTranscoder` transcoder to handle the decoding of both ISO dates and timestamps, * removed a force-unwrapped from the `AmiiboLiveClient` type. Reviewed-on: #27 Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
This commit was merged in pull request #27.
This commit is contained in:
@@ -29,10 +29,13 @@ public struct AmiiboLiveClient: Sendable {
|
||||
/// Initializes this client with a transport for performing HTTP operations.
|
||||
/// - Parameter transport: A transport that performs HTTP operations. Defaults to a `URLSessionTransport` using the shared session.
|
||||
public init(transport: any ClientTransport = URLSessionTransport()) {
|
||||
guard let serverURL = try? Servers.Server1.url() else {
|
||||
fatalError("The server URL defined in the OpenAPI specification could not be resolved. Verify that the 'openapi.yaml' server definition is valid.")
|
||||
}
|
||||
|
||||
self.client = .init(
|
||||
// The force unwrapping implemented below assumes that the server definition from the OpenAPI specification is correct.
|
||||
serverURL: try! Servers.Server1.url(),
|
||||
configuration: .init(dateTranscoder: ISOTimestampTranscoder()),
|
||||
serverURL: serverURL,
|
||||
configuration: .init(dateTranscoder: ISODateTimeTranscoder()),
|
||||
transport: transport
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
//
|
||||
// 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.
|
||||
@@ -33,3 +35,23 @@ public enum AmiiboServiceError: Error {
|
||||
// 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."
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user