diff --git a/Packages/FlixyKit/Sources/FlixyProbe/Leiter.swift b/Packages/FlixyKit/Sources/FlixyProbe/Leiter.swift index 871727b..00c8f94 100644 --- a/Packages/FlixyKit/Sources/FlixyProbe/Leiter.swift +++ b/Packages/FlixyKit/Sources/FlixyProbe/Leiter.swift @@ -29,6 +29,12 @@ struct Endpunktlage: Decodable { } } +/// Welche Fassung der Server hat. +struct Serverfassung: Decodable { + let version: String? + private enum CodingKeys: String, CodingKey { case version = "Version" } +} + /// Die Netzwerkeinstellungen des Servers — nur der Teil, der hier zählt. struct Netzwerkeinstellung: Decodable { let knownProxies: [String]? @@ -99,7 +105,13 @@ func prüfePlaylist(_ url: URL, kopfzeilen: [String: String] = [:]) async -> Str guard (200..<300).contains(status) else { return " HTTP \(status) — keine Playlist bekommen." } - return leiter(in: String(decoding: daten, as: UTF8.self)).beschreibung + let text = String(decoding: daten, as: UTF8.self) + let gelesen = leiter(in: text) + // **Bei einer Stufe den Wortlaut zeigen.** Ab hier hilft keine + // Zusammenfassung mehr: was fehlt, sieht man nur im Original. + guard gelesen.stufen.count <= 1 else { return gelesen.beschreibung } + return gelesen.beschreibung + "\n ——— Wortlaut ———\n" + + text.split(separator: "\n").map { " " + $0 }.joined(separator: "\n") } catch { return " Nicht erreichbar: \(error.localizedDescription)" } @@ -167,7 +179,18 @@ func jellyfinLeiter(host: String) async { print("Anmeldung gescheitert: \(error)") return } - print("Angemeldet als \(konto.userName).\n") + print("Angemeldet als \(konto.userName).") + + // Die Fassung des Servers. Ohne sie lese ich womöglich den Quelltext + // einer anderen — und suche den Fehler an einer Stelle, die es dort + // gar nicht gibt. + if let info = try? await client.send( + JellyfinRequest(path: "/System/Info/Public"), + as: Serverfassung.self + ) { + print("Jellyfin \(info.version ?? "unbekannt")") + } + print("") let backend = JellyfinBackend(client: client, account: konto, serverName: "Probe")