// Copyright © 2020 Metabolist. All rights reserved. import Foundation import Combine class MastodonClient: HTTPClient { var instanceURL: URL? var accessToken: String? required init(environment: AppEnvironment) { let decoder = MastodonDecoder() decoder.userInfo[.attributedStringCache] = environment.attributedStringCache super.init(session: environment.session, decoder: decoder) } override func request(_ target: T) -> AnyPublisher { super.request(target, decodeErrorsAs: MastodonError.self) } } extension MastodonClient { func request(_ endpoint: E) -> AnyPublisher { guard let instanceURL = instanceURL else { return Fail(error: URLError(.badURL)).eraseToAnyPublisher() } return super.request( MastodonTarget(baseURL: instanceURL, endpoint: endpoint, accessToken: accessToken), decodeErrorsAs: MastodonError.self) } }