From e00cd66fbe22147030aa0d96b1e75439ec94822e Mon Sep 17 00:00:00 2001 From: Florian Heinz Date: Tue, 19 May 2026 15:19:24 +0200 Subject: [PATCH] Clarify Health Auto Export config uploads --- src/App.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/App.php b/src/App.php index e3ea305..b84dec3 100644 --- a/src/App.php +++ b/src/App.php @@ -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'] ?? [])