OSDN Git Service

クラス内でしか使わないenumと関数をクラス内に隠蔽した
[kcd/KCD.git] / KCD / KenzoDockMapper.swift
1 //
2 //  KenzoDockMapper.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/02/25.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 final class KenzoDockMapper: JSONMapper {
12     
13     typealias ObjectType = KenzoDock
14     
15     let apiResponse: APIResponse
16     let configuration: MappingConfiguration<KenzoDock>
17     
18     required init(_ apiResponse: APIResponse) {
19         
20         self.apiResponse = apiResponse
21         self.configuration = MappingConfiguration(entity: KenzoDock.entity,
22                                                   dataKeys: KenzoDockMapper.dataKeys(apiResponse),
23                                                   editorStore: ServerDataStore.oneTimeEditor())
24     }
25     
26     
27     private enum KenzoDockAPI: String {
28         
29         case getMemberKDock = "/kcsapi/api_get_member/kdock"
30         case kousyouGetShip = "/kcsapi/api_req_kousyou/getship"
31         case getMemberRequireInfo = "/kcsapi/api_get_member/require_info"
32     }
33     
34     private class func dataKeys(_ apiResponse: APIResponse) -> [String] {
35         
36         guard let kenzoDockApi = KenzoDockAPI(rawValue: apiResponse.api)
37             else { return ["api_data"] }
38         
39         switch kenzoDockApi {
40         case .kousyouGetShip: return ["api_data", "api_kdock"]
41             
42         case .getMemberRequireInfo: return ["api_data", "api_kdock"]
43             
44         case .getMemberKDock: return ["api_data"]
45         }
46     }
47 }