[ 'ok' => false, 'method' => 'none', 'blocker' => 'CTS_API_TOKEN fehlt; Authentifizierung nicht moeglich.', ], 'events' => ['count' => 0, 'first' => null], 'song' => ['hasCcli' => false, 'hasLyrics' => false, 'arrangements_count' => 0], ]; } CTConfig::clearConfig(); CTConfig::setApiUrl(rtrim($apiUrl, '/')); CTLog::enableFileLog(false); $legacyApiKeySetter = 'setApiKey'; $authMethod = 'raw-http-authorization-header'; if (method_exists(CTConfig::class, $legacyApiKeySetter)) { CTConfig::{$legacyApiKeySetter}($apiToken); $authMethod = 'setApiKey'; } elseif (method_exists(CTConfig::class, 'authWithLoginToken')) { CTConfig::authWithLoginToken($apiToken); $authMethod = 'authWithLoginToken'; } if ($client !== null) { CTClient::setClient($client); } try { $events = EventRequest::where('from', $fromDate)->get(); $songResponse = CTClient::getClient()->get('/api/songs/'.$songId); $songRaw = CTResponseUtil::dataAsArray($songResponse); $song = Song::createModelFromData($songRaw); } catch (Throwable $throwable) { return [ 'auth' => [ 'ok' => false, 'method' => $authMethod, 'blocker' => $throwable->getMessage(), ], 'events' => ['count' => 0, 'first' => null], 'song' => ['hasCcli' => false, 'hasLyrics' => false, 'arrangements_count' => 0], ]; } $firstEvent = $events[0] ?? null; return [ 'auth' => [ 'ok' => true, 'method' => $authMethod, 'blocker' => null, ], 'events' => [ 'count' => count($events), 'first' => $firstEvent === null ? null : [ 'id' => $firstEvent->getId(), 'title' => $firstEvent->getName(), 'start_date' => $firstEvent->getStartDate(), 'note' => $firstEvent->getNote(), ], ], 'song' => [ 'hasCcli' => $song !== null && trim((string) $song->getCcli()) !== '', 'ccli' => $song?->getCcli(), 'hasLyrics' => array_key_exists('lyrics', $songRaw), 'lyrics_type' => is_array($songRaw['lyrics'] ?? null) ? ($songRaw['lyrics']['type'] ?? null) : null, 'arrangements_count' => $song === null ? 0 : count($song->getArrangements()), ], 'raw_shapes' => [ 'song_keys' => array_keys($songRaw), ], ]; } }