getData_ functions check return false if no data

This commit is contained in:
KiboOst
2019-12-07 13:37:06 +01:00
parent 37ca955c08
commit d66ae0a6c6
2 changed files with 45 additions and 34 deletions

View File

@@ -96,6 +96,9 @@ Vous pouvez bien sûr personnaliser le fichier, pour lire un autre json avec d'a
## Version history ## Version history
#### v 0.12 (2019-12-07)
- Modified: getData_perhour(), getData_perday(), getData_permonth(), getData_peryear() now return false if data from Enedis are not correct (server down, etc).
#### v0.1 (2018-02-25) #### v0.1 (2018-02-25)
- Première version ! - Première version !

View File

@@ -8,7 +8,7 @@
class Linky{ class Linky{
public $_version = '0.11'; public $_version = '0.12';
public function getData_perhour($date) public function getData_perhour($date)
{ {
@@ -22,6 +22,8 @@ class Linky{
$resource_id = 'urlCdcHeure'; $resource_id = 'urlCdcHeure';
$result = $this->getData($resource_id, $startDate, $endDate); $result = $this->getData($resource_id, $startDate, $endDate);
if (!isset($result['graphe']['data'])) return false;
//format this correctly: //format this correctly:
$returnData = array(); $returnData = array();
$startHour = new DateTime('23:30'); $startHour = new DateTime('23:30');
@@ -56,6 +58,8 @@ class Linky{
$resource_id = 'urlCdcJour'; $resource_id = 'urlCdcJour';
$result = $this->getData($resource_id, $startDate, $endDate); $result = $this->getData($resource_id, $startDate, $endDate);
if (!isset($result['graphe']['data'])) return false;
//format this correctly: //format this correctly:
$returnData = array(); $returnData = array();
@@ -81,6 +85,8 @@ class Linky{
$resource_id = 'urlCdcMois'; $resource_id = 'urlCdcMois';
$result = $this->getData($resource_id, $startDate, $endDate); $result = $this->getData($resource_id, $startDate, $endDate);
if (!isset($result['graphe']['data'])) return false;
//format this correctly: //format this correctly:
$fromMonth = DateTime::createFromFormat('d/m/Y', $startDate); $fromMonth = DateTime::createFromFormat('d/m/Y', $startDate);
$returnData = array(); $returnData = array();
@@ -108,6 +114,8 @@ class Linky{
$resource_id = 'urlCdcAn'; $resource_id = 'urlCdcAn';
$result = $this->getData($resource_id, null, null); $result = $this->getData($resource_id, null, null);
if (!isset($result['graphe']['data'])) return false;
//format this correctly: //format this correctly:
$fromYear = new DateTime(); $fromYear = new DateTime();
$returnData = array(); $returnData = array();
@@ -166,7 +174,7 @@ class Linky{
//______________________calling functions //______________________calling functions
protected function _request($method, $url, $postdata=null) //standard function handling all get/post request with curl | return string protected function _request($method, $url, $postdata=null) //standard function handling all get/post request with curl | return string
{ {
if (!isset($this->_curlHdl)) if (!isset($this->_curlHdl))
{ {
$this->_curlHdl = curl_init(); $this->_curlHdl = curl_init();
curl_setopt($this->_curlHdl, CURLOPT_COOKIEJAR, $this->_cookFile); curl_setopt($this->_curlHdl, CURLOPT_COOKIEJAR, $this->_cookFile);
@@ -262,41 +270,41 @@ class Linky{
protected $_cookFile = ''; protected $_cookFile = '';
protected $_loginBaseUrl = 'https://espace-client-connexion.enedis.fr'; protected $_loginBaseUrl = 'https://espace-client-connexion.enedis.fr';
protected $_APIBaseUrl = 'https://espace-client-particuliers.enedis.fr/group/espace-particuliers'; protected $_APIBaseUrl = 'https://espace-client-particuliers.enedis.fr/group/espace-particuliers';
protected $_APILoginUrl = '/auth/UI/Login'; protected $_APILoginUrl = '/auth/UI/Login';
protected $_APIHomeUrl = '/home'; protected $_APIHomeUrl = '/home';
protected $_APIDataUrl = '/suivi-de-consommation'; protected $_APIDataUrl = '/suivi-de-consommation';
protected $_curlHdl = null; protected $_curlHdl = null;
protected function auth() protected function auth()
{ {
$postdata = http_build_query( $postdata = http_build_query(
array( array(
'IDToken1' => $this->_login, 'IDToken1' => $this->_login,
'IDToken2' => $this->_password, 'IDToken2' => $this->_password,
'SunQueryParamsString' => base64_encode('realm=particuliers'), 'SunQueryParamsString' => base64_encode('realm=particuliers'),
'encoded' => 'true', 'encoded' => 'true',
'gx_charset' => 'UTF-8' 'gx_charset' => 'UTF-8'
) )
); );
$url = $this->_loginBaseUrl.$this->_APILoginUrl; $url = $this->_loginBaseUrl.$this->_APILoginUrl;
$response = $this->_request('POST', $url, $postdata); $response = $this->_request('POST', $url, $postdata);
//connected ? //connected ?
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $response, $matches); preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $response, $matches);
$cookies = array(); $cookies = array();
foreach($matches[1] as $item) foreach($matches[1] as $item)
{ {
parse_str($item, $cookie); parse_str($item, $cookie);
$cookies = array_merge($cookies, $cookie); $cookies = array_merge($cookies, $cookie);
} }
if (!array_key_exists('iPlanetDirectoryPro', $cookies)) if (!array_key_exists('iPlanetDirectoryPro', $cookies))
{ {
$this->error = 'Sorry, could not connect. Check your credentials.'; $this->error = 'Sorry, could not connect. Check your credentials.';
return false; return false;
} }
$this->_isAuth = true; $this->_isAuth = true;
@@ -313,7 +321,7 @@ class Linky{
if ($this->auth() == false) if ($this->auth() == false)
{ {
return $this->error; return $this->error;
} }
if ($getAll) if ($getAll)