Development #56526
connection json → xml
0%
Description
Faire un connecteur qui va recevoir un dictionnaire JSON (à plat, de wcs) et va retourner un document XML correspondant.
Exemple de document XML à générer :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><sve-form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://www.isere.fr/contact"><aee>21062110022</aee><from><person><email>foo@bar.com</email><title>Madame</title><first-name>LAURE</first-name><last-name>PERRIN-VIDOZ</last-name><phone-number>0658096858</phone-number><mobile-number>0658096858</mobile-number><home-address><number-and-street>16 RUE DE CONDE</number-and-street><zip-code>69002</zip-code><city>Lyon</city></home-address></person></from><for><organization><type>entreprise</type><identifier>812467793</identifier><name>YOOBAKY</name><home-address><number-and-street>16 rue de condé</number-and-street><zip-code>69002</zip-code><city>Lyon</city></home-address></organization></for><request><date>2021-06-21T14:56:31</date><theme>Autres</theme><type>Prestation ou subvention</type><subject>DEMARCHE PROSPECTIVE ISERE 2030 </subject><description>A l'attention du chef. Bonjour,...</description></request></sve-form>
Le format du JSON en entrée serait de ce style (appel webservice depuis w.c.s.) :
{ "@version": "1.0", "@encoding": "UTF-8", "@standalone": "yes", "sve-form@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", "sve-form@xmlns": "https://www.isere.fr/contact", "sve-form/aee": "21062110022", "sve-form/from/person/email": "foo@bar.com", "sve-form/from/person/titile": "Madame", ... }
Le principe serait d'utiliser passerelle.utils.json.unflatten pour d'abord transformer ce JSON en un dictionnaire plus proche de la structure XML attendue :
{ '@encoding': 'UTF-8', '@standalone': 'yes', '@version': '1.0', 'sve-form': { 'aee': '21062110022', 'from': { 'person': { 'email': 'foo@bar.com', 'titile': 'Madame'}}}, 'sve-form@xmlns': 'https://www.isere.fr/contact', 'sve-form@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance' ...}
Prendre alors les clés "@..." pour poser des attributs sur le "" de début, puis construire l'arbre XML tout en intégrant les "ancres@attributs" quand ils existent.
Demandes liées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Est-ce que ce ne serait pas plus utile un truc qui produit un fichier texte depuis un template Django ? Là ça me parait difficile à débugger par un client si jamais c'est réutilisé.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Benjamin Dauvergne a écrit :
Est-ce que ce ne serait pas plus utile un truc qui produit un fichier texte depuis un template Django ? Là ça me parait difficile à débugger par un client si jamais c'est réutilisé.
Aussi je vois toute de suite des tas de cas difficiles à gérer via un appel web-service qui seront simples avec la possibilité de mettre des if et des for.
Mis à jour par Thomas Noël il y a plus de 2 ans
Bonne idée, donc plutôt un connecteur qu'on nommerait "templater" et serait paramétré par un gabarit (fichier uploadé ou textarea) + un type mime. Quand un endpoint templater/xxx/make est appelé en POST avec un dictionnaire, celui sert de contexte, et on renvoi le résultat avec le type mime. Ca permettrait de faire des XML, mais aussi des SVG, des JSON, des CSV, que sais-je.
Et c'est plutôt simple à faire.
Bref, je vais faire un autre ticket et rejeter celui-ci, trop spécifique.
(Quelque chose en moi me dit qu'on pourrait aussi imaginer adapter l'action "création de document" des workflow de w.c.s. et la faire gérer des fichiers txt quand elle voit une extension txt/xml/svg/csv/...)
Mis à jour par Thomas Noël il y a plus de 2 ans
- Lié à Development #56537: prendre en charge les fichiers de type "texte" (txt, xml, svg,...) dans l'action document ajouté
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Nouveau à Rejeté
Je rejette donc ce connecteur bien trop spécifique pour voir ce qu'on pourrait faire via l'action de génération de document directement dans les workflows de wcs : #56537
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Thomas Noël a écrit :
(Quelque chose en moi me dit qu'on pourrait aussi imaginer adapter l'action "création de document" des workflow de w.c.s. et la faire gérer des fichiers txt quand elle voit une extension txt/xml/svg/csv/...)
Oui aussi, faut voir ce qui inspire le plus de monde.