OSDN Git Service

Timerをクロージャ方式にした
[kcd/KCD.git] / KCD / DeckMapper.swift
index f3ec2e4..1cbb939 100644 (file)
@@ -9,49 +9,39 @@
 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"]
         }
     }
 }