Développement connecteur Tag&Pass


#1

Bonjour à tous,

Je viens de rejoindre la communauté Cozy et je trouve le concept de connecteurs excellent !

Du coup, hier j’ai développé mon premier connecteur pour récupérer les factures PDF du service en ligne Tag&Pass, pour le réseau de transport en commun de Grenoble (géré par la Semitag/SMTC).

Je l’ai testé avec mon compte en mode standalone, ça fonctionne bien, tous les PDFs sont téléchargés.
J’ai suivi au mieux la documentation disponible mais il reste surement des choses à corriger.
Typiquement, j’ai normalement déclaré les metadata suffisantes pour gérer la liaison des factures avec les intitulés bancaires mais je ne peux pas le tester en local.
D’ailleurs la documentation n’est pas très explicite à ce sujet, mais puis-je tester mon connecteur directeur avec mon instance personnelle sur cozy.io ?

Le code est sur GitHub : https://github.com/rclement/cozy-konnector-tagandpass
Site de Tag&Pass : https://www.tag.fr/99-tag-and-pass.htm

Comment procéder pour la suite ?

Merci,
A bientôt !


#2

Bonjour @rmnclmnt,

Bienvenue à bord :smile:

Je suis heureux de voir que les liens forts qu’entretient Cozy avec la région grenobloise perdurent.

Pour la suite, nous allons relire le code de ton connecteur et si tout est bon, le publier rapidement.

Merci beaucoup !


#3

Bonjour @Clochix,

Merci pour le rapide retour !

Juste pour info j’ai testé le connecteur avec yarn dev sur mon instance *.mycozy.cloud :

  • Les factures sont bien importés dans Cozy Drive
  • Le dossier d’import est /cozy-konnector-dev-root et les factures sont directement à l’intérieur
  • Re-lancer yarn dev détecte bien les factures existantes et n’importe pas de doublons

Bon dimanche !


#4

Super ! Je voulais moi-même le faire mais je suis content que quelqu’un d’autre s’en charge :smiley:. J’ai hâte de pouvoir l’essayer.


#5

Salut !

Voici mes retours sur ton code :

https://github.com/rclement/cozy-konnector-tagandpass/blob/eb5281a3239b2cda6cb8b6e4a648aa8b40e8fc97/src/index.js#L64-L73 ici, à la place de throw new Error('LOGIN_FAILED') tu peux utiliser errors de cozy-konnector-libs qui regroupe toutes les erreurs que nous utilisons pour les connecteurs (LOGIN_FAILED, VENDOR_DOWN…) :

const {
  BaseKonnector,
  requestFactory,
  saveBills,
  errors, // <---
  log
} = require('cozy-konnector-libs')

Tu peux ensuite faire :

throw new Error(errors.LOGIN_FAILED)

Ensuite, à part le nom du fichier à changer (comme pour Thomann), tout me semble bon.
Encore une fois, nous attendons ton retour, et n’hésite surtout pas si tu as des questions !


#6

@Xn1a Merci pour la re-lecture !

En effet, je ne sais pas pourquoi je n’ai pas utilisé l’enum errors. C’est corrigé.
De même pour le filename, j’ai fixé le format des factures avec les nouvelles conventions.

Bonne soirée,
A bientôt !


#7

Hello @rmnclmnt,

Nous avons reçu de nombreuses contributions ses dernières semaines et nous les dépilons au fur et à mesure.

On pense pouvoir revenir vers toi dans les 10 jours.

A très bientôt

Mathieu


#8

Salut @rmnclmnt

Si tu le veux bien, je vais t’accompagner jusqu’à la mise en prod dans le store cozy de ce connecteur.

J’ajoute une remarque sur le code. On essait de systématiquement utiliser le mode async/await plutôt que des .then() pour gérer le synchronisme, c’est souvent plus lisible pour tout le monde. Mais c’est un détail qui ne vaut pas le coup de tout changer.

J’ai pu récupéré un compte, j’ai testé le connecteur en mode standalone mais je finis inexorablement en LOGIN_FAILED. Est ce que tout marche toujours bien pour ton compte ?

