OSDN Git Service

無駄な空行を削除
[kcd/KCD.git] / KCD / APIResponse.swift
1 //
2 //  APIResponse.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/01/20.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10 import SwiftyJSON
11
12 extension JSON {
13     
14     func value(for keyPath: String) -> JSON {
15         
16         return self[keyPath.components(separatedBy: ".")]
17     }
18     
19     var last: JSON {
20         
21         let index = self.count - 1
22         
23         return self[index]
24     }
25 }
26
27 private func splitJSON(_ data: Data) -> String? {
28     
29     let prefix = "svdata="
30     
31     guard let string = data.utf8String,
32         let range = string.range(of: prefix) else {
33             
34             return Logger.shared.log("data is wrong", value: nil)
35     }
36     
37     return String(string[range.upperBound...])
38 }
39
40 struct APIResponse {
41     
42     let api: API
43     let parameter: Parameter
44     let json: JSON
45     let date: Date
46     var success: Bool {
47         
48         if let r = json["api_result"].int { return r == 1 }
49         
50         return false
51     }
52     
53     init(api: API, parameter: Parameter, json: JSON) {
54         
55         self.api = api
56         self.parameter = parameter
57         self.json = json
58         self.date = Date()
59     }
60     
61     init?(request: URLRequest, data: Data) {
62         
63         date = Date()
64         
65         guard let josn = splitJSON(data) else {
66             
67             Logger.shared.log("Can not parse JSON")
68             return nil
69         }
70         
71         self.json = JSON(parseJSON: josn)
72         
73         guard let parameter = Parameter(request) else {
74             
75             Logger.shared.log("Can not parse Parameter")
76             return nil
77         }
78         
79         self.parameter = parameter
80         
81         guard let api = request.url?.path else {
82             
83             Logger.shared.log("URLRequest is wrong")
84             return nil
85         }
86         
87         self.api = API(endpointPath: api)
88     }
89 }