42 lines
952 B
Swift
42 lines
952 B
Swift
//
|
|
// HTTPLinkPagingInfo.swift
|
|
// RSWeb
|
|
//
|
|
// Created by Maurice Parker on 5/12/19.
|
|
// Copyright © 2019 Ranchero Software. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public struct HTTPLinkPagingInfo {
|
|
|
|
public let nextPage: String?
|
|
public let lastPage: String?
|
|
|
|
public init(nextPage: String?, lastPage: String?) {
|
|
self.nextPage = nextPage
|
|
self.lastPage = lastPage
|
|
}
|
|
|
|
public init(urlResponse: HTTPURLResponse) {
|
|
|
|
guard let linkHeader = urlResponse.valueForHTTPHeaderField(HTTPResponseHeader.link) else {
|
|
self.init(nextPage: nil, lastPage: nil)
|
|
return
|
|
}
|
|
|
|
let links = linkHeader.components(separatedBy: ",")
|
|
|
|
var dict: [String: String] = [:]
|
|
links.forEach({
|
|
let components = $0.components(separatedBy:"; ")
|
|
let page = components[0].trimmingCharacters(in: CharacterSet(charactersIn: " <>"))
|
|
dict[components[1]] = page
|
|
})
|
|
|
|
self.init(nextPage: dict["rel=\"next\""], lastPage: dict["rel=\"last\""])
|
|
|
|
}
|
|
|
|
}
|