diff --git a/Sources/Models/Amiibo.swift b/Sources/Models/Amiibo.swift new file mode 100644 index 0000000..7199c01 --- /dev/null +++ b/Sources/Models/Amiibo.swift @@ -0,0 +1,18 @@ +public struct Amiibo { + public let type: String + public let head: String + public let tail: String + public let name: String + public let character: String + public let amiiboSeries: String + public let gameSeries: String + public let image: String + public let release: Release + public let games3DS: [Game]? + public let gamesWiiU: [Game]? + public let gamesSwitch: [Game]? +} + +// MARK: - Decodable + +extension Amiibo: Decodable {} diff --git a/Sources/Models/AmiiboGame.swift b/Sources/Models/AmiiboGame.swift new file mode 100644 index 0000000..9abefcc --- /dev/null +++ b/Sources/Models/AmiiboGame.swift @@ -0,0 +1,17 @@ +extension Amiibo { + public struct Game { + public let identifiers: [String] + public let name: String + public let usage: [Usage] + } +} + +// MARK: - Decodable + +extension Amiibo.Game: Decodable { + enum CodingKeys: String, CodingKey { + case identifiers = "gameID" + case name = "gameName" + case usage = "amiiboUsage" + } +} diff --git a/Sources/Models/AmiiboRelease.swift b/Sources/Models/AmiiboRelease.swift new file mode 100644 index 0000000..a53c7a1 --- /dev/null +++ b/Sources/Models/AmiiboRelease.swift @@ -0,0 +1,21 @@ +import Foundation + +extension Amiibo { + public struct Release { + public let australia: Date? + public let europe: Date? + public let japan: Date? + public let america: Date? + } +} + +// MARK: - Decodable + +extension Amiibo.Release: Decodable { + enum CodingKeys: String, CodingKey { + case australia = "au" + case europe = "eu" + case japan = "jp" + case america = "na" + } +} diff --git a/Sources/Models/AmiiboUsage.swift b/Sources/Models/AmiiboUsage.swift new file mode 100644 index 0000000..ee07b16 --- /dev/null +++ b/Sources/Models/AmiiboUsage.swift @@ -0,0 +1,15 @@ +extension Amiibo { + public struct Usage { + public let explanation: String + public let isWritable: Bool + } +} + +// MARK: - Decodable + +extension Amiibo.Usage: Decodable { + enum CodingKeys: String, CodingKey { + case explanation = "Usage" + case isWritable = "write" + } +} diff --git a/Sources/Models/KeyName.swift b/Sources/Models/KeyName.swift new file mode 100644 index 0000000..f606206 --- /dev/null +++ b/Sources/Models/KeyName.swift @@ -0,0 +1,15 @@ +public struct KeyName { + public let key: String + public let name: String? +} + +// MARK: - Decodable + +extension KeyName: Decodable {} + +// MARK: - Type aliases + +public typealias AmiiboType = KeyName +public typealias AmiiboSeries = KeyName +public typealias GameSeries = KeyName +public typealias Character = KeyName diff --git a/Sources/Models/LastUpdated.swift b/Sources/Models/LastUpdated.swift new file mode 100644 index 0000000..0fefe45 --- /dev/null +++ b/Sources/Models/LastUpdated.swift @@ -0,0 +1,13 @@ +import Foundation + +public struct LastUpdated { + public let timestamp: Date +} + +// MARK: - Decodable + +extension LastUpdated: Decodable { + enum CodingKeys: String, CodingKey { + case timestamp = "lastUpdated" + } +}