Skip to content

Commit bb16e69

Browse files
committed
fix(Datasource\CarbonIntensity\ElectricityMaps\Client): various data handling issues
causing fatal errors
1 parent 9993972 commit bb16e69

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

src/DataSource/CarbonIntensity/ElectricityMaps/Client.php

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ public function fetchRange(DateTimeImmutable $start, DateTimeImmutable $stop, So
285285
// If cached file exists, use it
286286
if (file_exists($cache_file)) {
287287
$full_response = json_decode(file_get_contents($cache_file), true);
288-
return $full_response;
288+
return $full_response['data'];
289289
} else {
290290
$cache_dir = dirname($cache_file);
291291
if (!is_dir($cache_dir)) {
@@ -382,19 +382,14 @@ protected function formatOutput(array $response, int $step): array
382382
// This is needed to detect later the switching to winter time
383383
$response = $this->shiftToLocalTimezone($response);
384384
$intensities = [];
385-
foreach ($response['data'] as $record) {
386-
$datetime = $record['datetime'];
387-
if (!$datetime instanceof DateTimeInterface) {
388-
var_dump(DateTime::getLastErrors());
389-
continue;
390-
}
385+
array_walk($response, function ($record) use (&$intensities) {
391386
$data_quality = $this->getDataQuality($record);
392387
$intensities[] = [
393-
'datetime' => $datetime->format(DateTime::ATOM),
388+
'datetime' => $record['datetime']->format('Y-m-d\TH:00:00'),
394389
'intensity' => $record['carbonIntensity'],
395390
'data_quality' => $data_quality,
396391
];
397-
}
392+
});
398393

399394
return $intensities;
400395
}
@@ -403,7 +398,7 @@ protected function formatOutput(array $response, int $step): array
403398
* convert dates to the timezone of GLPI
404399
*
405400
* @param array $response
406-
* @return array array of records: ['date_heure' => string, 'taux_co2' => number, 'datetime' => DateTime]
401+
* @return array array of records: ['datetime' => DateTime, 'carbonintensity' => number]
407402
*/
408403
protected function shiftToLocalTimezone(array $response): array
409404
{
@@ -412,7 +407,7 @@ protected function shiftToLocalTimezone(array $response): array
412407

413408
$shifted_response = [];
414409
$local_timezone = new DateTimeZone($DB->guessTimezone());
415-
array_walk($response['data'], function ($item, $key) use (&$shifted_response, $local_timezone) {
410+
array_walk($response, function ($item, $key) use (&$shifted_response, $local_timezone) {
416411
$shifted_date_object = DateTime::createFromFormat('Y-m-d\TH:i:s.vp', $item['datetime'])
417412
->setTimezone($local_timezone);
418413
$shifted_date_string = $shifted_date_object->format('Y-m-d H:i:sP');
@@ -423,7 +418,7 @@ protected function shiftToLocalTimezone(array $response): array
423418
$shifted_response[$shifted_date_string] = $item;
424419
});
425420

426-
return ['zone' => $response['zone'], 'data' => $shifted_response];
421+
return $shifted_response;
427422
}
428423

429424
/**

src/DataSource/CarbonIntensity/Rte/Client.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,9 +359,9 @@ protected function formatOutput(array $response, int $step): array
359359
$intensities = $this->downsample($response, $this->step);
360360
} else {
361361
$intensities = [];
362-
array_walk($response, function ($record) use ($intensities) {
362+
array_walk($response, function ($record) use (&$intensities) {
363363
$intensities[] = [
364-
'datetime' => $record['datetime']->format('Y-m-d\TH:00:00??????'),
364+
'datetime' => $record['datetime']->format('Y-m-d\TH:00:00'),
365365
'intensity' => (float) $record['taux_co2'],
366366
'data_quality' => AbstractTracked::DATA_QUALITY_RAW_REAL_TIME_MEASUREMENT,
367367
];

src/DataTracking/AbstractTracked.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ abstract class AbstractTracked
5454
public const DATA_QUALITY_RAW_REAL_TIME_MEASUREMENT_DOWNSAMPLED = 3;
5555
public const DATA_QUALITY_RAW_REAL_TIME_MEASUREMENT = 4;
5656

57+
/** @var array<int> $sources Source qualities */
5758
protected array $sources = [];
5859

5960
abstract public function getValue();

0 commit comments

Comments
 (0)