Le compte a peut etre une particularité, il n’utilise pas l’appli tag&pass mais les cartes OURA.
J’essaie de mettre la main sur un second compte d’ici demain.

A bientot
Lucas


#9

Donc je te confirme que le problème est spécifique aux comptes avec carte OURA, un autre marche trés bien.

Je vais travailler sur un patch qui détectera ce cas spécifique et levera une erreur approprié.

Je te propose en parallèle de lancer le packaging.
Est ce que tu peux me transmettre le repository afin que je le place sur l’organisation konnectors. Je te crédite des droits dés la réception. Mon pseudo github est lucs_t
Tu peux bien sur vérifier que j’appartient à l’organisation konnectors

Dans l’attente de te lire.

Lucas


#10

@lucas Merci pour ton retour !

En effet, je ne sais pas pourquoi je n’avais pas utilisé le async / await dans la fonction authenticate (à mon avis c’est du refactoring qui est passé à la trappe). C’est corrigé.

Je confirme que le site ne sert que pour les utilisateurs du service Tag&Pass du réseau Tag/Semitag.

J’ai tenté de t’ajouter aux collaborateurs du repo GitHub pour que tu ais les droits de push, mais je ne trouve aucun utilisateur du nom de lucs_t. Une coquille dans le username ?


#11

Pardon, il n’y a pas d’underscore lucst


#12

Pas de problème, invitation envoyée !


#13

Hello @rmnclmnt,
J’ai vu tes commits sur le async/await la semaine dernière, c’est parfait comme ca.
J’ai fait des tests avec un compte carte OURA, on finit en LOGIN_FAILED, on va laisser comme ca, et préciser dans la description les limitations au compte tag&pass.

Il faut se connecter directement sur le site tag.fr et scraper via le html qui propose les 12 derniers mois pour les cartes OURA.
Pour une évolution future, si il y a une demande ou un conrtibuteur motivé.

Je ne peux pas transférer le dépot, même en tant que collaborateur. C’est le propriétaire(toi) qui doit le faire. Voir ici : https://help.github.com/en/articles/transferring-a-repository#transferring-a-repository-owned-by-your-personal-account
Tranfére le directement sur ‘konnectors’, c’est bien si ca marche.
Sinon passe le par mon compte.

C’est important pour pouvoir connecter facilement tous nos outils (travis, sentry, renovate)
On s’engage bien sur à laisser tes crédits et ton site perso.

Dés que c’est fait j’attaque le packaging.


#14

Salut @lucas,

Merci pour le dernier retour !

Autant pour moi, je pensais que tu pouvais le transférer du moment que tu avais les droits push, mais en effet seul le propriétaire du dépôt peut effectuer la manip’.

Je viens d’ordonner le transfert vers ton compte utilisateur (j’ai tenté vers l’organisation konnectors mais je n’ai pas les droits de création de dépôts sur l’organisation).

A bientôt !


#15

Hello @rmnclmnt

Je viens de finir le packaging. Le build est au vert \o/
A noter si tu ne veux pas regarder mes commits en détail :
-> J’ai renommé le repo avec un nom court : konnectors/tagandpass
-> J’ai conservé uniquement le yarn.lock et supprimé le package-lock.json
-> Il était connecté à travis-ci.org alors je n’ai pas changé pour le .com

Je sors une béta, qui se base sur la branch release-1.0.0, il faut commiter dedans si on veut corriger un problème, je vais demander une passe au produit sur les descriptions pour les uniformiser. Et je te tiens au courant.

Est ce que tu possèdes un cozy sur notre prod? (si oui donne moi le nom en privée que je te mettes la béta)
Si tu es auto-hebergé, je te fournirais la commande cozy-stack qui va bien.


#16

@rmnclmnt Ca y est le connecteur est disponible dans le store.

J’ai pu complétement testé la béta avec le compte en ma possession.

Merci à toi.


#17

@lucas Super, merci beaucoup ! :champagne:
Je viens de tester sur mon Cozy, ça marche super !