How to get cookie from a NSURLSession with Swift?

The Swift rendition might look something like:

let task = session.dataTask(with: request) { data, response, error in
    guard
        let url = response?.url,
        let httpResponse = response as? HTTPURLResponse,
        let fields = httpResponse.allHeaderFields as? [String: String]
    else { return }

    let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields, for: url)
    HTTPCookieStorage.shared.setCookies(cookies, for: url, mainDocumentURL: nil)
    for cookie in cookies {
        var cookieProperties = [HTTPCookiePropertyKey: Any]()
        cookieProperties[.name] = cookie.name
        cookieProperties[.value] = cookie.value
        cookieProperties[.domain] = cookie.domain
        cookieProperties[.path] = cookie.path
        cookieProperties[.version] = cookie.version
        cookieProperties[.expires] = Date().addingTimeInterval(31536000)

        let newCookie = HTTPCookie(properties: cookieProperties)
        HTTPCookieStorage.shared.setCookie(newCookie!)

        print("name: \(cookie.name) value: \(cookie.value)")
    }
}
task.resume()

Leave a Comment

tech