import Cocoa
final class DeckMapper: JSONMapper {
-
- typealias ObjectType = Deck
-
+
let apiResponse: APIResponse
let configuration: MappingConfiguration<Deck>
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entity: Deck.entity,
+ self.configuration = MappingConfiguration(entity: Deck.self,
dataKeys: DeckMapper.dataKeys(apiResponse),
- editorStore: ServerDataStore.oneTimeEditor())
- }
-
-
- private enum DeckAPI: String {
-
- case getMemberDeck = "/kcsapi/api_get_member/deck"
- case port = "/kcsapi/api_port/port"
- case getMemberShip2 = "/kcsapi/api_get_member/ship2"
- case getMemberShip3 = "/kcsapi/api_get_member/ship3"
- case getMemberShipDeck = "/kcsapi/api_get_member/ship_deck"
- case getMemberDeckPort = "/kcsapi/api_get_member/deck_port"
- case henseiPresetSelect = "/kcsapi/api_req_hensei/preset_select"
- case kaisouPowerUp = "/kcsapi/api_req_kaisou/powerup"
+ editorStore: ServerDataStore.oneTimeEditor(),
+ ignoreKeys: ["api_flagship", "api_member_id", "api_name_id"])
}
private class func dataKeys(_ apiResponse: APIResponse) -> [String] {
- guard let deckApi = DeckAPI(rawValue: apiResponse.api) else { return ["api_data"] }
-
- switch deckApi {
+ switch apiResponse.api.endpoint {
+
case .port: return ["api_data", "api_deck_port"]
- case .getMemberShip2: return ["api_data_deck"]
+ case .ship3, .shipDeck: return ["api_data", "api_deck_data"]
+
+ case .ship2: return ["api_data_deck"]
+
+ case .powerup: return ["api_data", "api_deck"]
+
+ case .deck, .deckPort, .presetSelect: return ["api_data"]
- case .getMemberShip3: return ["api_data", "api_deck_data"]
+ default:
- case .getMemberShipDeck: return ["api_data", "api_deck_data"]
+ Logger.shared.log("Missing API: \(apiResponse.api)")
- case .kaisouPowerUp: return ["api_data", "api_deck"]
+ return ["api_data"]
- case .getMemberDeck, .getMemberDeckPort, .henseiPresetSelect: return ["api_data"]
}
}
}