Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions Sources/ContainerizationOCI/Client/ProxyConfig.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import Foundation
import AsyncHTTPClient

public struct ProxyConfig {
public static func(for url: URL?) -> HTTPClient.Configuration.Proxy? {
let env = ProcessInfo.processInfo.environment
let proxyEnv = env["HTTPS_PROXY"] ?? env["HTTP_PROXY"]
guard let proxyEnv else {
return nil
}
guard let url.host != env["NO_PROXY"] else {
return nil
}
guard let proxyURL = URL(string: proxyEnv), let host = proxyURL.host(), let port = proxyURL.port else {
return nil
}
return HTTPClient.Configuration.Proxy.server(host: host, port: port)
}
}
11 changes: 1 addition & 10 deletions Sources/ContainerizationOCI/Client/RegistryClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -109,16 +109,7 @@ public final class RegistryClient: ContentClient {
self.retryOptions = retryOptions
self.bufferSize = bufferSize
var httpConfiguration = HTTPClient.Configuration()
let proxyConfig: HTTPClient.Configuration.Proxy? = {
let proxyEnv = ProcessInfo.processInfo.environment["HTTP_PROXY"]
guard let proxyEnv else {
return nil
}
guard let url = URL(string: proxyEnv), let host = url.host(), let port = url.port else {
return nil
}
return .server(host: host, port: port)
}()
let proxyConfig: ProxyConfig.proxy(for: components.url)
httpConfiguration.proxy = proxyConfig
if let logger {
self.client = HTTPClient(eventLoopGroupProvider: .singleton, configuration: httpConfiguration, backgroundActivityLogger: logger)
Expand Down