-
Notifications
You must be signed in to change notification settings - Fork 64
3.2.2. Konnectors
Konnectors est une application qui récupère des données depuis différents services (factures, commits github...) et les importe dans la base de données de cozy, soit sous forme d'entrées dans le data-system, soit sous la forme de fichiers (factures par exemple) dans l'application files.
L'import de factures fait aussi le lien avec une opération bancaire. Dans Kresus, la facture apparait alors sous la forme d'un lien dans l'opération en question.
Deux options existent :
- Demander que le Konnector soit créé par la communauté. Dans ce cas, il suffit d'ouvrir un ticket sur le github du projet. Il faudra trouver quelqu'un qui possède un compte que ce fournisseur, ou alors lui transmettre les identifiants du compte en question.
- En implémenter un soi-même! Mais ce n'est pas si compliqué.
Un konnector ne fait rient d'autre que copier les différentes actions que ferait un navigateur si les informations étaient récupérées manuellement. Pour implémenter un konnector il faut donc :
- Comprendre comment fonctionne le système d’authentification du site du service
- Identifier comment récupérer les données
- L'intégrer à Konnectors
Il s'agit dans cette section de comprendre quelles sont les requêtes envoyées par le navigateur, les réponses du site et le contenues de celles-ci. Il faut pour cela faire appel à la console développeur de votre navigateur préféré. Pour firefox elle est accessible via Ctrl+Shift+C. La section utile pour comprendre les requêtes est la section "Réseau". Pour comprendre le fonctionnement de l'authentification simuler :
- une connexion réussie (avec des identifiants corrects)
- une connexion échouée (avec des identifiants incorrects, et sans identifiants)
Parfois la connexion se limite à un formulaire envoyé avec une requête POST, parfois c'est plus compliqué (présence de token authentification, utilisation de clavier virtuel...). L'analyse de la requête POST (émise lorsque l'on valide le formulaire) permet d'identifier :
- les champs de formulaire à remplir
- les éventuelles modifications subies par les champs (affichage différent de ce qui est émis)
- vers quelle URL est envoyée la requête
L'analyse de la réponse à ces requêtes permet d'identifier :
- la réponse du serveur en cas de connexion réussie
- la réponse du serveur en cas de connexion échouée (peut être différente si aucune information de connexion n'est envoyée ou si les identifiants sont incorrects)
Une fois l'analyse terminée, il est possible de passer à l'implémentation de la phase de connexion.
Cette phase consiste à identifier dans le code HTML de la page contenant des éléments à importer, la structure de chaque iterration des informations à récupérer. Par exemple la structure rassemblant l'ensemble des données relative à UNE facture. Ces structures ont souvent une class CSS commune, pour pouvoir les présenter de la même manière. La balise HTML doit permettre d'identifier la donnée structurée de manière certaine. il faut donc qu'elle ne soit pas utilisée autre part dans le code HTML, et elle doit être commune à l'ensemble des informations (toutes les factures). Ceci est important, car avec cette balise ou champ, il sera possible de naviguer automatiquement dans la page HTML pour récupérer toutes les données.
Chaque Konnector est implémenté dans un fichier unique localisé dans server/konnectors/. Pour créer un nouveau konnector, il suffit de copier un konnector existant, et de modifier les informations nécessaires :
- l'url de connexion
- les champs du formulaire
- l'url de récupération des données
- l'ensemble des données relatives au konnector (références au fournisseur, type d'information importée...)
- les informations permettant d'identifier les informations.
Et tester !