Den Weg der App einmal ganz abgehen

Die App schickt keine Codec-Listen; dann nimmt der Server Apples Profil.
Das führt zu einer anderen Entscheidung als beim Browser — dort wird
umgerechnet, hier umgepackt — und damit auf einen Weg, den keine Prüfung
abging. Jetzt schon: bestellen, Hauptliste, Medienliste, erstes Stück.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-10 17:01:50 +02:00
co-authored by Claude Opus 5
parent 6e503d63de
commit 6ef84b47cf
@@ -558,4 +558,40 @@ public class StreamTests
Assume.That(strom.Method, Is.EqualTo("direct")); Assume.That(strom.Method, Is.EqualTo("direct"));
Assert.That(strom.MasterUrl, Is.Null); Assert.That(strom.MasterUrl, Is.Null);
} }
/// <summary>Was die App bestellt, lässt sich auch abholen.</summary>
///
/// <remarks>
/// <b>Die App schickt keine Codec-Listen</b> — dann nimmt der Server
/// Apples Profil, und das ist hier richtig: dieses Gerät ist Apple. Der
/// Weg danach ist aber ein anderer als der des Browsers, und genau dort
/// kam eine 500 heraus. Diese Prüfung geht ihn ganz ab: bestellen,
/// Hauptliste holen, Medienliste holen, erstes Stück holen.
/// </remarks>
[Test]
public async Task Der_Weg_der_App_fuehrt_bis_zum_ersten_Stueck()
{
FilmMitUntertitel("Wie die App (2020)");
var (client, datei) = await Eingelesen();
var strom = await Strom(client, datei.Id, new StreamRequest(
Containers: null, VideoCodecs: null, AudioCodecs: null, StartSeconds: 0));
Assert.That(strom.MasterUrl, Is.Not.Null, "Eine MKV ist für Apple nichts zum Durchreichen.");
var haupt = await client.GetAsync(strom.MasterUrl!);
Assert.That(haupt.StatusCode, Is.EqualTo(HttpStatusCode.OK),
await haupt.Content.ReadAsStringAsync());
var medien = await client.GetAsync(strom.Url);
Assert.That(medien.StatusCode, Is.EqualTo(HttpStatusCode.OK),
await medien.Content.ReadAsStringAsync());
var liste = await medien.Content.ReadAsStringAsync();
var stueck = liste.Split('\n').FirstOrDefault(z => z.Length > 0 && !z.StartsWith('#'));
Assert.That(stueck, Is.Not.Null, liste);
var teil = await client.GetAsync($"/api/v1/stream/{strom.SessionId}/{stueck}");
Assert.That(teil.StatusCode, Is.EqualTo(HttpStatusCode.OK));
}
} }