OSDN Git Service

CoreDataのエンティティ名を文字列でアクセスしないようにした
[kcd/KCD.git] / KCD / DeckMapper.swift
1 //
2 //  DeckMapper.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/02/23.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 fileprivate enum DeckAPI: String {
12     case getMemberDeck = "/kcsapi/api_get_member/deck"
13     case port = "/kcsapi/api_port/port"
14     case getMemberShip2 = "/kcsapi/api_get_member/ship2"
15     case getMemberShip3 = "/kcsapi/api_get_member/ship3"
16     case getMemberShipDeck = "/kcsapi/api_get_member/ship_deck"
17     case getMemberDeckPort = "/kcsapi/api_get_member/deck_port"
18     case henseiPresetSelect = "/kcsapi/api_req_hensei/preset_select"
19     case kaisouPowerUp = "/kcsapi/api_req_kaisou/powerup"
20 }
21
22 fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
23     guard let deckApi = DeckAPI(rawValue: apiResponse.api)
24         else { return "api_data" }
25     switch deckApi {
26     case .port: return "api_data.api_deck_port"
27     case .getMemberShip2: return "api_data_deck"
28     case .getMemberShip3: return "api_data.api_deck_data"
29     case .getMemberShipDeck: return "api_data.api_deck_data"
30     case .kaisouPowerUp: return "api_data.api_deck"
31     default: return "api_data"
32     }
33 }
34
35 class DeckMapper: JSONMapper {
36     let apiResponse: APIResponse
37     let configuration: MappingConfiguration
38     
39     required init(_ apiResponse: APIResponse) {
40         self.apiResponse = apiResponse
41         self.configuration = MappingConfiguration(entity: .deck,
42                                                   dataKey: dataKey(apiResponse),
43                                                   editorStore: ServerDataStore.oneTimeEditor())
44     }
45 }