From 9bce81e60649a8b006d99c690ed2dd44dbad1198 Mon Sep 17 00:00:00 2001 From: Kyle Fang Date: Thu, 21 Mar 2024 10:45:52 +0800 Subject: [PATCH] feat: add custom headers support --- Sources/FalClient/Client+Config.swift | 4 +++- Sources/FalClient/Client+Request.swift | 5 +++++ Sources/FalClient/FalClient.swift | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Sources/FalClient/Client+Config.swift b/Sources/FalClient/Client+Config.swift index cfbf5a2..b0adfb6 100644 --- a/Sources/FalClient/Client+Config.swift +++ b/Sources/FalClient/Client+Config.swift @@ -32,9 +32,11 @@ public enum ClientCredentials: CustomStringConvertible { public struct ClientConfig { public let credentials: ClientCredentials public let requestProxy: String? + public let customHeaders: [String: String]? - init(credentials: ClientCredentials = .fromEnv, requestProxy: String? = nil) { + init(credentials: ClientCredentials = .fromEnv, requestProxy: String? = nil, customHeaders: [String: String]? = nil) { self.credentials = credentials self.requestProxy = requestProxy + self.customHeaders = customHeaders } } diff --git a/Sources/FalClient/Client+Request.swift b/Sources/FalClient/Client+Request.swift index 1917894..7935f27 100644 --- a/Sources/FalClient/Client+Request.swift +++ b/Sources/FalClient/Client+Request.swift @@ -33,6 +33,11 @@ extension Client { } var request = URLRequest(url: url) + if let header = config.customHeaders { + for (key, value) in header { + request.setValue(value, forHTTPHeaderField: key) + } + } request.httpMethod = options.httpMethod.rawValue.uppercased() request.setValue("application/json", forHTTPHeaderField: "accept") request.setValue("application/json", forHTTPHeaderField: "content-type") diff --git a/Sources/FalClient/FalClient.swift b/Sources/FalClient/FalClient.swift index e0ad6db..097420b 100644 --- a/Sources/FalClient/FalClient.swift +++ b/Sources/FalClient/FalClient.swift @@ -76,8 +76,8 @@ public struct FalClient: Client { } public extension FalClient { - static func withProxy(_ url: String) -> Client { - FalClient(config: ClientConfig(requestProxy: url)) + static func withProxy(_ url: String, headers: [String: String]? = nil) -> Client { + FalClient(config: ClientConfig(requestProxy: url, customHeaders: headers)) } static func withCredentials(_ credentials: ClientCredentials) -> Client {