OSDN Git Service

guard の書き方を統一した
[kcd/KCD.git] / KCD / NyukyoDockMapper.swift
index 9fd3271..d89ba37 100644 (file)
@@ -8,28 +8,36 @@
 
 import Cocoa
 
-fileprivate enum DeckAPI: String {
-    case getMemberNDock = "/kcsapi/api_get_member/ndock"
-    case port = "/kcsapi/api_port/port"
-}
-
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
-    guard let deckApi = DeckAPI(rawValue: apiResponse.api)
-        else { return "api_data" }
-    switch deckApi {
-    case .port: return "api_data.api_ndock"
-    default: return "api_data"
-    }
-}
+final class NyukyoDockMapper: JSONMapper {
+    
+    typealias ObjectType = NyukyoDock
 
-class NyukyoDockMapper: JSONMapper {
     let apiResponse: APIResponse
-    let configuration: MappingConfiguration
+    let configuration: MappingConfiguration<NyukyoDock>
     
     required init(_ apiResponse: APIResponse) {
+        
         self.apiResponse = apiResponse
-        self.configuration = MappingConfiguration(entityType: NyukyoDock.self,
-                                                  dataKey: dataKey(apiResponse),
+        self.configuration = MappingConfiguration(entity: NyukyoDock.entity,
+                                                  dataKeys: NyukyoDockMapper.dataKeys(apiResponse),
                                                   editorStore: ServerDataStore.oneTimeEditor())
     }
+    
+    
+    private enum DeckAPI: String {
+        
+        case getMemberNDock = "/kcsapi/api_get_member/ndock"
+        case port = "/kcsapi/api_port/port"
+    }
+    
+    private class func dataKeys(_ apiResponse: APIResponse) -> [String] {
+        
+        guard let deckApi = DeckAPI(rawValue: apiResponse.api) else { return ["api_data"] }
+        
+        switch deckApi {
+        case .port: return ["api_data", "api_ndock"]
+            
+        case .getMemberNDock: return ["api_data"]
+        }
+    }
 }