Aller au contenu

Contenus typés

phil/qr-code

Un contenu typé écrit ce que contient un code sous la forme sur laquelle agissent les lecteurs des téléphones, avec les échappements qu'exige son format. Chacun implémente Contract\Content : payload() est le texte du code, label() un court texte qui dit ce qu'il contient — à montrer à côté du code ou pour le nommer aux lecteurs d'écran, jamais un mot de passe. QrCode::encode() en accepte un à la place d'un texte.

QrCode::encode(new Wifi('Gnome Café', 'tea-and-dice', WifiSecurity::Wpa));

Chaque champ de texte doit être de l'UTF-8 d'au plus 4 096 octets sans caractère de contrôle — sauts de ligne et tabulations permis dans les champs de plusieurs lignes, une note, une description, un corps. InvalidContent refuse tout le reste, ainsi que tout champ qui sort de sa forme.

ContenuCharge utileÉchappements et vérifications
Urll'adresseschémas https et http, sauf si d'autres sont listés ; un hôte exigé, en ASCII (forme IDNA) ; espaces, octets hors ASCII, guillemets doubles, chevrons, barre oblique inverse, accent circonflexe, accent grave, accolades et barre verticale encodés en pourcentage
Emailmailto:a@example.com?subject=…&body=…&cc=…&bcc=… (RFC 6068)adresses vérifiées ; objet, corps et copies encodés en pourcentage ; les sauts de ligne du corps envoyés en CRLF
Phonetel:+15551234567 (RFC 3966)chiffres, un + initial, les séparateurs -.() ; espaces retirées
Smssms:+15551234567?body=… (RFC 5724)le numéro comme pour Phone, le corps encodé en pourcentage
Geogeo:46.8139,-71.208,100;u=25 (RFC 5870)latitude, longitude, altitude et incertitude dans leurs plages, au plus sept décimales, jamais d'exposant ; un name pour label() seulement
WifiWIFI:T:WPA;S:name;P:key;H:true;;\ ; , : " échappés par une barre oblique inverse ; le nom de 1 à 32 octets ; la clé du WPA (de 8 à 63 caractères, ou 64 chiffres hexadécimaux), du WEP (5 ou 13 caractères, ou 10 ou 26 chiffres hexadécimaux), aucune pour WifiSecurity::Open
MeCardMECARD:N:name;TEL:…;EMAIL:…;URL:…;ADR:…;NOTE:…;BDAY:YYYYMMDD;;\ ; , : " échappés par une barre oblique inverse
VCardune vCard 3.0 (RFC 2426) ou 4.0 (RFC 6350), VCardVersion\, ,, ; et sauts de ligne échappés dans les valeurs de texte, PostalAddress dans les sept composantes de ADR, lignes terminées par CRLF et repliées avant 75 octets, jamais au milieu d'un caractère
Eventun VEVENT iCalendar (RFC 5545)valeurs de texte échappées comme dans une vCard, instants en UTC, journées entières sous forme de dates, la fin après le début, lignes repliées

Le libellé d'un Wifi est le nom du réseau ; celui d'une VCard, d'une MeCard et d'un Event, le nom ou le résumé ; celui des autres, l'adresse ou le numéro.