From 8d9c9217dcc2ceebd0e1890057b9852e46971178 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Tue, 26 Sep 2017 13:16:46 -0700 Subject: [PATCH] Make HTTPConditionalGetInfo serializable via a dictionary. --- .../RSWeb/RSWeb/HTTPConditionalGetInfo.swift | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/Frameworks/RSWeb/RSWeb/HTTPConditionalGetInfo.swift b/Frameworks/RSWeb/RSWeb/HTTPConditionalGetInfo.swift index b086f8d3b..a6cd1f2ff 100755 --- a/Frameworks/RSWeb/RSWeb/HTTPConditionalGetInfo.swift +++ b/Frameworks/RSWeb/RSWeb/HTTPConditionalGetInfo.swift @@ -8,30 +8,55 @@ import Foundation -public struct HTTPConditionalGetInfo: Codable { +public struct HTTPConditionalGetInfo { public let lastModified: String? public let etag: String? + public var isEmpty: Bool { get { return lastModified == nil && etag == nil } } - public init(lastModified: String?, etag: String?) { - + public init?(lastModified: String?, etag: String?) { + + if lastModified == nil && etag == nil { + return nil + } self.lastModified = lastModified self.etag = etag } - public init(urlResponse: HTTPURLResponse) { + public init?(urlResponse: HTTPURLResponse) { let lastModified = urlResponse.valueForHTTPHeaderField(HTTPResponseHeader.lastModified) let etag = urlResponse.valueForHTTPHeaderField(HTTPResponseHeader.etag) self.init(lastModified: lastModified, etag: etag) } - + + public var dictionary: [String: String]? { + get { + if lastModified == nil && etag == nil { + return nil + } + var d = [String: String]() + if let lastModified = lastModified { + d[HTTPResponseHeader.lastModified] = lastModified + } + if let etag = etag { + d[HTTPResponseHeader.etag] = etag + } + return d + } + } + + public init?(dictionary: [String: String]) { + + self.init(lastModified: dictionary[HTTPResponseHeader.lastModified], etag: dictionary[HTTPResponseHeader.etag]) + } + public func addRequestHeadersToURLRequest(_ urlRequest: NSMutableURLRequest) { if let lastModified = lastModified {