2020-08-31 01:33:11 +02:00
|
|
|
// Copyright © 2020 Metabolist. All rights reserved.
|
|
|
|
|
|
|
|
import Foundation
|
2020-08-31 03:40:58 +02:00
|
|
|
import HTTP
|
2020-09-04 03:55:46 +02:00
|
|
|
import Mastodon
|
2020-08-31 01:33:11 +02:00
|
|
|
|
2020-08-31 01:59:49 +02:00
|
|
|
public struct Paged<T: Endpoint> {
|
2020-08-31 01:33:11 +02:00
|
|
|
public let endpoint: T
|
|
|
|
public let maxID: String?
|
|
|
|
public let minID: String?
|
|
|
|
public let sinceID: String?
|
|
|
|
public let limit: Int?
|
|
|
|
|
|
|
|
public init(_ endpoint: T, maxID: String? = nil, minID: String? = nil, sinceID: String? = nil, limit: Int? = nil) {
|
|
|
|
self.endpoint = endpoint
|
|
|
|
self.maxID = maxID
|
|
|
|
self.minID = minID
|
|
|
|
self.sinceID = sinceID
|
|
|
|
self.limit = limit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-31 01:59:49 +02:00
|
|
|
extension Paged: Endpoint {
|
2020-08-31 01:33:11 +02:00
|
|
|
public typealias ResultType = T.ResultType
|
|
|
|
|
|
|
|
public var APIVersion: String { endpoint.APIVersion }
|
|
|
|
|
|
|
|
public var context: [String] { endpoint.context }
|
|
|
|
|
|
|
|
public var pathComponentsInContext: [String] { endpoint.pathComponentsInContext }
|
|
|
|
|
|
|
|
public var method: HTTPMethod { endpoint.method }
|
|
|
|
|
|
|
|
public var encoding: ParameterEncoding { endpoint.encoding }
|
|
|
|
|
|
|
|
public var parameters: [String: Any]? {
|
|
|
|
var parameters = endpoint.parameters ?? [String: Any]()
|
|
|
|
|
|
|
|
parameters["max_id"] = maxID
|
|
|
|
parameters["min_id"] = minID
|
|
|
|
parameters["since_id"] = sinceID
|
|
|
|
parameters["limit"] = limit
|
|
|
|
|
|
|
|
return parameters
|
|
|
|
}
|
|
|
|
|
|
|
|
public var headers: HTTPHeaders? { endpoint.headers }
|
|
|
|
}
|