Skip to content

Commit 221a77b

Browse files
committed
add another expires date format
1 parent f01021e commit 221a77b

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

Sources/AsyncHTTPClient/HTTPClient+HTTPCookie.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,24 @@ extension HTTPClient {
8181
case ("domain", .some(let value)):
8282
self.domain = value
8383
case ("expires", let value):
84+
guard let value = value else {
85+
continue
86+
}
87+
8488
let formatter = DateFormatter()
8589
formatter.locale = Locale(identifier: "en_US")
8690
formatter.timeZone = TimeZone(identifier: "GMT")
91+
8792
formatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss z"
88-
self.expires = value.flatMap { formatter.date(from: $0) }
93+
if let date = formatter.date(from: value) {
94+
self.expires = date
95+
continue
96+
}
97+
98+
formatter.dateFormat = "EEE, dd-MMM-yy HH:mm:ss z"
99+
if let date = formatter.date(from: value) {
100+
self.expires = date
101+
}
89102
case ("max-age", let value):
90103
self.maxAge = value.flatMap(Int.init)
91104
case ("secure", nil):

Tests/AsyncHTTPClientTests/HTTPClientCookieTests+XCTest.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ extension HTTPClientCookieTests {
3030
("testCookieDefaults", testCookieDefaults),
3131
("testCookieInit", testCookieInit),
3232
("testMalformedCookies", testMalformedCookies),
33+
("testCookieExpiresDateParsing", testCookieExpiresDateParsing),
3334
]
3435
}
3536
}

Tests/AsyncHTTPClientTests/HTTPClientCookieTests.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,12 @@ class HTTPClientCookieTests: XCTestCase {
8282
XCTAssertNil(HTTPClient.Cookie(header: "=;", defaultDomain: "exampe.org"))
8383
XCTAssertNil(HTTPClient.Cookie(header: "=value;", defaultDomain: "exampe.org"))
8484
}
85+
86+
func testCookieExpiresDateParsing() {
87+
var c = HTTPClient.Cookie(header: "key=value; eXpIRes=Sun, 06 Nov 1994 08:49:37 GMT;", defaultDomain: "example.org")!
88+
XCTAssertEqual(Date(timeIntervalSince1970: 784_111_777), c.expires)
89+
90+
c = HTTPClient.Cookie(header: "key=value; eXpIRes=Sunday, 06-Nov-94 08:49:37 GMT;", defaultDomain: "example.org")!
91+
XCTAssertEqual(Date(timeIntervalSince1970: 784_111_777), c.expires)
92+
}
8593
}

0 commit comments

Comments
 (0)