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.