metatext/MastodonAPI/Sources/MastodonAPI/MastodonAPITarget.swift
2020-09-23 00:04:37 -07:00

43 lines
1.1 KiB
Swift

// Copyright © 2020 Metabolist. All rights reserved.
import Foundation
import HTTP
public struct MastodonAPITarget<E: Endpoint> {
public let baseURL: URL
public let endpoint: E
public let accessToken: String?
public init(baseURL: URL, endpoint: E, accessToken: String?) {
self.baseURL = baseURL
self.endpoint = endpoint
self.accessToken = accessToken
}
}
extension MastodonAPITarget: DecodableTarget {
public typealias ResultType = E.ResultType
public var pathComponents: [String] { endpoint.pathComponents }
public var method: HTTPMethod { endpoint.method }
public var queryParameters: [String: String]? { endpoint.queryParameters }
public var jsonBody: [String: Any]? { endpoint.jsonBody }
public var headers: [String: String]? {
var headers = endpoint.headers
if let accessToken = accessToken {
if headers == nil {
headers = [String: String]()
}
headers?["Authorization"] = "Bearer ".appending(accessToken)
}
return headers
}
}