OSDN Git Service

不要となっていたプロパティを削除
[kcd/KCD.git] / KCD / KenzoDockMapper.swift
index 55e08ca..58349fc 100644 (file)
@@ -8,31 +8,33 @@
 
 import Cocoa
 
-fileprivate enum KenzoDockAPI: String {
-    case getMemberKDock = "/kcsapi/api_get_member/kdock"
-    case kousyouGetShip = "/kcsapi/api_req_kousyou/getship"
-    case getMemberRequireInfo = "/kcsapi/api_get_member/require_info"
-}
-
-fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
-    guard let kenzoDockApi = KenzoDockAPI(rawValue: apiResponse.api)
-        else { return ["api_data"] }
-    switch kenzoDockApi {
-    case .kousyouGetShip: return ["api_data", "api_kdock"]
-    case .getMemberRequireInfo: return ["api_data", "api_kdock"]
-    default: return ["api_data"]
-    }
-}
-
-class KenzoDockMapper: JSONMapper {
-    typealias ObjectType = KenzoDock
+final class KenzoDockMapper: JSONMapper {
+        
     let apiResponse: APIResponse
     let configuration: MappingConfiguration<KenzoDock>
     
     required init(_ apiResponse: APIResponse) {
+        
         self.apiResponse = apiResponse
-        self.configuration = MappingConfiguration(entity: KenzoDock.entity,
-                                                  dataKeys: dataKeys(apiResponse),
-                                                  editorStore: ServerDataStore.oneTimeEditor())
+        self.configuration = MappingConfiguration(entity: KenzoDock.self,
+                                                  dataKeys: KenzoDockMapper.dataKeys(apiResponse),
+                                                  editorStore: ServerDataStore.oneTimeEditor(),
+                                                  ignoreKeys: ["api_member_id"])
+    }
+    
+    private class func dataKeys(_ apiResponse: APIResponse) -> [String] {
+        
+        switch apiResponse.api.endpoint {
+            
+        case .getShip, .requireInfo: return ["api_data", "api_kdock"]
+                        
+        case .kdock: return ["api_data"]
+            
+        default:
+            
+            Logger.shared.log("Missing API: \(apiResponse.api)")
+            
+            return ["api_data"]
+        }
     }
 }