2 // CacheStoragePolicy.swift
5 // Created by Hori,Masaki on 2017/02/11.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 private func cacheable(status: Int) -> Bool {
22 private func cacheable(response: HTTPURLResponse) -> Bool {
23 guard let cc = response.allHeaderFields["Cache-Control"] as? String,
24 let _ = cc.lowercased().range(of: "no-store")
29 private func cacheable(request: URLRequest) -> Bool {
30 guard let cc: String = request.allHTTPHeaderFields?["Cache-Control"]
32 if let _ = cc.lowercased().range(of: "no-store") { return false }
33 if let _ = cc.lowercased().range(of: "no-cache") { return false }
37 private func policy(request: URLRequest) -> URLCache.StoragePolicy {
38 if let scheme = request.url?.scheme?.lowercased(),
40 { return .allowedInMemoryOnly }
44 func CacheStoragePolicy(for request: URLRequest, response: HTTPURLResponse) -> URLCache.StoragePolicy {
45 if cacheable(status: response.statusCode),
46 cacheable(response: response),
47 cacheable(request: request)
49 return policy(request: request)