Clarify Health Auto Export config uploads
This commit is contained in:
+17
@@ -312,6 +312,10 @@ final class App
|
||||
|
||||
private function importHealthPayload(string $username, array $settings, array $payload): array
|
||||
{
|
||||
if ($this->isHealthAutoExportConfigurationPayload($payload)) {
|
||||
throw new RuntimeException('Diese JSON-Datei ist eine Health-Auto-Export-Konfiguration, aber kein Health-Datenexport. Bitte in Health Auto Export die Automation ausführen und die dabei erzeugte REST-API-Nutzlast senden.');
|
||||
}
|
||||
|
||||
$metrics = $this->healthMetricsFromPayload($payload);
|
||||
$workouts = $this->healthWorkoutsFromPayload($payload);
|
||||
$metricImport = $this->healthEventsFromMetrics($metrics);
|
||||
@@ -441,6 +445,19 @@ final class App
|
||||
];
|
||||
}
|
||||
|
||||
private function isHealthAutoExportConfigurationPayload(array $payload): bool
|
||||
{
|
||||
if (!isset($payload['exportDestination'], $payload['exportDataType'], $payload['urlString'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$metrics = is_array($payload['metrics'] ?? null) ? $payload['metrics'] : [];
|
||||
$hasOnlyMetricNames = $metrics !== [] && array_filter($metrics, 'is_array') === [];
|
||||
$hasDataCollections = is_array($payload['workouts'] ?? null) || is_array($payload['data'] ?? null);
|
||||
|
||||
return $hasOnlyMetricNames && !$hasDataCollections;
|
||||
}
|
||||
|
||||
private function countHealthImportItems(array $metricImport, array $workoutImport): int
|
||||
{
|
||||
return count($metricImport['steps'] ?? [])
|
||||
|
||||
Reference in New Issue
Block a user