From 41756316a91ddfd0dcd47212a60a1592c915e8c8 Mon Sep 17 00:00:00 2001
From: i-vall <ivallanzasca@gmail.com>
Date: Fri, 10 May 2019 13:12:37 +0200
Subject: [PATCH] Fetching data basic function

---
 source/src/index.js | 127 ++++++++++++++++++++++++--------------------
 1 file changed, 70 insertions(+), 57 deletions(-)

diff --git a/source/src/index.js b/source/src/index.js
index c006bc8..092c6dd 100644
--- a/source/src/index.js
+++ b/source/src/index.js
@@ -21,22 +21,20 @@ module.exports = new BaseKonnector(start)
 // the account information come from ./konnector-dev-config.json file
 async function start(fields) {
   log('info', 'Authenticating ...')
-  //await preAuth()
 
   const javaxFaces = await getJavaxFaces()
-
-  //  console.log('first cookie jar:\n', cookiejar)
-  console.log(javaxFaces)
-
   await authenticate(fields.login, fields.password, javaxFaces)
 
-  //  console.log('\n\n\nsecond cookie jar:\n', cookiejar)
-
   log('info', 'Successfully logged in')
-  // The BaseKonnector instance expects a Promise as return of the function
   log('info', 'Fetching the data')
-  //await getData()
+
+  const javaxFaces2 = await getJavaxFaces2()
+  console.log('\njavaxfaces2:\n',javaxFaces2)
+
+  await preGetData(javaxFaces2)
+  await getData(javaxFaces2)
   log('info', 'Saving data to Cozy')
+
 }
 
 const startDate = moment()
@@ -44,46 +42,42 @@ const startDate = moment()
   .format('DD/MM/YYYY')
 const endDate = moment().format('DD/MM/YYYY')
 
-function preAuth() {
-  const preAuthRequest = {
+function getJavaxFaces() {
+  const javaxFacesRequest = {
     method: 'GET',
-    uri: 'https://monespace.grdf.fr/monespace/connexion',
+    uri:'https://monespace.grdf.fr/monespace/connexion',
     jar: cookiejar,
     headers: {
-      Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
-      'Cache-Control': 'max-age=0',
-      Dnt: '1',
-      'User-Agent':
-        'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0',
-      Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
-      'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
-      Referer: 'https://www.grdf.fr/',
-      Connection: 'keep-alive'
+      Host: 'monespace.grdf.fr'
+    },
+    followAllRedirects: true,
+    transform: function(body) {
+      const $ = cheerio.load(body)
+      return $('[name = "javax.faces.ViewState"]').eq(5).val() //!!!\\ il y en a 10, c'est le 5e
     }
   }
-  return rp(preAuthRequest).catch(() => {
+
+  return rp(javaxFacesRequest).catch(() => {
     throw new Error(errors.VENDOR_DOWN)
   })
 }
 
-function getJavaxFaces() {
+function getJavaxFaces2() {
   const javaxFacesRequest = {
     method: 'GET',
-    uri: 'https://monespace.grdf.fr/monespace/connexion',
+    uri:'https://monespace.grdf.fr/monespace/particulier/consommation/consommations',
     jar: cookiejar,
     headers: {
       Host: 'monespace.grdf.fr'
     },
-    followAllRedirects: true,
     transform: function(body) {
       const $ = cheerio.load(body)
-      return $('.mdpOublie')
-        .next()
-        .val() //!!!\\ il y en a 10, c'est le 5e
+      return $('[name = "javax.faces.ViewState"]').eq(7).val() //!!!\\ c'est le 7e
     }
   }
 
-  return rp(javaxFacesRequest).catch(() => {
+  return rp(javaxFacesRequest).catch((error) => {
+    console.log(error)
     throw new Error(errors.VENDOR_DOWN)
   })
 }
@@ -104,10 +98,9 @@ async function authenticate(login, password, javaxFaces) {
       'Faces-Request': 'partial/ajax',
       'X-Requested-With': 'XMLHttpRequest',
       Connection: 'keep-alive',
-      //Cookie: 'dtCookie=DE9B4CA6869881C055D6E699F3CFDFB8|1|2||1; JSESSIONID_EP=25559043075796265A8F2087CF27E404; ROUTEID_EP=.2; COOKIE_SUPPORT=true; GUEST_LANGUAGE_ID=fr_FR',
       Pragma: 'no-cache',
       'Cache-Control': 'no-cache',
-      DNT: '1'
+      'DNT': '1'
     },
     /*form: {
       'javax.faces.partial.ajax': 'true',
@@ -122,52 +115,72 @@ async function authenticate(login, password, javaxFaces) {
       '_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
+    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
   }
 
   try {
     const response = await rp(authRequest)
     console.log(response)
-    fs.writeFile('response.html', response, err => {
-      if (err) throw err
-      console.log('The file has been saved!')
-    })
-    //console.log(cookiejar)
   } catch (error) {
-    fs.writeFile('error.html', error, err => {
-      if (err) throw err
-      console.log('The file has been saved!')
-    })
     console.log(error)
-    //console.log(cookiejar)
     throw new Error(errors.LOGIN_FAILED)
   }
 }
 
-async function getData() {
+async function getData(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=/views/conso/detaille/consoDetailleViewMode.xhtml',
+    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: {
-      Host: 'monespace.grdf.fr',
-      'Content-Type': 'application/x-www-form-urlencoded'
+      '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'
     },
-    body: ''
+    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
   }
 
   try {
     const response = await rp(dataRequest)
-    var data = /donneesCourante = ".+"/.exec(response)
-    console.log(response)
-  } catch (error) {
+    var data = /donneesCourante = ".+"/.exec(response);
+    console.log(data[0])
+
+  } catch(error) {
+      console.log(error)
+      throw new Error(errors.VENDOR_DOWN)
+  }
+}
+
+
+async function preGetData(javaxFaces){ //POURQUOI? ... à voir
+  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'
+    },
+    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
+  }
+
+  try {
+    const response = await rp(dataRequest)
+  } catch(error) {
     throw new Error(errors.VENDOR_DOWN)
   }
+
 }
-- 
GitLab