import Foundation /// Holt die Serverliste vom Konto. public actor PlexServerDirectory { private let client: PlexHTTPClient public init( identity: PlexClientIdentity, token: String, transport: any PlexTransport = URLSession.shared ) { self.client = PlexHTTPClient( baseURL: URL(string: "https://plex.tv")!, identity: identity, token: token, transport: transport ) } /// Alle Medienserver, auf die das Konto Zugriff hat — eigene und geteilte. public func servers() async throws(PlexError) -> [PlexResource] { let resources = try await client.send( PlexRequest(path: "/api/v2/resources", query: [ // Ohne diese beiden Schalter fehlen in der Antwort die // plex.direct-Adressen und die Vermittlung — übrig bliebe nur // die lokale IP, und außer Haus ginge gar nichts. URLQueryItem(name: "includeHttps", value: "1"), URLQueryItem(name: "includeRelay", value: "1"), ]), as: [PlexResource].self ) return resources.filter(\.isServer) } }