diff --git a/index.js b/index.js index 77710e9be0d1bc2563d085d5b490c045307ec6f5..a30b96e99712546c83cd66fb1bdfcce11ffebe60 100644 --- a/index.js +++ b/index.js @@ -38,7 +38,7 @@ const { verifyContract } = __webpack_require__(1599) const { terminateContract } = __webpack_require__(1601) const { getContractStartDate } = __webpack_require__(1602) const { getAccount, saveAccountData } = __webpack_require__(1603) -const { iSLocal } = __webpack_require__(1604) +const { getAccountId } = __webpack_require__(1605) moment.locale('fr') // set the language moment.tz.setDefault('Europe/Paris') // set the timezone @@ -53,7 +53,6 @@ let startDailyDateString = startDailyDate.format('YYYY-MM-DD') const startLoadDate = moment().subtract(7, 'day') const endDate = moment() const endDateString = endDate.format('YYYY-MM-DD') -const ACCOUNT_ID = iSLocal() ? 'default_account_id' : 'enedis-sge-grandlyon' module.exports = new BaseKonnector(start) @@ -67,14 +66,14 @@ module.exports = new BaseKonnector(start) * @param {{secret: fields}} cozyParameters */ async function start(fields, cozyParameters) { - log('info', 'Gathering data ...') + log('info', 'Konnector configuration ...') + const ACCOUNT_ID = await getAccountId() const pointId = fields.pointId let baseUrl = fields.wso2BaseUrl let apiAuthKey = fields.apiToken let contractId = fields.contractId //TODO switch variable to english let sgeLogin = fields.sgeLogin - log('info', 'Authenticating ...') //TODO: Verify if condition is working in local and on build version if (cozyParameters && Object.keys(cozyParameters).length !== 0) { log('debug', 'Found COZY_PARAMETERS') @@ -84,6 +83,12 @@ async function start(fields, cozyParameters) { sgeLogin = cozyParameters.secret.sgeLogin } + // Prevent missing configuration + if (!baseUrl || !apiAuthKey || !contractId || !sgeLogin) { + log('error', `Missing configuration secrets`) + throw errors.VENDOR_DOWN + } + /** * If it's first start we have to do the following operations: * - verify pdl are matching @@ -94,7 +99,7 @@ async function start(fields, cozyParameters) { */ log('info', 'User Logging...') - if (await isFirstStart(await getAccount('default_account_id'))) { + if (await isFirstStart(await getAccount(ACCOUNT_ID))) { const user = await verifyUserIdentity(fields, baseUrl, apiAuthKey, sgeLogin) let consent = await createBoConsent( @@ -148121,7 +148126,7 @@ const fs = __webpack_require__(149); const path = __webpack_require__(142); -let manifest = typeof {"version":"1.0.1","name":"Enedis SGE","type":"konnector","language":"node","icon":"icon.png","slug":"enedis-sge-grandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-sge-konnector.git","editor":"Cozy","vendor_link":"Link to the target website","categories":["energy"],"frequency":"daily","fields":{"firstname":{"type":"string"},"lastname":{"type":"string"},"address":{"type":"string"},"postalCode":{"type":"string"},"pointId":{"type":"number"}},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"files":{"type":"io.cozy.files"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"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 Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"files":{"description":"Cozy files"},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"files":{"description":"Cozy files"},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"} === 'undefined' ? {} : {"version":"1.0.1","name":"Enedis SGE","type":"konnector","language":"node","icon":"icon.png","slug":"enedis-sge-grandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-sge-konnector.git","editor":"Cozy","vendor_link":"Link to the target website","categories":["energy"],"frequency":"daily","fields":{"firstname":{"type":"string"},"lastname":{"type":"string"},"address":{"type":"string"},"postalCode":{"type":"string"},"pointId":{"type":"number"}},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"files":{"type":"io.cozy.files"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"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 Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"files":{"description":"Cozy files"},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"files":{"description":"Cozy files"},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"}; +let manifest = typeof {"version":"1.0.1","name":"Enedis SGE","type":"konnector","language":"node","icon":"icon.png","slug":"enedis-sge-grandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-sge-konnector.git","editor":"Cozy","vendor_link":"Link to the target website","categories":["energy"],"frequency":"daily","fields":{"firstname":{"type":"string"},"lastname":{"type":"string"},"address":{"type":"string"},"postalCode":{"type":"string"},"city":{"type":"string"},"pointId":{"type":"number"}},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"files":{"type":"io.cozy.files"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"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 Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"files":{"description":"Cozy files"},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"files":{"description":"Cozy files"},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"} === 'undefined' ? {} : {"version":"1.0.1","name":"Enedis SGE","type":"konnector","language":"node","icon":"icon.png","slug":"enedis-sge-grandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-sge-konnector.git","editor":"Cozy","vendor_link":"Link to the target website","categories":["energy"],"frequency":"daily","fields":{"firstname":{"type":"string"},"lastname":{"type":"string"},"address":{"type":"string"},"postalCode":{"type":"string"},"city":{"type":"string"},"pointId":{"type":"number"}},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"files":{"type":"io.cozy.files"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"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 Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"files":{"description":"Cozy files"},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"files":{"description":"Cozy files"},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"}; if (process.env.NODE_ENV !== undefined && process.env.NODE_ENV !== 'none' && process.env.NODE_ENV !== 'production') { try { @@ -224006,8 +224011,6 @@ async function findUserPdl( throw errors.LOGIN_FAILED }) - log('info', rechercherPoint(appLogin, name, postalCode, inseeCode, address)) - const parsedReply = await xml2js.parseStringPromise(response.body, { tagNameProcessors: [parseTags], valueProcessors: [parseValue], @@ -224015,10 +224018,8 @@ async function findUserPdl( }) try { - log('info', parsedReply) return parseUserPdl(parsedReply) } catch (error) { - log('info', parsedReply) log('error', 'Error while parsing user PDL: ' + error) throw errors.LOGIN_FAILED } @@ -228286,12 +228287,32 @@ module.exports = { getAccount, saveAccountData } /***/ ((module) => { function iSLocal() { - return process.env.NODE_ENV === 'development' || process.env.NODE_ENV + return ( + process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'local' + ) } module.exports = { iSLocal } +/***/ }), +/* 1605 */ +/***/ ((module) => { + +function getAccountId() { + try { + return process.env.NODE_ENV === 'development' || + process.env.NODE_ENV === 'test' + ? 'fakeAccountId' + : JSON.parse(process.env.COZY_FIELDS).account + } catch (err) { + throw new Error(`You must provide 'account' in COZY_FIELDS: ${err.message}`) + } +} + +module.exports = { getAccountId } + + /***/ }) /******/ ]); /************************************************************************/ diff --git a/manifest.konnector b/manifest.konnector index b9e2ba231ca70d9e21c33b9da6227d5761068a89..ea10c3b916b828333c16faf85c3d8ef685e318e3 100644 --- a/manifest.konnector +++ b/manifest.konnector @@ -23,6 +23,9 @@ "postalCode": { "type": "string" }, + "city": { + "type": "string" + }, "pointId": { "type": "number" }