]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/GServer.php
Changes:
[friendica.git] / src / Model / GServer.php
index e7f9530498e6b77f7d1a96f8ebb0541eb88a5767..a3f0c26077ecfd5718dc655f751d428988aa0ed6 100644 (file)
@@ -151,7 +151,6 @@ class GServer
         * @param string $pattern
         *
         * @return array
-        *
         * @throws Exception
         */
        public static function listByDomainPattern(string $pattern): array
@@ -277,7 +276,6 @@ class GServer
         * @param bool $undetected
         *
         * @return string
-        *
         * @throws Exception
         */
        public static function getNextUpdateDate(bool $success, string $created = '', string $last_contact = '', bool $undetected = false): string
@@ -649,7 +647,7 @@ class GServer
                                }
 
                                if ($curlResult->isSuccess()) {
-                                       $json = json_decode($curlResult->getBody(), true);
+                                       $json = json_decode($curlResult->getBodyString(), true);
                                        if (!empty($json) && is_array($json)) {
                                                $data = self::fetchDataFromSystemActor($json, $serverdata);
                                                $serverdata = $data['server'];
@@ -657,7 +655,7 @@ class GServer
                                                if (!$html_fetched && !in_array($serverdata['detection-method'], [self::DETECT_SYSTEM_ACTOR, self::DETECT_AP_COLLECTION])) {
                                                        $curlResult = DI::httpClient()->get($url, HttpClientAccept::HTML);
                                                }
-                                       } elseif (!$html_fetched && (strlen($curlResult->getBody()) < 1000)) {
+                                       } elseif (!$html_fetched && (strlen($curlResult->getBodyString()) < 1000)) {
                                                $curlResult = DI::httpClient()->get($url, HttpClientAccept::HTML);
                                        }
 
@@ -667,7 +665,7 @@ class GServer
                                        }
                                }
 
-                               if (!$curlResult->isSuccess() || empty($curlResult->getBody())) {
+                               if (!$curlResult->isSuccess() || empty($curlResult->getBodyString())) {
                                        self::setFailureByUrl($url);
                                        return false;
                                }
@@ -677,7 +675,7 @@ class GServer
                                        $serverdata['network']          = Protocol::ACTIVITYPUB;
                                        $serverdata['platform']         = 'threads';
                                }
-               
+
                                if (($serverdata['network'] == Protocol::PHANTOM) || in_array($serverdata['detection-method'], self::DETECT_UNSPECIFIC)) {
                                        $serverdata = self::detectMastodonAlikes($url, $serverdata);
                                }
@@ -784,6 +782,9 @@ class GServer
                }
 
                $serverdata['registered-users'] = $serverdata['registered-users'] ?? 0;
+               $serverdata['next_contact'] = self::getNextUpdateDate(true, '', '', in_array($serverdata['network'], [Protocol::PHANTOM, Protocol::FEED]));
+               $serverdata['last_contact'] = DateTimeFormat::utcNow();
+               $serverdata['failed'] = false;
 
                // Numbers above a reasonable value (10 millions) are ignored
                if ($serverdata['registered-users'] > 10000000) {
@@ -860,7 +861,6 @@ class GServer
         * @param string $server_url address of the server
         *
         * @return void
-        *
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private static function discoverRelay(string $server_url)
@@ -872,7 +872,7 @@ class GServer
                        return;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (!is_array($data)) {
                        return;
                }
@@ -967,7 +967,7 @@ class GServer
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1059,7 +1059,7 @@ class GServer
                        return [];
                }
 
-               $nodeinfo = json_decode($httpResult->getBody(), true);
+               $nodeinfo = json_decode($httpResult->getBodyString(), true);
 
                if (!is_array($nodeinfo) || empty($nodeinfo['links'])) {
                        return [];
@@ -1114,7 +1114,7 @@ class GServer
                        return [];
                }
 
-               $nodeinfo = json_decode($curlResult->getBody(), true);
+               $nodeinfo = json_decode($curlResult->getBodyString(), true);
 
                if (!is_array($nodeinfo)) {
                        return [];
@@ -1214,7 +1214,7 @@ class GServer
                        return [];
                }
 
-               $nodeinfo = json_decode($curlResult->getBody(), true);
+               $nodeinfo = json_decode($curlResult->getBodyString(), true);
                if (!is_array($nodeinfo)) {
                        return [];
                }
