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:
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user