diff --git a/Gemini-iOS/BrowserWebViewController.swift b/Gemini-iOS/BrowserWebViewController.swift index e4374a5..395b3a3 100644 --- a/Gemini-iOS/BrowserWebViewController.swift +++ b/Gemini-iOS/BrowserWebViewController.swift @@ -201,6 +201,9 @@ class BrowserWebViewController: UIViewController { } } } + if #available(iOS 15.0, *) { + task!.attribution = .user + } task!.resume() } diff --git a/GeminiProtocol/GeminiDataTask.swift b/GeminiProtocol/GeminiDataTask.swift index 2bae8eb..6a1f198 100644 --- a/GeminiProtocol/GeminiDataTask.swift +++ b/GeminiProtocol/GeminiDataTask.swift @@ -17,6 +17,17 @@ public class GeminiDataTask { private let completion: Completion private var state = State.unstarted private let connection: NWConnection + // todo: remove stupid hack when deployment target is >= iOS 15/macOS 12 + private var _attribution: Any? = nil + @available(iOS 15.0, *) + public var attribution: NWParameters.Attribution { + get { + _attribution as? NWParameters.Attribution ?? .developer + } + set { + _attribution = newValue + } + } public init(request: GeminiRequest, completion: @escaping Completion) { self.request = request @@ -25,6 +36,10 @@ public class GeminiDataTask { let endpoint: NWEndpoint = .hostPort(host: NWEndpoint.Host(request.url.host!), port: NWEndpoint.Port(rawValue: port)!) self.connection = NWConnection(to: endpoint, using: .gemini) + if #available(iOS 15.0, *) { + connection.parameters.attribution = attribution + } + self.connection.stateUpdateHandler = { (newState) in switch newState { case .ready: diff --git a/GeminiProtocol/NWParameters+Gemini.swift b/GeminiProtocol/NWParameters+Gemini.swift index 7a98a7b..c47ce94 100644 --- a/GeminiProtocol/NWParameters+Gemini.swift +++ b/GeminiProtocol/NWParameters+Gemini.swift @@ -8,6 +8,8 @@ import Network extension NWParameters { + /// An NWParameters configured with the GeminiProtocol and appropriate TLS options. + /// This property always returns a new NWParameters instance. static var gemini: NWParameters { let tlsOptions = geminiTLSOptions let tcpOptions = NWProtocolTCP.Options()