diff --git a/index.js b/index.js index f7d75aa76857d7bc995ccb73154ed537ed113cfe..5fb053641b9b2c9ef62e688808bf64904d0d468a 100644 --- a/index.js +++ b/index.js @@ -151681,7 +151681,7 @@ const fs = __webpack_require__(167); const path = __webpack_require__(160); -let manifest = typeof {"version":"1.0.4","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"} === 'undefined' ? {} : {"version":"1.0.4","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"}; +let manifest = typeof {"version":"1.0.5","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"} === 'undefined' ? {} : {"version":"1.0.5","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"}; if (false) {} diff --git a/manifest.konnector b/manifest.konnector index 2b7c44f64191713486682c6bc72da69c03837825..6c955abbee108ff1297791b4002bfcc07198368c 100644 --- a/manifest.konnector +++ b/manifest.konnector @@ -1,5 +1,5 @@ { - "version": "1.0.4", + "version": "1.0.5", "name": "GRDF", "type": "konnector", "language": "node", diff --git a/onDeleteAccount.js b/onDeleteAccount.js index ba0fa2a9bb0873cf216e4906b8f867adab882532..655edebfe7519886d323a45ceabaf5396f36fe74 100644 --- a/onDeleteAccount.js +++ b/onDeleteAccount.js @@ -151333,7 +151333,7 @@ const fs = __webpack_require__(167); const path = __webpack_require__(160); -let manifest = typeof {"version":"1.0.4","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"} === 'undefined' ? {} : {"version":"1.0.4","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"}; +let manifest = typeof {"version":"1.0.5","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"} === 'undefined' ? {} : {"version":"1.0.5","name":"GRDF","type":"konnector","language":"node","icon":"icon.png","slug":"grdfgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/grdf-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.grdf.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"grdf data":{"type":"com.grandlyon.grdf.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API GRDF ADICT","long_description":"Ce connecteur récupère la courbe d'energie en kWh enregistrée par un compteur Gazpar","permissions":{"grdf data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Gazpar et exposées par les API GRDF (consommations de gaz au jour, mois et année)."},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Gas consumption data fetched from GRDF ADICT API","long_description":"This konnector fetches the data curve in kWh gathered by Gaspar device.","permissions":{"grdf data":{"description":"Required to access and store the data collected by the Gazpar meter and exposed by GRDF APIs (daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2","on_delete_account":"onDeleteAccount.js"}; if (false) {} @@ -255866,190 +255866,190 @@ module.exports = JSON.parse("{\"version\":\"2020a\",\"zones\":[\"Africa/Abidjan| /* 1909 */ /***/ (function(module, exports, __webpack_require__) { -const { cozyClient, log } = __webpack_require__(1); -const getAccountId = __webpack_require__(1767); -const getAccountRev = __webpack_require__(1910); -const getAccountSecret = __webpack_require__(1911); -const moment = __webpack_require__(1769); -__webpack_require__(1906); -moment.locale("fr"); // set the language -moment.tz.setDefault("Europe/Paris"); // set the timezone +const { cozyClient, log } = __webpack_require__(1) +const getAccountId = __webpack_require__(1767) +const getAccountRev = __webpack_require__(1910) +const getAccountSecret = __webpack_require__(1911) +const moment = __webpack_require__(1769) +__webpack_require__(1906) +moment.locale('fr') // set the language +moment.tz.setDefault('Europe/Paris') // set the timezone async function onDeleteAccount(accountId) { - const accountRev = getAccountRev(); + const accountRev = getAccountRev() if (accountRev) { try { - let body = ""; - let access_token = ""; + let body = '' + let access_token = '' body = await cozyClient.fetchJSON( - "GET", + 'GET', `/data/io.cozy.accounts/${accountId}?rev=${accountRev}` - ); + ) if (body.oauth.access_token) { - access_token = body.oauth.access_token; + access_token = body.oauth.access_token } else { throw new Error( - "cozyClient.fetchJson account_rev has encountered an error" - ); + 'cozyClient.fetchJson account_rev has encountered an error' + ) } if (moment().diff(body.oauth.expires_at) > 0) { // token is expired, need a new one. grdf does not provide a refresh token // so we request a new one from a client_credentials query // first we fetch credentials secrets from account-type - const accountSecret = getAccountSecret(); + const accountSecret = getAccountSecret() if (accountSecret) { - var myTokenHeaders = new Headers(); + var myTokenHeaders = new Headers() myTokenHeaders.append( - "Content-Type", - "application/x-www-form-urlencoded" - ); - var urlencoded = new URLSearchParams(); - urlencoded.append("grant_type", "client_credentials"); - urlencoded.append("client_id", accountSecret.client_id); - urlencoded.append("client_secret", accountSecret.client_secret); - urlencoded.append("scope", "/adict/v1"); + 'Content-Type', + 'application/x-www-form-urlencoded' + ) + var urlencoded = new URLSearchParams() + urlencoded.append('grant_type', 'client_credentials') + urlencoded.append('client_id', accountSecret.client_id) + urlencoded.append('client_secret', accountSecret.client_secret) + urlencoded.append('scope', '/adict/v1') var requestOptionsToken = { - method: "POST", + method: 'POST', headers: myTokenHeaders, body: urlencoded, - redirect: "follow" - }; + redirect: 'follow' + } access_token = await fetch( - "https://sofit-sso-oidc.grdf.fr/openam/oauth2/realms/externeGrdf/access_token", + 'https://sofit-sso-oidc.grdf.fr/openam/oauth2/realms/externeGrdf/access_token', requestOptionsToken ) .then(async response => { if (response.status !== 200) { - throw new Error(response.status + " - " + response.statusText); + throw new Error(response.status + ' - ' + response.statusText) } - return response.text(); + return response.text() }) .then(result => { return result.match(/.+/g).map(s => { - result = JSON.parse(s); + result = JSON.parse(s) if (result.access_token) { - return result.access_token; + return result.access_token } - }); + }) }) .catch(error => { - log("debug", "Error from get access_token [onDeleteAccount]"); - throw error; - }); + log('debug', 'Error from get access_token [onDeleteAccount]') + throw error + }) } else { throw new Error( - "Access Token is expired and konnector failed to get a new one" - ); + 'Access Token is expired and konnector failed to get a new one' + ) } } - var myHeaders = new Headers(); - myHeaders.append("Content-Type", "application/json"); - myHeaders.append("Accept", "application/x-ndjson"); - myHeaders.append("Authorization", "Bearer " + access_token); + var myHeaders = new Headers() + myHeaders.append('Content-Type', 'application/json') + myHeaders.append('Accept', 'application/x-ndjson') + myHeaders.append('Authorization', 'Bearer ' + access_token) var raw = JSON.stringify({ - role_tiers: ["AUTORISE_CONTRAT_FOURNITURE"], - etat_droit_acces: ["Active"], + role_tiers: ['AUTORISE_CONTRAT_FOURNITURE'], + etat_droit_acces: ['Active'], id_pce: [body.oauth_callback_results.pce] - }); + }) var requestOptions = { - method: "POST", + method: 'POST', headers: myHeaders, body: raw, - redirect: "follow" - }; + redirect: 'follow' + } let accessRights = await fetch( - "https://api.grdf.fr/adict/v1/droits_acces", + 'https://api.grdf.fr/adict/v1/droits_acces', requestOptions ) .then(async response => { if (response.status !== 200) { - throw new Error(response.status + " - " + response.statusText); + throw new Error(response.status + ' - ' + response.statusText) } - return response.text(); + return response.text() }) .then(result => { return result.match(/.+/g).map(s => { - result = JSON.parse(s); + result = JSON.parse(s) if (result.id_droit_acces !== null) { - return result.id_droit_acces; + return result.id_droit_acces } - }); + }) }) .catch(error => { - log("debug", "Error from get droits_access"); - throw error; - }); + log('debug', 'Error from get droits_access') + throw error + }) // remove unwanted commas - accessRights = accessRights.toString().replace(/,\s*$/, ""); + accessRights = accessRights.toString().replace(/,\s*$/, '') if (accessRights) { - var myDeleteHeaders = new Headers(); - myDeleteHeaders.append("Cache-Control", "no-cache"); - myDeleteHeaders.append("Content-Type", "application/json"); - myDeleteHeaders.append("Authorization", "Bearer " + access_token); + var myDeleteHeaders = new Headers() + myDeleteHeaders.append('Cache-Control', 'no-cache') + myDeleteHeaders.append('Content-Type', 'application/json') + myDeleteHeaders.append('Authorization', 'Bearer ' + access_token) - var deleteRaw = JSON.stringify({}); + var deleteRaw = JSON.stringify({}) var deleteRequestOptions = { - method: "PATCH", + method: 'PATCH', headers: myDeleteHeaders, body: deleteRaw, - redirect: "follow" - }; + redirect: 'follow' + } - var url = "https://api.grdf.fr/adict/v1/droit_acces/" + accessRights; + var url = 'https://api.grdf.fr/adict/v1/droit_acces/' + accessRights await fetch(url, deleteRequestOptions) .then(async response => { if (response.status !== 200) { - throw new Error(response.status + " - " + response.statusText); + throw new Error(response.status + ' - ' + response.statusText) } - return response.text(); + return response.text() }) .catch(error => { - log("debug", "Error from delete droits_access"); - throw error; - }); + log('debug', 'Error from delete droits_access') + throw error + }) - log("debug", "Active consent was successfully removed"); + log('debug', 'Active consent was successfully removed') } else { - log("debug", "No active consent"); - throw new Error("No active access right was found for given user"); + log('debug', 'No active consent') + throw new Error('No active access right was found for given user') } } catch (err) { log( - "warn", + 'warn', `Error while trying to remove grdf consent (for ${accountRev}): ${err.message}` - ); + ) } } else { throw new Error( - "No account revision was found, something went wrong during the deletion of said account" - ); + 'No account revision was found, something went wrong during the deletion of said account' + ) } } -const accountId = getAccountId(); +const accountId = getAccountId() onDeleteAccount(accountId).then( () => { log( - "info", + 'info', `onDeleteAccount: Successfully retrieved grdf account from account doctype.` - ); + ) }, err => { log( - "error", + 'error', `onDeleteAccount: An error occured during getGrdfAccountInfos script: ${err.message}` - ); + ) } -); +) -module.exports = { onDeleteAccount }; +module.exports = { onDeleteAccount } /***/ }), diff --git a/package.json b/package.json index d491313b1d2d67e7b7f1cdfa16b169126a51a7de..16425a8e914db95e694040645ad53a86940861c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grdf", - "version": "1.0.4", + "version": "1.0.5", "description": "", "repository": { "type": "git", @@ -54,6 +54,7 @@ "eslint-config-cozy-app": "1.6.0", "git-directory-deploy": "1.5.1", "husky": "4.3.0", + "standard-version": "^9.5.0", "svgo": "1.3.2", "webpack": "4.44.2", "webpack-cli": "3.3.12"