@@ -1317,12 +1317,10 @@ class GServer
        /**
         * Parses NodeInfo2 protocol 1.0
         *
-        * @see https://github.com/jaywink/nodeinfo2/blob/master/PROTOCOL.md
-        *
-        * @param string $nodeinfo_url address of the nodeinfo path
+        * @param ICanHandleHttpResponses $httpResult
         *
         * @return array Server data
-        *
+        * @see https://github.com/jaywink/nodeinfo2/blob/master/PROTOCOL.md
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
        private static function parseNodeinfo210(ICanHandleHttpResponses $httpResult): array
@@ -1331,7 +1329,7 @@ class GServer
                        return [];
                }
 
-               $nodeinfo = json_decode($httpResult->getBody(), true);
+               $nodeinfo = json_decode($httpResult->getBodyString(), true);
 
                if (!is_array($nodeinfo)) {
                        return [];
@@ -1434,7 +1432,7 @@ class GServer
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1587,11 +1585,11 @@ class GServer
        {
                $name = 'nomad';
                $curlResult = DI::httpClient()->get($url . '/manifest', 'application/manifest+json');
-               if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+               if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) {
                        return $name;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $name;
                }
@@ -1608,11 +1606,11 @@ class GServer
        private static function getNomadVersion(string $url): string
        {
                $curlResult = DI::httpClient()->get($url . '/api/z/1.0/version', HttpClientAccept::JSON);
-               if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+               if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) {
                        return '';
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return '';
                }
@@ -1634,7 +1632,7 @@ class GServer
                        return false;
                }
 
-               $xrd = XML::parseString($curlResult->getBody(), true);
+               $xrd = XML::parseString($curlResult->getBodyString(), true);
                if (!is_object($xrd)) {
                        return false;
                }
@@ -1733,7 +1731,7 @@ class GServer
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1763,7 +1761,7 @@ class GServer
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1786,11 +1784,11 @@ class GServer
        private static function detectPeertube(string $url, array $serverdata): array
        {
                $curlResult = DI::httpClient()->get($url . '/api/v1/config', HttpClientAccept::JSON);
-               if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+               if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) {
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1834,11 +1832,11 @@ class GServer
        private static function detectNextcloud(string $url, array $serverdata, bool $validHostMeta): array
        {
                $curlResult = DI::httpClient()->get($url . '/status.php', HttpClientAccept::JSON);
-               if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+               if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) {
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1870,11 +1868,11 @@ class GServer
        private static function fetchWeeklyUsage(string $url, array $serverdata): array
        {
                $curlResult = DI::httpClient()->get($url . '/api/v1/instance/activity', HttpClientAccept::JSON);
-               if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+               if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) {
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1910,11 +1908,11 @@ class GServer
        private static function detectMastodonAlikes(string $url, array $serverdata): array
        {
                $curlResult = DI::httpClient()->get($url . '/api/v1/instance', HttpClientAccept::JSON);
-               if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+               if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) {
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data)) {
                        return $serverdata;
                }
@@ -1982,11 +1980,11 @@ class GServer
        private static function detectHubzilla(string $url, array $serverdata): array
        {
                $curlResult = DI::httpClient()->get($url . '/api/statusnet/config.json', HttpClientAccept::JSON);
-               if (!$curlResult->isSuccess() || ($curlResult->getBody() == '')) {
+               if (!$curlResult->isSuccess() || ($curlResult->getBodyString() == '')) {
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data) || empty($data['site'])) {
                        return $serverdata;
                }
@@ -2079,11 +2077,11 @@ class GServer
        {
                // Test for GNU Social
                $curlResult = DI::httpClient()->get($url . '/api/gnusocial/version.json', HttpClientAccept::JSON);
-               if ($curlResult->isSuccess() && ($curlResult->getBody() != '{"error":"not implemented"}') &&
-                       ($curlResult->getBody() != '') && (strlen($curlResult->getBody()) < 30)) {
+               if ($curlResult->isSuccess() && ($curlResult->getBodyString() != '{"error":"not implemented"}') &&
+                       ($curlResult->getBodyString() != '') && (strlen($curlResult->getBodyString()) < 30)) {
                        $serverdata['platform'] = 'gnusocial';
                        // Remove junk that some GNU Social servers return
-                       $serverdata['version'] = str_replace(chr(239) . chr(187) . chr(191), '', $curlResult->getBody());
+                       $serverdata['version'] = str_replace(chr(239) . chr(187) . chr(191), '', $curlResult->getBodyString());
                        $serverdata['version'] = str_replace(["\r", "\n", "\t"], '', $serverdata['version']);
                        $serverdata['version'] = trim($serverdata['version'], '"');
                        $serverdata['network'] = Protocol::OSTATUS;
@@ -2097,11 +2095,11 @@ class GServer
 
                // Test for Statusnet
                $curlResult = DI::httpClient()->get($url . '/api/statusnet/version.json', HttpClientAccept::JSON);
-               if ($curlResult->isSuccess() && ($curlResult->getBody() != '{"error":"not implemented"}') &&
-                       ($curlResult->getBody() != '') && (strlen($curlResult->getBody()) < 30)) {
+               if ($curlResult->isSuccess() && ($curlResult->getBodyString() != '{"error":"not implemented"}') &&
+                       ($curlResult->getBodyString() != '') && (strlen($curlResult->getBodyString()) < 30)) {
 
                        // Remove junk that some GNU Social servers return
-                       $serverdata['version'] = str_replace(chr(239).chr(187).chr(191), '', $curlResult->getBody());
+                       $serverdata['version'] = str_replace(chr(239).chr(187).chr(191), '', $curlResult->getBodyString());
                        $serverdata['version'] = str_replace(["\r", "\n", "\t"], '', $serverdata['version']);
                        $serverdata['version'] = trim($serverdata['version'], '"');
 
@@ -2148,7 +2146,7 @@ class GServer
                        return $serverdata;
                }
 
-               $data = json_decode($curlResult->getBody(), true);
+               $data = json_decode($curlResult->getBodyString(), true);
                if (empty($data) || empty($data['version'])) {
                        return $serverdata;
                }
@@ -2466,7 +2464,7 @@ class GServer
                        $api = 'https://instances.social/api/1.0/instances/list?count=0';
                        $curlResult = DI::httpClient()->get($api, HttpClientAccept::JSON, [HttpClientOptions::HEADERS => ['Authorization' => ['Bearer ' . $accesstoken]]]);
                        if ($curlResult->isSuccess()) {
-                               $servers = json_decode($curlResult->getBody(), true);
+                               $servers = json_decode($curlResult->getBodyString(), true);
 
                                if (!empty($servers['instances'])) {
                                        foreach ($servers['instances'] as $server) {