feat(intake): de bodies van protocol v1 en de routes (fase 4, stap 2) #2255
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!2255
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/intake-bodies"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat
Fase 4, stap 2 (gestapeld op de protocol-PR): de bodies van alle handelingen van protocol v1 en de routes, als zuivere typen in
ocideck_form_core. Wat de server straks leest en schrijft, en wat de client straks bouwt en leest, staat nu op één plek, met één grammatica.intake_bodies.dartstateen 1–32 varianten, elk{bundle, template}(een bundel bindt één tekst, dus elke taal is een variant).parseIntakeFormResponse(de client:stateverplicht, onbekende leden genegeerd) enparseIntakePublication(de server:stateoptioneel, een onbekend lid geweigerd, ook in een variant). Een mislukking noemt de variant (index). Grenzen: een bundel ≤ 256 KiB, een sjabloon ≤ 1 MiB in bytes (dus 'é' telt twee), het geheel ≤ 8 MiB.IntakePublishResult,IntakeTokenRequest(de hash, ofnullom in te trekken; het lid moet aanwezig zijn —nullis een antwoord, ontbreken niet) enIntakeTokenResult,IntakeWithdrawRequest/Result,IntakeAckResult.IntakeSubmissionPage): een vastgehouden inzending of een grafsteentje; één slechte regel verpest de hele pagina — een lijst die stilletjes korter is dan die van de server is erger dan een fout. Cursorgrammatica ([A-Za-z0-9_-]{1,64}), ≤ 100 regels, ≤ 64 organisatoren per regel, elk één keer.intake_routes.dart:matchIntakeRoute(methode, target)beslist welke handeling een verzoek is — voor de client die een target bouwt en de server die er een leest. Het target wordt streng gelezen: alleen letters, cijfers en. _ ~ - / ? = &; geen%,#, spatie, niet-ASCII, absoluut adres, slotslash of lege segmenten; een query alleen waar de route er een heeft. Zelf gesplitst, omdatUrieen..wegwerkt en/v1/forms/..dan als/v1las (de test ving dat). Vaste volgorde: vorm (not-found) → methode (method-not-allowed) → ids (bad-request) → query (bad-request). De bouwers (intakeFormTargeten broers) weigeren een id die de server zou weigeren.not-found(404) enmethod-not-allowed(405); voor de pagina van een proxy is404nunot-foundin plaats vanform-unknown.INTAKE_PROTOCOL.mdis bijgewerkt (§2 request-targets, de tabel met foutcodes, per sectie wat gebouwd is), SOURCE_MAP en CHANGELOG ook.Getoetst
matchIntakeRoute: vier waren een equivalente grens (q < 0kan niet 0 zijn, want een target begint met/) en één een dode plaatshouder-closure — de functie is herschreven zodat die niet meer bestaan; verder één ontbrekende test (een inzending van 1 byte) die is geschreven.make check(ongepiped, exit 0),check-registrations,check-secrets,sast,check-packages,test-packages: groen.Wat er nog niet is
De referentieserver,
IntakeHttpTransport, de handelingen in de app en de webinvuller.