Resolves the server URL for the Amiibo Live client in the library target once as a static constant.

This commit is contained in:
2026-07-26 01:31:28 +02:00
parent 70581d7787
commit fa4fb21351
2 changed files with 60 additions and 5 deletions
@@ -19,6 +19,19 @@ import OpenAPIURLSession
/// A type that implements a live client to the [Amiibo API](https://www.amiiboapi.org) online service.
public struct AmiiboLiveClient: Sendable {
// MARK: Constants
/// The base URL of the live service, resolved once from the server defined in the OpenAPI specification.
///
/// The validity of the URL is guaranteed by the bundled `openapi.yaml` specification and enforced by a unit test, so resolution is not expected to fail at runtime.
static let serverURL: URL = {
guard let url = 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.")
}
return url
}()
// MARK: Properties
/// A client generated by the OpenAPI Runtime library to perform API calls.
@@ -29,12 +42,8 @@ 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(
serverURL: serverURL,
serverURL: Self.serverURL,
configuration: .init(dateTranscoder: ISODateTimeTranscoder()),
transport: transport
)