diff --git a/Sources/Internal/Transcoders/ISOTimestampTranscoder.swift b/Sources/Internal/Transcoders/ISOTimestampTranscoder.swift index 887cd63..90eb7c2 100644 --- a/Sources/Internal/Transcoders/ISOTimestampTranscoder.swift +++ b/Sources/Internal/Transcoders/ISOTimestampTranscoder.swift @@ -17,7 +17,8 @@ import OpenAPIRuntime struct ISOTimestampTranscoder { // MARK: Properties - + + /// A formatter to use to decode and encode ISO timestamps dates. private let dateFormatter: DateFormatter = .isoTimestamp } diff --git a/Sources/Public/Services/AmiiboService.swift b/Sources/Public/Services/AmiiboService.swift index 2b9c508..8fea32e 100644 --- a/Sources/Public/Services/AmiiboService.swift +++ b/Sources/Public/Services/AmiiboService.swift @@ -12,51 +12,81 @@ import Foundation +/// A type that implements the service that uses a client to make calls. public struct AmiiboService { // MARK: Properties + /// A client to interact with the endpoints. private let client: any APIClient - // MARK: Initialisers - - public init(_ client: any APIClient) { - self.client = client + // MARK: Initializers + + /// Initializes this service with a specific client type. + /// - Parameter client: A representation of a client to use to interact with the endpoints. + public init(_ client: AmiiboClient) { + self.client = switch client { + case let .mock(mockClient): mockClient + case let .live(liveClient): liveClient + } } // MARK: Functions - + + /// Gets a list of amiibo items based on a given filter. + /// - Parameter filter: A filter to remove unwanted items from the result. + /// - Returns: A list of filtered amiibo items. + /// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result. public func getAmiibos( _ filter: AmiiboFilter = .init() - ) async throws -> [Amiibo] { + ) async throws(AmiiboServiceError) -> [Amiibo] { try await client.getAmiibos(by: filter) } - + + /// Gets a list of amiibo series based on a given filter. + /// - Parameter filter: A filter to remove unwanted items from the result. + /// - Returns: A list of filtered amiibo series. + /// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result. public func getAmiiboSeries( _ filter: AmiiboSeriesFilter = .init() - ) async throws -> [AmiiboSeries] { + ) async throws(AmiiboServiceError) -> [AmiiboSeries] { try await client.getAmiiboSeries(by: filter) } - + + /// Gets a list of amiibo types based on a given filter. + /// - Parameter filter: A filter to remove unwanted items from the result. + /// - Returns: A list of filtered amiibo types. + /// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result. public func getAmiiboTypes( _ filter: AmiiboTypeFilter = .init() - ) async throws -> [AmiiboType] { + ) async throws(AmiiboServiceError) -> [AmiiboType] { try await client.getAmiiboTypes(by: filter) } - + + /// Gets a list of game characters based on a given filter. + /// - Parameter filter: A filter to remove unwanted items from the result. + /// - Returns: A list of filtered game characters. + /// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result. public func getGameCharacters( _ filter: GameCharacterFilter = .init() - ) async throws -> [GameCharacter] { + ) async throws(AmiiboServiceError) -> [GameCharacter] { try await client.getGameCharacters(by: filter) } - + + /// Gets a list of game series based on a given filter. + /// - Parameter filter: A filter to remove unwanted items from the result. + /// - Returns: A list of filtered game series. + /// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result. public func getGameSeries( _ filter: GameSeriesFilter = .init() - ) async throws -> [GameSeries] { + ) async throws(AmiiboServiceError) -> [GameSeries] { try await client.getGameSeries(by: filter) } - - public func getLastUpdated() async throws -> Date { + + /// Gets the date when the data was last updated. + /// - Returns: A last updated date. + /// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result. + public func getLastUpdated() async throws(AmiiboServiceError) -> Date { try await client.getLastUpdated() } diff --git a/Tests/Public/Services/AmiiboServiceLiveTests.swift b/Tests/Public/Services/AmiiboServiceLiveTests.swift index 7c581ee..25d4774 100644 --- a/Tests/Public/Services/AmiiboServiceLiveTests.swift +++ b/Tests/Public/Services/AmiiboServiceLiveTests.swift @@ -23,10 +23,8 @@ struct AmiiboServiceLiveTests { // MARK: Initialisers - init() throws { - let client = try AmiiboLiveClient() - - self.service = .init(client) + init() { + self.service = .init(.live()) } // MARK: Functions tests