// // ServerConnection.swift // // Copyright 2026 Brendan Szymanski // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // SPDX-License-Identifier: GPL-3.0-or-later // import Foundation /// A reachable Jellyfin server together with the URL that answered the probe. package struct ServerConnection: Sendable, Hashable { /// The validated base URL that successfully answered. package let url: URL /// The identity information returned by the server. package let serverInfo: JellyfinServerInfo /// Creates a connection from a successful probe result. /// /// - Parameters: /// - url: The validated base URL that answered. /// - serverInfo: The identity information returned by the server. package init(url: URL, serverInfo: JellyfinServerInfo) { self.url = url self.serverInfo = serverInfo } /// Whether the successful connection used HTTPS. package var isEncrypted: Bool { url.scheme?.lowercased() == "https" } /// A concise success message suitable for the onboarding toast. package var summary: String { let name = serverInfo.serverName ?? "the server" if isEncrypted { return "Connected to \(name) over HTTPS." } return "Connected to \(name) over HTTP - this connection is not encrypted." } }