-
- /**
- * Fetch server list from remote servers and adds them when they are new.
- *
- * @param string $poco URL to the POCO endpoint
- */
- private static function fetchServerlist($poco)
- {
- $curlResult = DI::httpRequest()->get($poco . '/@server');
- if (!$curlResult->isSuccess()) {
- Logger::info('Server is not reachable or does not offer the "poco" endpoint', ['poco' => $poco]);
- return;
- }
-
- $serverlist = json_decode($curlResult->getBody(), true);
- if (!is_array($serverlist)) {
- Logger::info('Server does not have any servers listed', ['poco' => $poco]);
- return;
- }
-
- Logger::info('PoCo Server update start', ['poco' => $poco]);
-
- $total = 0;
- $added = 0;
- foreach ($serverlist as $server) {
- ++$total;
- if (DBA::exists('gserver', ['nurl' => Strings::normaliseLink($server['url'])])) {
- // We already know this server
- continue;
- }
- // This endpoint doesn't offer the schema. So we assume that it is HTTPS.
- Worker::add(PRIORITY_LOW, 'UpdateGServer', $server['url']);
- ++$added;
- }
-
- Logger::info('PoCo Server update ended', ['total' => $total, 'added' => $added, 'poco' => $poco]);
- }