stream: let listeners remove a track from the queue
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
493e55ed18
commit
976f009297
5 changed files with 125 additions and 2 deletions
|
|
@ -316,6 +316,29 @@ harbor.http.register(
|
|||
end
|
||||
)
|
||||
|
||||
# Retirer un morceau de la file d'attente. Symétrique de /enqueue : le player
|
||||
# n'a pas accès au réseau interne, on relaie donc la demande (l'`id` opaque
|
||||
# fourni par /queue) vers l'ingest, qui retire l'entrée correspondante. On
|
||||
# renvoie tel quel son code et son corps JSON ({removed: true} ou une erreur).
|
||||
ingest_dequeue_url = "http://ingest:8080/dequeue"
|
||||
harbor.http.register(
|
||||
port=8000, method="POST", "/dequeue",
|
||||
fun(req, resp) -> begin
|
||||
id = list.assoc(default="", "id", req.query)
|
||||
if id == "" then
|
||||
resp.status_code(400)
|
||||
resp.data("missing id")
|
||||
else
|
||||
body = http.post(
|
||||
data="", timeout=10.0, "#{ingest_dequeue_url}?id=#{url.encode(id)}"
|
||||
)
|
||||
resp.status_code(body.status_code)
|
||||
resp.content_type("application/json; charset=utf-8")
|
||||
resp.data(string.trim(body) ^ "\n")
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
# Passer au morceau suivant : on saute le morceau en cours sur la source
|
||||
# diffusée. request.dynamic a déjà préchargé le suivant, donc l'enchaînement
|
||||
# est immédiat (le prochain /next est demandé au daemon dans la foulée).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue