Changeset a66266d in Klonkt for src/routes/activitypub.js


Ignore:
Timestamp:
08/07/2026 07:23:50 PM (5 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
9588b51
Parents:
72d8eff (diff), a39c9bd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Playlist-federatie terug op main (shaer-ayc, stap 1 en 2)

Een playlist heeft een id, en dus een stabiele URI. Daarmee kan hij federeren
waar een album -- nog een tekstveld -- nergens aan kan hangen.

GET /ap/users/:slug/playlists/:id OrderedCollection van Audio-objecten,

dezelfde rijvorm die een post al als
attachment meestuurt

GET /ap/users/:slug/playlists de lijst: kale URI-verwijzingen, en

verrijkte stubs op verzoek (FEP-9876)

streams op de actor AS2-kern, geen eigen vocabulaire nodig
Link-tag op de Note wat er in DEZE post zit; Mastodon

negeert hem geruisloos

De poortregel blijft ongemoeid: alleen fedi_open-tracks, met echte bestands-URL.
Een gated track is geen lege rij maar AFWEZIG, en totalItems telt alleen het
open deel -- ook in een stub. Titel noch bestandsnaam lekt.

Dit werk stond een dag op een eigen branch omdat de interop onbewezen was en aan
main zeven instances hangen zonder terugrolpad. Live geverifieerd op dev: de
hele keten antwoordt, en het bestand is met 206 audio/mpeg ophaalbaar.

12 playlist-tests; suite 607/607.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/activitypub.js

    r72d8eff ra66266d  
    630630});
    631631
     632// ── Playlist als dereferenceerbare AP-collectie (shaer-ayc) ───────
     633// De eerste stap van het Funkwhale-spoor: een playlist heeft een id, dus een
     634// stabiele URI. Alleen het fedi_open-deel staat erin (de poort is per bestand
     635// en eenrichtings; zie setAudioFediOpen in routes/posts.js) — een collectie
     636// zonder open tracks bestaat wel maar is leeg, want de playlist zelf is niet
     637// geheim, alleen de bestanden erachter.
     638// De lijst van alle playlist-collecties (shaer-ayc, stap 2). De actor wijst
     639// hierheen via AS2 `streams`. Kaal standaard; verrijkte stubs op verzoek
     640// (FEP-9876), dezelfde conventie als followers/following.
     641router.get('/ap/users/:slug/playlists', (req, res) => {
     642  const site = publicSite(req.params.slug);
     643  if (!site) return res.status(404).end();
     644  AP.sendAP(res, AP.listPlaylistsAP(baseUrl(req), site, wantsEnriched(req, res)));
     645});
     646
     647router.get('/ap/users/:slug/playlists/:id', (req, res) => {
     648  const site = publicSite(req.params.slug);
     649  if (!site) return res.status(404).end();
     650  const pl = db.prepare('SELECT id, title, artist, year, cover_url, kind FROM playlists WHERE id = ? AND site_id = ?')
     651    .get(req.params.id, site.id);
     652  if (!pl) return res.status(404).end();
     653  AP.sendAP(res, AP.buildPlaylistCollection(baseUrl(req), site, pl, AP.playlistOpenTracks(pl.id)));
     654});
     655
    632656// ── Note ──────────────────────────────────────────────────────────
    633657router.get('/ap/notes/:id', async (req, res) => {
Note: See TracChangeset for help on using the changeset viewer.