diff --git a/konnector-dev-config.json b/konnector-dev-config.json deleted file mode 100755 index 2957a9cdafd5e58644768a0ed5a82254f28984d3..0000000000000000000000000000000000000000 --- a/konnector-dev-config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "COZY_URL": "http://cozy.tools:8080", - "fields": { - "login": "metropole_de_lyon_grdf", - "password": "P-tndq12i+c?" - } -} \ No newline at end of file diff --git a/manifest.konnector b/manifest.konnector index 121ce63df14e9dcfbc9eb6227d0e469c0f8dd157..f2b10bbe98f69c16516f07cc450e333f5ac137eb 100755 --- a/manifest.konnector +++ b/manifest.konnector @@ -1,5 +1,5 @@ { - "version": "1.0.1", + "version": "1.0.2", "name": "GRDF", "type": "konnector", "language": "node", diff --git a/package.json b/package.json index db211f3b0b6ea8ad4d6b7108acd34c1884c414d9..f262725d57f06b1f8ec131801b947b562113777d 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grdf", - "version": "1.0.1", + "version": "1.0.2", "description": "", "repository": { "type": "git", diff --git a/src/index.js b/src/index.js index ef68af9a493db7cfa9ccef40ce8b9db57e3859b8..384513e0da8cdfa49cee0c084c8a58e522226e3c 100755 --- a/src/index.js +++ b/src/index.js @@ -7,7 +7,6 @@ const { log } = require('cozy-konnector-libs') -// const https = require('https') //optional for ssl issue const getAccountId = require('./helpers/getAccountId') const moment = require('moment') require('moment-timezone') @@ -18,9 +17,13 @@ moment.tz.setDefault('Europe/Paris') // set the timezone const manualExecution = process.env.COZY_JOB_MANUAL_EXECUTION === 'true' ? true : false const startDate = manualExecution - ? moment().subtract(1, 'year').format('YYYY-MM-DD') - : moment().subtract(3, 'year').format('YYYY-MM-DD') - + ? moment() + .subtract(1, 'year') + .format('YYYY-MM-DD') + : moment() + .subtract(3, 'year') + .format('YYYY-MM-DD') + const endDate = moment() .startOf('day') .subtract(1, 'day') @@ -57,8 +60,6 @@ async function start(fields) { const grdfData = await getData(fields.access_token, id_pce) if (grdfData) { - // log("debug", "Clean data retrieve by old scraping konnector") - // await cleanOldData() log('debug', 'Process grdf daily data') const processedLoadData = await processData( grdfData, @@ -87,7 +88,7 @@ async function start(fields) { } } -//Retrieve data from grdf API +// Retrieve data from grdf API async function getData(token, idPCE) { log('debug', 'ENTERING GETDATA') var myHeaders = new Headers() @@ -118,8 +119,24 @@ async function getData(token, idPCE) { return result.match(/.+/g).map(s => { result = JSON.parse(s) if (result.statut_restitution !== null) { - log('debug', 'OAUTH OUTDATED : ' + result.statut_restitution.message) - throw errors.USER_ACTION_NEEDED_OAUTH_OUTDATED + log( + 'warn', + 'USER_ACTION_NEEDED_OAUTH_OUTDATED : ' + + result.statut_restitution.message + + ' / Period: ' + + result.periode.date_debut + + '/' + + result.periode.date_fin + ) + /** + * Handle no data issue when retreving grdf data. + * 1000008 code stands for "Il n'y a pas de données correspondant à ce PCE sur la période demandée". + * If there is no data, return null data in order to be filtered before saving + */ + if (result.statut_restitution.code !== '1000008') { + throw errors.USER_ACTION_NEEDED_OAUTH_OUTDATED + } + return { energie: null } } return result.consommation }) @@ -129,54 +146,11 @@ async function getData(token, idPCE) { throw error }) const filteredRep = rep.filter(function(el) { - return ( - el.energie != null || el.volume_brut != null - ) + return el.energie != null || el.volume_brut != null }) return filteredRep } -/** - * Get All actual daily data stored in the db - * Return the list of daily data - */ -// async function cleanOldData() { -// if(moment().diff(moment("2020-12-02", "DD/MM/YYYY")) > 0){ -// log('debug', 'No cleaning to do') -// return false -// } else { -// log('debug', 'Start cleaning old data') -// const documents = await cozyClient.data.findAll('com.grandlyon.grdf.day') -// if (documents && documents.length > 0) { -// const result = [] -// for (const doc of documents) { -// const deleteResult = await cozyClient.data.delete('com.grandlyon.grdf.day', doc) -// result.push(deleteResult) -// } -// log("debug", "NB OF DELETED OLD DAY DATA : " + result.length) -// } -// const documentsMonth = await cozyClient.data.findAll('com.grandlyon.grdf.month') -// if (documentsMonth && documentsMonth.length > 0) { -// const result = [] -// for (const doc of documentsMonth) { -// const deleteResult = await cozyClient.data.delete('com.grandlyon.grdf.month', doc) -// result.push(deleteResult) -// } -// log("debug", "NB OF DELETED OLD MONTH DATA : " + result.length) -// } -// const documentsYear = await cozyClient.data.findAll('com.grandlyon.grdf.year') -// if (documentsYear && documentsYear.length > 0) { -// const result = [] -// for (const doc of documentsYear) { -// await cozyClient.data.delete('com.grandlyon.grdf.year', doc) -// result.push(deleteResult) -// } -// log("debug", "NB OF DELETED OLD YEAR DATA : " + result.length) -// } -// return true -// } -// } - /** * Parse data * Remove existing data from DB using hydrateAndFilter @@ -216,7 +190,7 @@ async function formateData(data) { return data.map(record => { let date = moment(record.date_debut_consommation, 'YYYY/MM/DD h:mm:ss') let load = - record.energie && record.energie !== 0 + record.energie && record.energie !== 0 ? record.energie : record.volume_brut * record.coeff_calcul.coeff_conversion return {