diff --git a/source/src/index.js b/source/src/index.js index 6be76310651012215c090f1fe400891c1d26b8bf..52a1e9ae0833c9668de362c39fe667cfcca8f26f 100644 --- a/source/src/index.js +++ b/source/src/index.js @@ -22,20 +22,21 @@ module.exports = new BaseKonnector(start) async function start(fields) { log('info', 'Authenticating ...') - const javaxFaces = await getJavaxFaces() - await authenticate(fields.login, fields.password, javaxFaces) + const javaxFacesAuth = await getJavaxFacesAuth() + await authenticate(fields.login, fields.password, javaxFacesAuth) log('info', 'Successfully logged in') log('info', 'Fetching the data') - const javaxFaces2 = await getJavaxFaces2() - console.log('\njavaxfaces2:\n',javaxFaces2) + const javaxFacesData = await getJavaxFacesData() - await preGetData(javaxFaces2) - const data = await getData(javaxFaces2) - await toJSON(data) + await preGetData(javaxFacesData) + const data = await getData(javaxFacesData) + console.log(data) log('info', 'Saving data to Cozy') + await storeData(data) + } const startDate = moment() @@ -43,7 +44,7 @@ const startDate = moment() .format('DD/MM/YYYY') const endDate = moment().format('DD/MM/YYYY') -function getJavaxFaces() { +function getJavaxFacesAuth() { const javaxFacesRequest = { method: 'GET', uri:'https://monespace.grdf.fr/monespace/connexion', @@ -63,7 +64,7 @@ function getJavaxFaces() { }) } -function getJavaxFaces2() { +function getJavaxFacesData() { const javaxFacesRequest = { method: 'GET', uri:'https://monespace.grdf.fr/monespace/particulier/consommation/consommations', @@ -90,32 +91,8 @@ async function authenticate(login, password, javaxFaces) { 'https://monespace.grdf.fr/web/guest/monespace?p_p_id=EspacePerso_WAR_EPportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-2&p_p_col_count=1&_EspacePerso_WAR_EPportlet__jsfBridgeAjax=true&_EspacePerso_WAR_EPportlet__facesViewIdResource=%2Fviews%2FespacePerso%2FseconnecterEspaceViewMode.xhtml', jar: cookiejar, headers: { - 'User-Agent': - 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0', - Accept: 'application/xml, text/xml, */*; q=0.01', - 'Accept-Language': 'fr-FR,en-US;q=0.7,en;q=0.3', - Referer: 'https://monespace.grdf.fr/monespace/connexion', - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', - 'Faces-Request': 'partial/ajax', - 'X-Requested-With': 'XMLHttpRequest', - Connection: 'keep-alive', - Pragma: 'no-cache', - 'Cache-Control': 'no-cache', - 'DNT': '1' + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, - /*form: { - 'javax.faces.partial.ajax': 'true', - 'javax.faces.source': '_EspacePerso_WAR_EPportlet_:seConnecterForm%3AmeConnecter', - 'javax.faces.partial.execute':'_EspacePerso_WAR_EPportlet_:seConnecterForm', - 'javax.faces.partial.render': '_EspacePerso_WAR_EPportlet_:global+_EspacePerso_WAR_EPportlet_:groupTitre', - 'javax.faces.behavior.event': 'click', - 'javax.faces.partial.event': 'click', - '_EspacePerso_WAR_EPportlet_:seConnecterForm': '_EspacePerso_WAR_EPportlet_:seConnecterForm', - 'javax.faces.encodedURL': 'https://monespace.grdf.fr/web/guest/monespace?p_p_id=EspacePerso_WAR_EPportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-2&p_p_col_count=1&_EspacePerso_WAR_EPportlet__jsfBridgeAjax=true&_EspacePerso_WAR_EPportlet__facesViewIdResource=%2Fviews%2FespacePerso%2FseconnecterEspaceViewMode.xhtml', - '_EspacePerso_WAR_EPportlet_:seConnecterForm:email': 'raphael.youssoufian@club-internet.fr', - '_EspacePerso_WAR_EPportlet_:seConnecterForm:passwordSecretSeConnecter': 'MDEmde77', - 'javax.faces.ViewState': '880647373313844401:-7107293260060007058' - }*/ body: 'javax.faces.partial.ajax=true&javax.faces.source=_EspacePerso_WAR_EPportlet_%3AseConnecterForm%3AmeConnecter&javax.faces.partial.execute=_EspacePerso_WAR_EPportlet_%3AseConnecterForm&javax.faces.partial.render=_EspacePerso_WAR_EPportlet_%3Aglobal+_EspacePerso_WAR_EPportlet_%3AgroupTitre&javax.faces.behavior.event=click&javax.faces.partial.event=click&_EspacePerso_WAR_EPportlet_%3AseConnecterForm=_EspacePerso_WAR_EPportlet_%3AseConnecterForm&javax.faces.encodedURL=https%3A%2F%2Fmonespace.grdf.fr%2Fweb%2Fguest%2Fmonespace%3Fp_p_id%3DEspacePerso_WAR_EPportlet%26p_p_lifecycle%3D2%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_cacheability%3DcacheLevelPage%26p_p_col_id%3Dcolumn-2%26p_p_col_count%3D1%26_EspacePerso_WAR_EPportlet__jsfBridgeAjax%3Dtrue%26_EspacePerso_WAR_EPportlet__facesViewIdResource%3D%252Fviews%252FespacePerso%252FseconnecterEspaceViewMode.xhtml&_EspacePerso_WAR_EPportlet_%3AseConnecterForm%3Aemail='+login+'&_EspacePerso_WAR_EPportlet_%3AseConnecterForm%3ApasswordSecretSeConnecter='+password+'&javax.faces.ViewState='+javaxFaces } @@ -134,15 +111,7 @@ async function getData(javaxFaces){ uri:'https://monespace.grdf.fr/web/guest/monespace/particulier/consommation/consommations?p_p_id=eConsoconsoDetaille_WAR_eConsoportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-3&p_p_col_count=6&p_p_col_pos=3&_eConsoconsoDetaille_WAR_eConsoportlet__jsfBridgeAjax=true&_eConsoconsoDetaille_WAR_eConsoportlet__facesViewIdResource=%2Fviews%2Fconso%2Fdetaille%2FconsoDetailleViewMode.xhtml', jar: cookiejar, headers: { - 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0', - 'Accept': 'application/xml, text/xml, */*; q=0.01', - 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3', - 'Referer': 'https://monespace.grdf.fr/monespace/particulier/consommation/consommations', - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', - 'Faces-Request': 'partial/ajax', - 'X-Requested-With': 'XMLHttpRequest', - 'DNT': '1', - 'Connection': 'keep-alive' + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, body:'javax.faces.partial.ajax=true&javax.faces.source=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3ApanelTypeGranularite1%3A2&javax.faces.partial.execute=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3ApanelTypeGranularite1&javax.faces.partial.render=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3ArefreshHighchart+_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3AupdateDatesBean+_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3AboutonTelechargerDonnees+_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3ApanelTypeGranularite+_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3AidBlocSeuilParametrage&javax.faces.behavior.event=valueChange&javax.faces.partial.event=change&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille&javax.faces.encodedURL=https%3A%2F%2Fmonespace.grdf.fr%2Fweb%2Fguest%2Fmonespace%2Fparticulier%2Fconsommation%2Fconsommations%3Fp_p_id%3DeConsoconsoDetaille_WAR_eConsoportlet%26p_p_lifecycle%3D2%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_cacheability%3DcacheLevelPage%26p_p_col_id%3Dcolumn-3%26p_p_col_count%3D6%26p_p_col_pos%3D3%26_eConsoconsoDetaille_WAR_eConsoportlet__jsfBridgeAjax%3Dtrue%26_eConsoconsoDetaille_WAR_eConsoportlet__facesViewIdResource%3D%252Fviews%252Fconso%252Fdetaille%252FconsoDetailleViewMode.xhtml&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3AidDateDebutConsoDetaille='+startDate+'&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3AidDateFinConsoDetaille='+endDate+'&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3ApanelTypeGranularite1=jour&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3ApanelTypeGranularite3=mois&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3AselecteurVolumeType2=kwh&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3AselecteurVolumeType4=kwh&javax.faces.ViewState='+javaxFaces } @@ -150,8 +119,7 @@ async function getData(javaxFaces){ try { const response = await rp(dataRequest) var data = /donneesCourante = ".+"/.exec(response); - console.log(data[0]) - return data[0] + return formating(data[0]) } catch(error) { console.log(error) @@ -160,21 +128,13 @@ async function getData(javaxFaces){ } -async function preGetData(javaxFaces){ //POURQUOI? ... à voir +async function preGetData(javaxFaces){ const dataRequest = { method: 'POST', uri:'https://monespace.grdf.fr/web/guest/monespace/particulier/consommation/consommations?p_p_id=eConsoconsoDetaille_WAR_eConsoportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-3&p_p_col_count=6&p_p_col_pos=3&_eConsoconsoDetaille_WAR_eConsoportlet__jsfBridgeAjax=true&_eConsoconsoDetaille_WAR_eConsoportlet__facesViewIdResource=%2Fviews%2Fconso%2Fdetaille%2FconsoDetailleViewMode.xhtml', jar: cookiejar, headers: { - 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0', - 'Accept': 'application/xml, text/xml, */*; q=0.01', - 'Accept-Language': 'en-US,en;q=0.5', - 'Referer': 'https://monespace.grdf.fr/monespace/particulier/consommation/consommations', - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', - 'Faces-Request': 'partial/ajax', - 'X-Requested-With': 'XMLHttpRequest', - 'DNT': '1', - 'Connection': 'keep-alive' + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, body:'javax.faces.partial.ajax=true&javax.faces.source=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3Aj_idt113&javax.faces.partial.execute=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille%3Aj_idt113&javax.faces.partial.render=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille&javax.faces.behavior.event=click&javax.faces.partial.event=click&_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille=_eConsoconsoDetaille_WAR_eConsoportlet_%3AidFormConsoDetaille&javax.faces.encodedURL=https%3A%2F%2Fmonespace.grdf.fr%2Fweb%2Fguest%2Fmonespace%2Fparticulier%2Fconsommation%2Fconsommations%3Fp_p_id%3DeConsoconsoDetaille_WAR_eConsoportlet%26p_p_lifecycle%3D2%26p_p_state%3Dnormal%26p_p_mode%3Dview%26p_p_cacheability%3DcacheLevelPage%26p_p_col_id%3Dcolumn-3%26p_p_col_count%3D6%26p_p_col_pos%3D3%26_eConsoconsoDetaille_WAR_eConsoportlet__jsfBridgeAjax%3Dtrue%26_eConsoconsoDetaille_WAR_eConsoportlet__facesViewIdResource%3D%252Fviews%252Fconso%252Fdetaille%252FconsoDetailleViewMode.xhtml&javax.faces.ViewState='+javaxFaces } @@ -184,17 +144,27 @@ async function preGetData(javaxFaces){ //POURQUOI? ... à voir } catch(error) { throw new Error(errors.VENDOR_DOWN) } - } -async function toJSON(data){ + +function formating(data){ const dataArray = data.slice(19,-1).split(',') console.log(dataArray) var n = dataArray.length - const res = dataArray.reduce((accumulator, currentValue) => { + return dataArray.map(value => { n -- - return accumulator + '{ "value": ' + currentValue + ', "time": ' + moment().subtract(n, 'day').format('DD/MM/YYYY') + '},' - }, '') - return res + return { + value: parseInt(value, 10), + time: moment().subtract(n, 'day').format('DD/MM/YYYY') + } + }) +} + +async function storeData(data){ + return hydrateAndFilter(data, 'grdf.data', { + keys: ['time'] + }).then(filteredDocuments => { + addData(filteredDocuments, 'grdf.data') + }) }