]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub.php
Merge pull request #8934 from annando/fix-fatal
[friendica.git] / src / Protocol / ActivityPub.php
index c22bbb333d6a2a5ace2d87a07bc39447f021fc76..3c4f4f2e67f6be61aa5e7588f74586572c6fa7d9 100644 (file)
 
 namespace Friendica\Protocol;
 
-use Friendica\Util\JsonLD;
-use Friendica\Util\Network;
 use Friendica\Core\Protocol;
+use Friendica\DI;
 use Friendica\Model\APContact;
 use Friendica\Model\User;
 use Friendica\Util\HTTPSignature;
+use Friendica\Util\JsonLD;
 
 /**
  * ActivityPub Protocol class
@@ -87,13 +87,13 @@ class ActivityPub
         * @return array
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function fetchContent($url, $uid = 0)
+       public static function fetchContent(string $url, int $uid = 0)
        {
                if (!empty($uid)) {
                        return HTTPSignature::fetch($url, $uid);
                }
 
-               $curlResult = Network::curl($url, false, ['accept_content' => 'application/activity+json, application/ld+json']);
+               $curlResult = DI::httpRequest()->get($url, false, ['accept_content' => 'application/activity+json, application/ld+json']);
                if (!$curlResult->isSuccess() || empty($curlResult->getBody())) {
                        return false;
                }
@@ -145,7 +145,7 @@ class ActivityPub
        {
                $apcontact = APContact::getByURL($url, $update);
                if (empty($apcontact)) {
-                       return false;
+                       return [];
                }
 
                $profile = ['network' => Protocol::ACTIVITYPUB];
@@ -170,7 +170,9 @@ class ActivityPub
                $profile['notify'] = $apcontact['inbox'];
                $profile['poll'] = $apcontact['outbox'];
                $profile['pubkey'] = $apcontact['pubkey'];
+               $profile['subscribe'] = $apcontact['subscribe'];
                $profile['baseurl'] = $apcontact['baseurl'];
+               $profile['gsid'] = $apcontact['gsid'];
 
                // Remove all "null" fields
                foreach ($profile as $field => $content) {
@@ -231,13 +233,13 @@ class ActivityPub
                        $items = $data['orderedItems'];
                } elseif (!empty($data['first']['orderedItems'])) {
                        $items = $data['first']['orderedItems'];
-               } elseif (!empty($data['first'])) {
+               } elseif (!empty($data['first']) && is_string($data['first']) && ($data['first'] != $url)) {
                        return self::fetchItems($data['first'], $uid);
                } else {
-                       $items = [];
+                       return [];
                }
 
-               if (!empty($data['next'])) {
+               if (!empty($data['next']) && is_string($data['next'])) {
                        $items = array_merge($items, self::fetchItems($data['next'], $uid));
                }