Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JSON sur nnrp.alphanet.ch

2 views
Skip to first unread message

Marc SCHAEFER

unread,
Jun 9, 2020, 7:55:52 AM6/9/20
to
[ Followup-To: fr.comp.usenet.lecteurs-de-news ]

Bonjour,

on peut lire les news ici, par exemple:
https://nnrp.alphanet.ch/newsgroup/fr.comp.usenet.lecteurs-de-news

ou un article spécifique
https://nnrp.alphanet.ch/newsgroup/fr.comp.usenet.lecteurs-de-news/%3C2e6d00d4f228.202062.maintdoc%40jeffrey.matabio.net%3E

ou un article spécifique brut (pour débugger), lien R ci-dessus
https://nnrp.alphanet.ch/newsgroup/fr.comp.usenet.lecteurs-de-news/%3C2e6d00d4f228.202062.maintdoc%40jeffrey.matabio.net%3E?mode=raw

ou en JSON (nouvelle addition)
https://nnrp.alphanet.ch/newsgroup/fr.comp.usenet.lecteurs-de-news/%3C2e6d00d4f228.202062.maintdoc%40jeffrey.matabio.net%3E?mode=json

D'ailleurs je me suis bien amusé avec cette regexp Perl pour les
entêtes, notamment avec le lookahead non consommateur:

$headers =~ s/(^|\n)([a-zA-Z0-9\-]+):\s?(.*)(\n\s+.*|)(?=\n|$)/$headers{$2} = $3 . $4; ""/eg;

C'est une regexp globale (répétée sur toutes les occurences), en mode
exécution: soit la chaîne de tous les entêtes séparés par des sauts
de ligne $headers:
à chaque occurence, elle remplit le tableau associatif non ordonné
(tableau de hachage) %header avec le nom de l'entête comme clé et le
contenu comme valeur, supportant un contenu sur plusieurs lignes.

Le code Mojolicious qui produit le JSON devient alors:

$self->render(json => { 'headers' => \%headers,
'body' => $a->body,
'headers_raw' => $a->headers,
'rest' => $headers
});


0 new messages