5 // Created by Hori,Masaki on 2017/01/20.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 fileprivate func parseJSON(_ data: Data) -> [String:Any]? {
12 guard let j = try? JSONSerialization.jsonObject(with: data, options: [.allowFragments]),
13 let json = j as? [String:Any]
17 fileprivate func parseParameter(_ string: String) -> [String:String] {
18 let piar = string.components(separatedBy: "&")
19 return piar.reduce(Dictionary<String,String>()) {
21 let p = $1.components(separatedBy: "=")
29 class HMAPIResponse: NSObject {
31 let parameter: [String:String]
32 let json: [String:Any]
35 if let r = json["api_result"] as? Int { return r == 1 }
40 let argumentArray: [[String:String]]
43 init?(request: NSURLRequest, data: Data) {
46 let prefix = "svdata="
47 guard let string = String(data: data, encoding: .utf8),
48 string.hasPrefix(prefix)
50 print("data is wrong")
53 let start = string.index(string.startIndex, offsetBy: prefix.characters.count)
54 let jsonString = string[start..<string.endIndex]
55 guard let jsonData = jsonString.data(using: .utf8),
56 let j = parseJSON(jsonData)
58 print("Can not parse JSON")
63 guard let requestBodyData = request.httpBody,
64 let paramStr = String(data: requestBodyData, encoding: .utf8),
65 let unescaped = paramStr.removingPercentEncoding
67 print("Can not parse Parameter")
70 parameter = parseParameter(unescaped)
72 guard let a = request.url?.path
74 print("URLRequest is wrong")
80 argumentArray = parameter.map { (key, value) in
81 ["key": key, "value": value]