Double requete dans saveBills

Bonjour,

Je suis en train de développer un connecteur pour la SIBAM (société de gestion d’eau). Dans leur système, les factures sont identifiés par un ID et il faut faire une requete avec cet ID pour “préparer” la requête de téléchargement de la facture (qui est sur une URL fixe, donc pas dépendante de la facture à télécharger).
En gros, il faut faire ça:

  1. Requête POST setBillID avec ID = factureID
  2. Puis, si succès, requête GET downloadBill (pas de paramêtre)

J’ai essayé de mettre une function async pour le membre fileuri de mes objets, avec un await request pour la requete POST puis je retourne l’URL downloadBill, mais ça ne marche pas. J’ai une erreur immediate de saveBill, le temps que la Promise se resolve (qui elle fonctionne).

Quelle est la technique à suivre dans ce cas ? J’ai pensé importer un sync-request afin de faire une requête synchrone dans fileuri, mais ça ne me semble pas bon, vu que ça va ralentir tout le programme nodeJS.

Ok, j’ai trouvé une alternative en utilisant le membre fetchFile à la place. Je pense que c’est bon.
Il fonctionne en mode standalone. Cependant, dès que j’essaie de lancer un yarn dev, j’ai la demande OAuth qui aboutit (la première fois, j’ai eu la demande que j’ai autorisé dans le navigateur), mais après ça, j’ai une exception qui n’a rien à voir avec mon code:

$ yarn dev
yarn run v1.17.3
$ cozy-konnector-dev
manifest: debug : "scopes found"  : [
  'io.cozy.bank.operations',
  'io.cozy.bills',
  'io.cozy.files',
  'io.cozy.accounts'
]
create-cli-client: debug : Using saved credentials in /Users/cyril/dev/cozy-konnector-sibam/.token.json
ReferenceError: Headers is not defined
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/pouchdb-browser/lib/index.js:2863:9)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:3944:18)
    at __webpack_require__ (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:20:30)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:3621:23)
    at __webpack_require__ (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:20:30)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:1367:16)
    at __webpack_require__ (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:20:30)
    at /Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:63:18
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:66:10)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-konnector-libs/dist/libs/cozyclient.js:12:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Pour info, le code du konnecteur est ici

Hello @X-Ryl669

Pour ton premier souci, tu peux passer une fonction à fetchFile comme tu as fait. Si tu as encore besoin de plus de liberté, tu peux te permettre de gérer ce genre de cas avec une surcouche au saveBills, c’est un peu moins efficace comme code.

for bill of bills  {
  Do the POST
  Do the saveBills for only one bill
}

Pour le problème avec yarn dev, j’arrive à le reproduire de mon coté. Mais je ne trouve pas la cause.
C’est cozy-jobs-cli qui est en cause, ou une de ces dépendances.
On regarde plus sérieusement ce bug de notre coté dés Lundi.

Si tu veux procéder à un test ce we. Fait un ‘yarn deploy’ (il va builder localement, puis pusher ce build sur la branche build-debug de ton repo)
De la tu peux, soit l’installer sur ton cozy si tu es auto hebergé ou en local.
Soit je peux te mettre manuellement cette version sur un cozy chez nous (il faudra que tu me communiques l’url ici ou en message privée)

En l’état, le mode dev n’est pas utilisable

Dans tout les cas, je reprends contact avec toi pour attaquer le packaging dés la semaine prochaine.

Bon réveillon.
Lucas

Comment puis-je l’installer sur mon cozy auto hébergé ?

Quelque chose comme

cozy-stack konnectors install sibam git://github.com/X-Ryl669/cozy-konnector-sibam#build-debug

Si tu as une seul instance, il la sélectionne peut être automatiquement, sinon rajoute un --domain

Merci, ça marche nickel synchro et tout! Thanks.

Salut @X-Ryl669 , pour le problème de yarn dev qui ne fonctionne pas, c’est corrigé avec la version 4.38.2 de cozy-konnector-libs et 1.15.4 de cozy-jobs-cli. Si tu veux tester de ton côté, je veux bien tes retours.

1 Like

Hello, @X-Ryl669

Est ce que tu es prêt à porter ton connecteur sur le store pour les autres utilisateurs cozy ?
Si oui je vais review rapidement ton code demain.
Il faut qu’on transfère ton repo vers l’organisation konnectors, le mieux c’est de me l’envoyer vers mon profil Github ‘LucsT’, je ferais le transfert, puis je te crédite des droits en écriture dessus.

Ensuite je m’occuperais de brancher l’integration continue et autres.

Lucas

1 Like

Ça a pas l’air de marcher pour moi. J’ai mis à jour les versions dans le package.json, lancé un yarn install:

