Changeset 19a9a1e in Klonkt for src/services/music/index.js


Ignore:
Timestamp:
08/15/2026 07:43:02 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
bec9001
Parents:
e1da6a1
Message:

Library: audience meesturen en de ongeordende collectievorm gebruiken

De 500 op /ap/users/dev/library kwam van open.audio, niet van ons, en de
oorzaak staat in hun bron (federation/serializers.py op develop):

LibrarySerializer.create() regel 1147

"privacy_level": privacy[validated_dataaudience]

audience staat als required=False in de serializer, dus als wij het
weglaten zit de sleutel niet in validated_data en is dat een KeyError --
een 500 op elke poging onze bibliotheek op te halen. Wij stuurden hem
niet.

Het veld is bovendien gewoon waar: alles in de bak is fedi_open. En bij
hen is het precies het verschil tussen privacy_level 'everyone' en 'me',
oftewel of onze nummers daar afspeelbaar zijn.

Daarnaast de vorm. Hun CollectionPageSerializer (regel 1157) accepteert
alleen CollectionPage met items; wij stuurden OrderedCollectionPage
met orderedItems, en dan komt er van de inhoud niets binnen. Dat is geen
dialect maar de andere helft van AS2: een platenkast heeft geen volgorde
die iets betekent, en hun LibrarySerializer accepteert als type ook alleen
as:Collection of fw:Library. De outbox is wél geordend en blijft zoals hij
was.

De eisen staan nu met bronverwijzing in test/ap-library.test.js, want ze
stonden nergens bij ons opgeschreven -- en het volgende dat gebeurt is
anders dat iemand dit 'opruimt' naar de gewone vorm.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/music/index.js

    re1da6a1 r19a9a1e  
    253253  return pagedCollection(id, items, {
    254254    page,
     255    // Een platenkast is geen tijdlijn: `Collection`, niet `OrderedCollection`.
     256    // Funkwhale's LibrarySerializer accepteert ook alleen die twee typen
     257    // (as:Collection of fw:Library) en zijn CollectionPageSerializer alleen
     258    // `CollectionPage` met `items`.
     259    ongeordend: true,
    255260    extra: {
    256261      type: 'Library',
    257262      name: site.title || site.slug,
    258263      attributedTo: actorId(base, site.slug),
     264      // WAAROM DIT VELD ER MOET STAAN. Funkwhale's LibrarySerializer noemt
     265      // `audience` optioneel, maar zijn create() doet er meteen
     266      // `privacy[validated_data["audience"]]` mee -- zonder de sleutel is dat
     267      // een KeyError en geeft hun server een 500. Dat is wat open.audio op 15-8
     268      // teruggaf toen Robin onze library-URI daar opzocht.
     269      //
     270      // Het is bovendien gewoon waar: alles hierin is fedi_open, dus openbaar.
     271      // Bij hen is dit precies het verschil tussen privacy_level 'everyone' en
     272      // 'me' -- oftewel of onze nummers daar afspeelbaar zijn.
     273      audience: 'https://www.w3.org/ns/activitystreams#Public',
    259274      // Vereist volgens hun docs. Openbaar, dus de telling is eerlijk en de
    260275      // lijst blijft leeg -- wie ons volgt volgt de ACTOR, niet de bak.
Note: See TracChangeset for help on using the changeset viewer.