Skip to content

Modules : bytes() rend le corps brut d'une réponse HTTP - #51

Open
LucQuebec wants to merge 2 commits into
lfpoulain:betafrom
LucQuebec:proposition/lecture-binaire
Open

LucQuebec wants to merge 2 commits into
lfpoulain:betafrom
LucQuebec:proposition/lecture-binaire

Conversation

@LucQuebec

Copy link
Copy Markdown

Ferme #48.

Ce qui change

  • shared/addons.ts : AddonHttpResponse.bytes(): Uint8Array, une copie du corps brut.
  • server/addons/http.ts : la réponse est gardée en octets ; text() et json() décodent à la demande avec l'encodage déclaré (même règle qu'avant) ; le cache partagé compte la taille réelle en octets.
  • server/addons/testing.ts : une réponse simulée peut être un Uint8Array.
  • Les faux clients écrits à la main dans les tests reçoivent un bytes().
  • docs/modules/reference.md : client HTTP (mêmes règles pour les trois formes, détection pour rester compatible avec la 0.3.0, avec un exemple), tableau des versions ; CHANGELOG.md.

Vos cinq points

  1. maxBytes, truncated, délai, redirections et cacheMs : un seul chemin de lecture pour les trois formes. Tests : coupure à maxBytes avec truncated, redirection suivie sans jeton vers un autre domaine.
  2. Cache en octets réels : test avec 3 Mo de texte, comptés 6 Mo en caractères avant ce changement et donc jamais gardés, servis maintenant par le cache.
  3. text(), json() et bytes() dans les deux ordres sur la même réponse : test, une seule lecture du réseau par réponse.
  4. Octets non UTF-8 : test avec 0xff, 0x80 et 0x00, rendus intacts par bytes() alors que text() les remplace.
  5. Référence : comment détecter bytes() sur un cœur 0.3.0, avec un exemple et le repli recommandé.

Vérifié

  • npm test : 809 sur 809 sur beta.
  • Essai réel : le module Transports STM 1.3.0 lit le flux GTFS-RT de la STM (2 Mo, décodé en une quarantaine de millisecondes) et donne l'heure réelle des autobus ; sur un cœur 0.3.0, il reste à l'horaire, sans erreur.

Luc, Jokobee™

LucQuebec added 2 commits November 12, 2026 08:33
Le client du cœur décodait toujours le corps en texte : un format binaire
(flux temps réel GTFS-RT en protobuf, image, archive) était abîmé sans
retour. La réponse garde désormais les octets ; text() et json() décodent
à la demande, bytes() rend une copie du corps brut. Le cache partagé
compte la taille réelle en octets. createTestModule accepte une réponse
simulée en Uint8Array. Aucun changement pour les modules existants.
- text(), json() et bytes() sur la même réponse, dans les deux ordres,
  sans relire le réseau ;
- bytes() suit les redirections comme text(), sans jeton vers un autre
  domaine ;
- le cache partagé compte des octets réels : 3 Mo de texte, comptés 6 Mo
  en caractères, y entrent désormais ;
- référence : mêmes règles pour les trois formes (maxBytes, truncated,
  délai, redirections, cacheMs) et détection de bytes() pour rester
  compatible avec un cœur 0.3.0, avec un exemple.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant