libdrv
Bibliothèque C expérimentale pour le web service DARVA, avec des bindings C#, Java et TypeScript (Bun, Node.js).
libdrv implémente le dialogue avec le web service DARVA : enveloppe SOAP, formats de messages, règles de validation et rôles.
Elle permet de lister, récupérer, acquitter et envoyer des messages : ordres de mission, avis de sinistre, suivis de dossier, etc.
Le passage à une nouvelle version de la norme DARVA se fait en changeant de version de libdrv, puis en adaptant le code appelant si nécessaire.
libdrv est un projet expérimental et indépendant. Il n'est ni affilié à DARVA, ni approuvé ou soutenu par DARVA.
Exemple
Ouvrir une session sandbox, lister les messages en attente, envoyer un ordre de mission, fermer la session.
Fonctionnement
Une seule bibliothèque C
Le traitement est entièrement réalisé dans libdrv, une bibliothèque partagée écrite en C.
Les bindings sont de fines surcouches et se comportent de la même façon dans chaque langage.
Interfaces de fonctions étrangères (FFI)
Chaque binding charge la bibliothèque via la FFI de sa plateforme : LibraryImport
(P/Invoke) en C#, l'API Foreign Function & Memory en Java, bun:ffi avec Bun et
node:ffi avec Node.js. Bun et Node.js partagent le même code TypeScript ; seul le
chargement de la bibliothèque diffère.
Validation
Chaque message est vérifié avant envoi : champs obligatoires, longueurs, valeurs de codes. Les rôles
également : le rôle de la session (assureur, expert, réparateur…) doit être autorisé à envoyer le
message, et celui du destinataire à le recevoir. Les erreurs indiquent l'élément en cause, par exemple
SE0080802/DE09840101.
Sérialisation
Les messages sont sérialisés en XML, dans l'enveloppe SOAP attendue par le web service. Les messages reçus sont analysés vers les mêmes classes que les messages envoyés ; les erreurs indiquent l'élément en cause.
Transport
Le HTTPS passe par libcurl, avec Mbed TLS pour le TLS. Les deux sont liées statiquement dans
libdrv : aucune autre dépendance n'est nécessaire. Une session utilise l'endpoint de
production ou celui de sandbox ; DRV_WS_URL permet d'utiliser un autre serveur, local par exemple.
Plateformes
Testée sur darwin-arm64 et linux-aarch64.