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"]
+ }
}
}