5 // Created by Hori,Masaki on 2017/02/02.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
14 CustomHTTPProtocol.classDelegate = self
17 fileprivate let queue: Queue
18 fileprivate var recievers: [URLProtocol: NSMutableData] = [:]
21 extension JSONReciever: CustomHTTPProtocolDelegate {
22 private func acceptProtocol(_ proto: URLProtocol) {
23 recievers[proto] = NSMutableData()
24 Debug.print("Accept protorol ->", proto, level: .full)
26 private func data(_ forProtocol: URLProtocol) -> NSMutableData? {
27 return recievers[forProtocol]
29 private func clearProtocol(_ proto: URLProtocol) {
30 recievers[proto] = nil
33 func customHTTPProtocol(_ proto: CustomHTTPProtocol, didRecieve response: URLResponse) {
34 if let pathComp = proto.request.url?.pathComponents,
35 pathComp.contains("kcsapi") {
39 func customHTTPProtocol(_ proto: CustomHTTPProtocol, didRecieve data: Data) {
40 self.data(proto)?.append(data)
42 func customHTTPProtocolDidFinishLoading(_ proto: CustomHTTPProtocol) {
43 defer { clearProtocol(proto) }
44 guard let data = self.data(proto),
45 let response = APIResponse(request: proto.request, data: data as Data)
47 queue.enqueue(response)
49 func customHTTPProtocol(_ proto: CustomHTTPProtocol, didFailWithError error: Error) {
50 Debug.print("Connection Error! \nRequest: \(proto.request)\nError:\(error)", level: .full)