Projet

Général

Profil

Development #56526

connection json → xml

Ajouté par Thomas Noël il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
31 août 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

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&#39;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

Lié à w.c.s. - Development #56537: prendre en charge les fichiers de type "texte" (txt, xml, svg,...) dans l'action documentFermé01 septembre 2021

Actions

Historique

#2

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é.

#3

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.

#4

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/...)

#5

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é
#6

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

#7

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.

Formats disponibles : Atom PDF