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 {
24 private func cacheable(response: HTTPURLResponse) -> Bool {
26 guard let cc = response.allHeaderFields["Cache-Control"] as? String,
27 let _ = cc.lowercased().range(of: "no-store") else {
35 private func cacheable(request: URLRequest) -> Bool {
37 guard let cc: String = request.allHTTPHeaderFields?["Cache-Control"] else { return true }
39 if let _ = cc.lowercased().range(of: "no-store") { return false }
40 if let _ = cc.lowercased().range(of: "no-cache") { return false }
45 private func policy(request: URLRequest) -> URLCache.StoragePolicy {
47 if let scheme = request.url?.scheme?.lowercased(),
50 return .allowedInMemoryOnly
56 func cacheStoragePolicy(for request: URLRequest, response: HTTPURLResponse) -> URLCache.StoragePolicy {
58 if cacheable(status: response.statusCode),
59 cacheable(response: response),
60 cacheable(request: request) {
62 return policy(request: request)