yarn install
yarn install v1.17.3
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning " > cozy-konnector-libs@4.38.1" has unmet peer dependency "pdfjs@^2.3.0".
warning " > cozy-konnector-libs@4.38.1" has unmet peer dependency "pdfjs-dist@^2.1.266".
warning " > cozy-konnector-libs@4.38.1" has unmet peer dependency "zombie@^6.1.4".
warning "cozy-konnector-libs > cozy-client-js@0.17.4" has unmet peer dependency "babel-polyfill@^6.26.0".
warning "cozy-konnector-libs > cozy-doctypes@1.75.1" has unmet peer dependency "@babel/runtime@>=7.12.5".
warning "cozy-konnector-libs > cozy-doctypes@1.75.1" has unmet peer dependency "cozy-stack-client@>=13.15.1".
warning "cozy-konnector-libs > cozy-client@16.10.2" has unmet peer dependency "cozy-ui@^34.0.0".
warning "cozy-konnector-libs > cozy-client@16.10.2" has unmet peer dependency "react@^16.7.0".
warning "cozy-konnector-libs > cozy-client > react-redux@7.2.2" has unmet peer dependency "react@^16.8.3 || ^17".
warning "cozy-jobs-cli > cozy-konnector-libs@4.38.2" has unmet peer dependency "pdfjs@^2.3.0".
warning "cozy-jobs-cli > cozy-konnector-libs@4.38.2" has unmet peer dependency "pdfjs-dist@^2.1.266".
warning "cozy-jobs-cli > cozy-konnector-libs@4.38.2" has unmet peer dependency "zombie@^6.1.4".
[4/4] 🔨  Building fresh packages...
success Saved lockfile.

Mais j’ai toujours le problème:

$ yarn dev
yarn run v1.17.3
$ cozy-konnector-dev
manifest: debug : "scopes found"  : [
  'io.cozy.bank.operations',
  'io.cozy.bills',
  'io.cozy.files',
  'io.cozy.accounts'
]
create-cli-client: debug : Using saved credentials in /Users/cyril/dev/cozy-konnector-sibam/.token.json
ReferenceError: Headers is not defined
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/pouchdb-browser/lib/index.js:2863:9)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:3944:18)
    at __webpack_require__ (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:20:30)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:3621:23)
    at __webpack_require__ (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:20:30)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:1367:16)
    at __webpack_require__ (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:20:30)
    at /Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:63:18
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-client-js/dist/cozy-client.node.js:66:10)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/cyril/dev/cozy-konnector-sibam/node_modules/cozy-jobs-cli/node_modules/cozy-konnector-libs/dist/libs/cozyclient.js:12:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Je ne comprends pas ce que tu veux que je fasse. Le repository est ici

Il faudrait que tu me transfère le repo pour que je puisse le transférer ici


C’est dans les paramètres du repo.

J’attaque le packaging pour le store dés que c’est fait.
A priori je n’ai rien vu de dérangeant dans le code, tes bills ont l’air correctement générée.
Rien à redire, je referais peut être une description, je vais demander un logo en svg chez nous, c’est toujours plus léger, et c’est bon pour le temps de chargement du store, etc…

Dans les settings, je clique Transfer, je mets konnectors dans la destination, je tape la phrase clé, et Github retourne: “You don’t have the permission to create public repositories on konnectors”
J’espère que vous avez reçu la demande de votre côté, car moi, je ne peux rien faire de plus du mien.

C’est pour ca que je te demande de le faire passer par mon profil LucsT

Pour que je puisse le transférer vers konnector ensuite.

Connecteur bien arrivé. J’ai raccourci le nom du repo.

On le trouve ici

Je vais faire le packaging

1 Like

@X-Ryl669

Ca y est j’ai fait le packaging, j’ai sorti une version beta dispo dans le registry.
Elle ne sera visible dans le store que quand nous la passerons en stable.

Est ce que tu pourrais la tester en bonne et due forme ?
Pour l’installer sur ton instance auto hebergé, tu fais

cozy-stack konnectors install sibam registry://sibam/beta

Il y a deux choses qui ont attiré mon attention dans le code.

L78 tu as une requête qui est commentée ‘request(perUserUrl)’
L182 Dans le normalizePrice, tu remplaces le signe ‘Livre sterling’

Est ce que c’est normal ?

Je te laisse tester ca ce we si tu en as la possibilité, je peux te ressortir une béta en cas de besoin.
Commit soit dans la branch release-1.0.0 si tu es à l’aise avec git, sinon dans le master, je me débrouillerais.

Lucas

Corrigé et mis à jour. Ça fonctionne nickel pour moi en version beta. Merci.
J’ai commité le changement que tu me demandais dans release-1.0.0 et j’ai mis à jour master avec les nouvelles versions des dépendences.

J’ai publié la version stable \o/ Merci à toi !

Tu peux faire un dernier test avec si tu le souhaites, soit via le store, soit en l’installant avec le channel registry ‘registry://sibam/stable’

J’ai pas intégré les nouvelles libs, il aurait fallu re publier une béta, etc… pour pas un grand bénéfice, on était déja plutôt à jour.

Donc, pour une futur évolution, ou problème, tu as le droit de publier sur le repo ce que tu veux, si le build réussi, tu peux même tester le master avec le channel ‘registry://sibam/dev’
Par contre, il faut repasser par moi (CozyCloud) pour publier en stable. Pour des raisons de sécurité, on jette un oeil au code avant de le publier sur le store. On reste dispo sur le forum, via le contact support, …

A+

1 Like