pushdeer/ios/Prototype_version/Pods/Moya/Sources/Moya/MultiTarget.swift
2021-12-23 00:19:55 +08:00

48 lines
1.4 KiB
Swift

import Foundation
/// A `TargetType` used to enable `MoyaProvider` to process multiple `TargetType`s.
public enum MultiTarget: TargetType {
/// The embedded `TargetType`.
case target(TargetType)
/// Initializes a `MultiTarget`.
public init(_ target: TargetType) {
self = MultiTarget.target(target)
}
/// The embedded target's base `URL`.
public var path: String { target.path }
/// The baseURL of the embedded target.
public var baseURL: URL { target.baseURL }
/// The HTTP method of the embedded target.
public var method: Moya.Method { target.method }
/// The sampleData of the embedded target.
public var sampleData: Data { target.sampleData }
/// The `Task` of the embedded target.
public var task: Task { target.task }
/// The `ValidationType` of the embedded target.
public var validationType: ValidationType { target.validationType }
/// The headers of the embedded target.
public var headers: [String: String]? { target.headers }
/// The embedded `TargetType`.
public var target: TargetType {
switch self {
case .target(let target): return target
}
}
}
extension MultiTarget: AccessTokenAuthorizable {
public var authorizationType: AuthorizationType? {
guard let authorizableTarget = target as? AccessTokenAuthorizable else { return nil }
return authorizableTarget.authorizationType
}
}