]> git.mxchange.org Git - friendica.git/commitdiff
Move jsonError out of Factory\Api\Mastodon\Error->RecordNotFound
authorHypolite Petovan <hypolite@mrpetovan.com>
Wed, 11 Oct 2023 13:16:03 +0000 (09:16 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Wed, 11 Oct 2023 13:44:02 +0000 (09:44 -0400)
36 files changed:
src/Factory/Api/Mastodon/Error.php
src/Factory/Api/Mastodon/Status.php
src/Module/Api/Friendica/Statuses/Dislike.php
src/Module/Api/Friendica/Statuses/DislikedBy.php
src/Module/Api/Friendica/Statuses/Undislike.php
src/Module/Api/Mastodon/Accounts.php
src/Module/Api/Mastodon/Accounts/Followers.php
src/Module/Api/Mastodon/Accounts/Following.php
src/Module/Api/Mastodon/Accounts/Lists.php
src/Module/Api/Mastodon/Accounts/Note.php
src/Module/Api/Mastodon/Accounts/Statuses.php
src/Module/Api/Mastodon/Accounts/Unfollow.php
src/Module/Api/Mastodon/Conversations.php
src/Module/Api/Mastodon/Conversations/Read.php
src/Module/Api/Mastodon/Lists.php
src/Module/Api/Mastodon/Lists/Accounts.php
src/Module/Api/Mastodon/Media.php
src/Module/Api/Mastodon/Mutes.php
src/Module/Api/Mastodon/Notifications.php
src/Module/Api/Mastodon/PushSubscription.php
src/Module/Api/Mastodon/ScheduledStatuses.php
src/Module/Api/Mastodon/Statuses.php
src/Module/Api/Mastodon/Statuses/Bookmark.php
src/Module/Api/Mastodon/Statuses/Context.php
src/Module/Api/Mastodon/Statuses/Favourite.php
src/Module/Api/Mastodon/Statuses/FavouritedBy.php
src/Module/Api/Mastodon/Statuses/Mute.php
src/Module/Api/Mastodon/Statuses/Pin.php
src/Module/Api/Mastodon/Statuses/Reblog.php
src/Module/Api/Mastodon/Statuses/RebloggedBy.php
src/Module/Api/Mastodon/Statuses/Unbookmark.php
src/Module/Api/Mastodon/Statuses/Unfavourite.php
src/Module/Api/Mastodon/Statuses/Unmute.php
src/Module/Api/Mastodon/Statuses/Unpin.php
src/Module/Api/Mastodon/Statuses/Unreblog.php
src/Module/Api/Mastodon/Timelines/Direct.php

index 68172d63233bbee766a5f2dc0539552c66dfac0f..dec56ba90f38ffe5a891ea3c00ed150638720f18 100644 (file)
@@ -50,14 +50,11 @@ class Error extends BaseFactory
                $this->logger->info('API Error', ['no' => $errorno, 'error' => $error, 'method' => $this->args->getMethod(), 'command' => $this->args->getQueryString(), 'user-agent' => $this->server['HTTP_USER_AGENT'] ?? '']);
        }
 
-       public function RecordNotFound()
+       public function RecordNotFound(): \Friendica\Object\Api\Mastodon\Error
        {
                $error             = $this->l10n->t('Record not found');
                $error_description = '';
-               $errorObj          = new \Friendica\Object\Api\Mastodon\Error($error, $error_description);
-
-               $this->logError(404, $error);
-               $this->jsonError(404, $errorObj->toArray());
+               return new \Friendica\Object\Api\Mastodon\Error($error, $error_description);
        }
 
        public function UnprocessableEntity(string $error = '')
index b53d846fcda380cb4c42a445f8ef287a9cdf778d..4bf5609b9ab9e8e611cdbe374281a9179f7c5162 100644 (file)
@@ -359,7 +359,7 @@ class Status extends BaseFactory
        {
                $item = ActivityPub\Transmitter::getItemArrayFromMail($id, true);
                if (empty($item)) {
-                       $this->mstdnErrorFactory->RecordNotFound();
+                       throw new HTTPException\NotFoundException('Mail record not found with id: ' . $id);
                }
 
                $account = $this->mstdnAccountFactory->createFromContactId($item['author-id']);
index 5491bf1890afc22cceedb675861035643a067647..a0dcd7077df0146e0b4180a9e845098b9e91d2c8 100644 (file)
@@ -44,7 +44,7 @@ class Dislike extends BaseApi
 
                $item = Post::selectFirstForUser($uid, ['id'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Item::performActivity($item['id'], 'dislike', $uid);
index bb788848372efbb61c6d5183d48abd2a14766b7c..fcae9990ce20e2a88fba6ddcbdbfd0846d328e5f 100644 (file)
@@ -46,7 +46,7 @@ class DislikedBy extends BaseApi
 
                $id = $this->parameters['id'];
                if (!Post::exists(['uri-id' => $id, 'uid' => [0, $uid]])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $activities = Post::selectPosts(['author-id'], ['thr-parent-id' => $id, 'gravity' => Item::GRAVITY_ACTIVITY, 'verb' => Activity::DISLIKE, 'deleted' => false]);
index a646045e53179103014ea414b7eb151200760947..f304fb9db928fa65374d2c6e3d9638725d1ae481 100644 (file)
@@ -44,7 +44,7 @@ class Undislike extends BaseApi
 
                $item = Post::selectFirstForUser($uid, ['id'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Item::performActivity($item['id'], 'undislike', $uid);
index bd215e38734874609af20bbbf76d904e9c9f71af..4ebd0d4bd3d52021aaf3a5f48eb01d91ea531f87 100644 (file)
@@ -46,14 +46,14 @@ class Accounts extends BaseApi
                if (!empty($this->parameters['id'])) {
                        $id = $this->parameters['id'];
                        if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                } else {
                        $contact = Contact::selectFirst(['id'], ['nick' => $this->parameters['name'], 'uid' => 0]);
                        if (!empty($contact['id'])) {
                                $id = $contact['id'];
                        } elseif (!($id = Contact::getIdForURL($this->parameters['name'], 0, false))) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                }
 
index e433943c8f73218a59e1f67f57ebaf41472a5f2d..22b99ee4d63cfe6e1a3fa647fa3775fc2d75894b 100644 (file)
@@ -46,7 +46,7 @@ class Followers extends BaseApi
 
                $id = $this->parameters['id'];
                if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $request = $this->getRequest([
index 3b19e1eedc26b42b0b9e6de9f4a58de8352a26c9..0fde1404e32fd18f9e2c876dba31bd1fc5e607ac 100644 (file)
@@ -46,7 +46,7 @@ class Following extends BaseApi
 
                $id = $this->parameters['id'];
                if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $request = $this->getRequest([
index 4a494838b03a67318ee1f67a0e61764ea824d3fe..f0187a2861891a5b625c33999b7e66443f1c23d9 100644 (file)
@@ -46,7 +46,7 @@ class Lists extends BaseApi
 
                $id = $this->parameters['id'];
                if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $lists = [];
index 24df3b3578226ee877773d9faa2848e77cb440d0..52c76ab6934e79700785684a8fb0e41ff6759cb6 100644 (file)
@@ -47,7 +47,7 @@ class Note extends BaseApi
 
                $cdata = Contact::getPublicAndUserContactID($this->parameters['id'], $uid);
                if (empty($cdata['user'])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Contact::update(['info' => $request['comment']], ['id' => $cdata['user']]);
index 93b642cd69d63ce43a8fa4ff8af03ef181648d3a..599a2eff8aefc707e0cd9c862670d93e3e83643f 100644 (file)
@@ -52,7 +52,7 @@ class Statuses extends BaseApi
 
                $id = $this->parameters['id'];
                if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $request = $this->getRequest([
index 83676f25a2ccdd9c68149207892c566744966a8d..cfe3b3cb1eccb15475a81392cfffc0b7fff18770 100644 (file)
@@ -42,7 +42,7 @@ class Unfollow extends BaseApi
 
                $cdata = Contact::getPublicAndUserContactID($this->parameters['id'], $uid);
                if (empty($cdata['user'])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $contact = Contact::getById($cdata['user']);
index 71239a0ff1467383279445afdadddf90e639b40e..c45144c98d31f2f66766befdd54c2b121c3dad53 100644 (file)
@@ -25,6 +25,7 @@ use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Module\BaseApi;
+use Friendica\Network\HTTPException\NotFoundException;
 
 /**
  * @see https://docs.joinmastodon.org/methods/timelines/conversations/
@@ -83,9 +84,13 @@ class Conversations extends BaseApi
 
                $conversations = [];
 
-               while ($conv = DBA::fetch($convs)) {
-                       self::setBoundaries($conv['id']);
-                       $conversations[] = DI::mstdnConversation()->createFromConvId($conv['id']);
+               try {
+                       while ($conv = DBA::fetch($convs)) {
+                               self::setBoundaries($conv['id']);
+                               $conversations[] = DI::mstdnConversation()->createFromConvId($conv['id']);
+                       }
+               } catch (NotFoundException $e) {
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                DBA::close($convs);
index 5bb7b3526cc77c999b3391ee2f70f4e5b8d09663..86a5090e37a73ee2e58f1b7a67186bc739a0532c 100644 (file)
@@ -25,6 +25,7 @@ use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Module\BaseApi;
+use Friendica\Network\HTTPException\NotFoundException;
 
 /**
  * @see https://docs.joinmastodon.org/methods/timelines/conversations/
@@ -42,6 +43,10 @@ class Read extends BaseApi
 
                DBA::update('mail', ['seen' => true], ['convid' => $this->parameters['id'], 'uid' => $uid]);
 
-               $this->jsonExit(DI::mstdnConversation()->createFromConvId($this->parameters['id'])->toArray());
+               try {
+                       $this->jsonExit(DI::mstdnConversation()->createFromConvId($this->parameters['id'])->toArray());
+               } catch (NotFoundException $e) {
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
+               }
        }
 }
index 571927a16845b55a04a8b7620e9afb9ef5e2448a..9d9e6955b1e6851b574ebbc96e19e944abe24f6b 100644 (file)
@@ -41,7 +41,7 @@ class Lists extends BaseApi
                }
 
                if (!Circle::exists($this->parameters['id'], $uid)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if (!Circle::remove($this->parameters['id'])) {
@@ -106,7 +106,7 @@ class Lists extends BaseApi
                        $id = $this->parameters['id'];
 
                        if (!Circle::exists($id, $uid)) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                        $lists = DI::mstdnList()->createFromCircleId($id);
                }
index 135701904ec9b0efcfe29286a384e00760fb6862..ffa63caf44adc3f5737658722e24c9bff0893e80 100644 (file)
@@ -78,7 +78,7 @@ class Accounts extends BaseApi
 
                $id = $this->parameters['id'];
                if (!DBA::exists('group', ['id' => $id, 'uid' => $uid])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $request = $this->getRequest([
index b2424f022732ce920179189a4cc4fb47b8321f82..91c88ee181cbab0eb743e580a425cbe5b1b8b664 100644 (file)
@@ -81,10 +81,10 @@ class Media extends BaseApi
                if (empty($photo['resource-id'])) {
                        $media = Post\Media::getById($this->parameters['id']);
                        if (empty($media['uri-id'])) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                        if (!Post::exists(['uri-id' => $media['uri-id'], 'uid' => $uid, 'origin' => true])) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                        Post\Media::updateById(['description' => $request['description']], $this->parameters['id']);
                        $this->jsonExit(DI::mstdnAttachment()->createFromId($this->parameters['id']));
@@ -109,7 +109,7 @@ class Media extends BaseApi
 
                $id = $this->parameters['id'];
                if (!Photo::exists(['id' => $id, 'uid' => $uid])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $this->jsonExit(DI::mstdnAttachment()->createFromPhoto($id));
index 177b6187769203f33cacac095685e423eac26445..71b1949f5736537b5e54baced837dbd67983d75e 100644 (file)
@@ -45,7 +45,7 @@ class Mutes extends BaseApi
 
                $id = $this->parameters['id'];
                if (!DBA::exists('contact', ['id' => $id, 'uid' => 0])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $request = $this->getRequest([
index ee3a253b3d7079f233a3358df0a9392681bb75a7..6045d246534eff6c94aec1c066ff56f7eece0ba7 100644 (file)
@@ -50,7 +50,7 @@ class Notifications extends BaseApi
                                $notification = DI::notification()->selectOneForUser($uid, ['id' => $id]);
                                $this->jsonExit(DI::mstdnNotification()->createFromNotification($notification, self::appSupportsQuotes()));
                        } catch (\Exception $e) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                }
 
index a03d0250cc4e210d53e3f7d68c06677872af5ce9..b91f8e7ba3db572574adc7d6c541c77327b5e009 100644 (file)
@@ -94,7 +94,7 @@ class PushSubscription extends BaseApi
                $subscription = Subscription::select($application['id'], $uid, ['id']);
                if (empty($subscription)) {
                        $this->logger->info('Subscription not found', ['application-id' => $application['id'], 'uid' => $uid]);
-                       $this->errorFactory->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $fields = [
@@ -145,7 +145,7 @@ class PushSubscription extends BaseApi
 
                if (!Subscription::exists($application['id'], $uid)) {
                        $this->logger->info('Subscription not found', ['application-id' => $application['id'], 'uid' => $uid]);
-                       $this->errorFactory->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $this->logger->info('Fetch subscription', ['application-id' => $application['id'], 'uid' => $uid]);
index 5204ab5563b004d0f8de8b3cb3b9e403e0b83c98..f136c2708f01e2155d42be09d182a37c90ad9055 100644 (file)
@@ -51,7 +51,7 @@ class ScheduledStatuses extends BaseApi
                }
 
                if (!DBA::exists('delayed-post', ['id' => $this->parameters['id'], 'uid' => $uid])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Post\Delayed::deleteById($this->parameters['id']);
index 749e0aa39f08037cacf05e62cec0209befe5322f..0940befbada325efda6fbb6f29850a9ed8ccb188 100644 (file)
@@ -324,11 +324,11 @@ class Statuses extends BaseApi
 
                $item = Post::selectFirstForUser($uid, ['id'], ['uri-id' => $this->parameters['id'], 'uid' => $uid]);
                if (empty($item['id'])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if (!Item::markForDeletionById($item['id'])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $this->jsonExit([]);
index f2e5ff40d453cbee9395862ea1fc5cf33dbae1c2..1ba0d6e04024f5fc5af17a717b348b5c84e6ac68 100644 (file)
@@ -44,7 +44,7 @@ class Bookmark extends BaseApi
 
                $item = Post::selectOriginal(['uid', 'id', 'uri-id', 'gravity'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]], ['order' => ['uid' => true]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if ($item['gravity'] != Item::GRAVITY_PARENT) {
@@ -56,10 +56,10 @@ class Bookmark extends BaseApi
                        if (!empty($stored)) {
                                $item = Post::selectFirst(['id', 'gravity'], ['id' => $stored]);
                                if (!DBA::isResult($item)) {
-                                       DI::mstdnError()->RecordNotFound();
+                                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                                }
                        } else {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                }
 
index 3a73569f40fe3eb190a62e812d679658c9b56e5c..c171c0ccae08de3c86d550a1d80d27b7267a39b9 100644 (file)
@@ -116,7 +116,7 @@ class Context extends BaseApi
                                }
                                DBA::close($posts);
                        } else {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                }
 
index d8cf8054ee8e894afaed87c6fffbb8396465204c..384abc3d82b3f4d3f6595a2e9101497359a2577a 100644 (file)
@@ -44,7 +44,7 @@ class Favourite extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['id', 'uri-id'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Item::performActivity($item['id'], 'like', $uid);
index b6902a1c0252912e32bca827d9bc0c998cc0abbf..bce95610a928a699f1ce99a02061ec43fef21194 100644 (file)
@@ -45,7 +45,7 @@ class FavouritedBy extends BaseApi
                }
 
                if (!$post = Post::selectOriginal(['uri-id'], ['uri-id' => $this->parameters['id'], 'uid' => [0, $uid]])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $activities = Post::selectPosts(['author-id'], ['thr-parent-id' => $post['uri-id'], 'gravity' => Item::GRAVITY_ACTIVITY, 'verb' => Activity::LIKE, 'deleted' => false]);
index d282770dfd79d10d131b077e61d8569df743e41a..68491c8b707d4403339ad65c21618f3740e81058 100644 (file)
@@ -44,7 +44,7 @@ class Mute extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['uri-id', 'gravity'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if ($item['gravity'] != Item::GRAVITY_PARENT) {
index d9f95132c382ad2b4d171b6c0325d89e6594b3ac..99f097740fe1a2ab715df2458f9bfd7d9f92d43e 100644 (file)
@@ -43,7 +43,7 @@ class Pin extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['uri-id', 'gravity', 'author-id'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Post\Collection::add($item['uri-id'], Post\Collection::FEATURED, $item['author-id'], $uid);
index 6c368b019a2e95218d2cf304d29bf39f1018d618..3e37a94a7d51868b010abf52b2ab3130273c7154 100644 (file)
@@ -47,7 +47,7 @@ class Reblog extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['id', 'uri-id', 'network'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if ($item['network'] == Protocol::DIASPORA) {
index ff0e1ba94e7a7f8b628957bca89fbced45a11c81..9c508e42a93aced81b21d1df105200d5cffa8e0b 100644 (file)
@@ -45,7 +45,7 @@ class RebloggedBy extends BaseApi
                }
 
                if (!$post = Post::selectOriginal(['uri-id'], ['uri-id' => $this->parameters['id'], 'uid' => [0, $uid]])) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                $activities = Post::selectPosts(['author-id'], ['thr-parent-id' => $post['uri-id'], 'gravity' => Item::GRAVITY_ACTIVITY, 'verb' => Activity::ANNOUNCE]);
index 36902fb21807a9ca912524c1440c6683e2667829..4eccc97b2e1f9c8ddd1ce84501ab00a0fcf0c48b 100644 (file)
@@ -44,7 +44,7 @@ class Unbookmark extends BaseApi
 
                $item = Post::selectOriginal(['uid', 'id', 'uri-id', 'gravity'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]], ['order' => ['uid' => true]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if ($item['gravity'] != Item::GRAVITY_PARENT) {
@@ -56,10 +56,10 @@ class Unbookmark extends BaseApi
                        if (!empty($stored)) {
                                $item = Post::selectFirst(['id', 'gravity'], ['id' => $stored]);
                                if (!DBA::isResult($item)) {
-                                       DI::mstdnError()->RecordNotFound();
+                                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                                }
                        } else {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                }
 
index c6a924b2a4502f58233c9f607dc789337eb15543..ada587b2fefefa72653e02b44c79c28d20939e41 100644 (file)
@@ -44,7 +44,7 @@ class Unfavourite extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['id', 'uri-id'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Item::performActivity($item['id'], 'unlike', $uid);
index edf14925d060ea9840220fed7ab3f8579f791e41..511ae15407a29e208b9d097b30c21703638fda5c 100644 (file)
@@ -44,7 +44,7 @@ class Unmute extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['uri-id', 'gravity'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if ($item['gravity'] != Item::GRAVITY_PARENT) {
index 0f5d44afac26b634293f80894bc5c1710b32411d..c11f89f6e09c0b886c62f61f800e17cf1e162b30 100644 (file)
@@ -43,7 +43,7 @@ class Unpin extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['uri-id', 'gravity'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                Post\Collection::remove($item['uri-id'], Post\Collection::FEATURED, $uid);
index 4f72eac25d6d5f13beecc63540c3e75e3196661f..c99011ae43736fc6cb79d81d9d8d017284b31974 100644 (file)
@@ -46,17 +46,17 @@ class Unreblog extends BaseApi
 
                $item = Post::selectOriginalForUser($uid, ['id', 'uri-id', 'network'], ['uri-id' => $this->parameters['id'], 'uid' => [$uid, 0]]);
                if (!DBA::isResult($item)) {
-                       DI::mstdnError()->RecordNotFound();
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if ($item['network'] == Protocol::DIASPORA) {
                        $item = Post::selectFirstForUser($uid, ['id'], ['quote-uri-id' => $this->parameters['id'], 'body' => '', 'origin' => true, 'uid' => $uid]);
                        if (empty($item['id'])) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
 
                        if (!Item::markForDeletionById($item['id'])) {
-                               DI::mstdnError()->RecordNotFound();
+                               $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                        }
                } elseif (!in_array($item['network'], [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::TWITTER])) {
                        DI::mstdnError()->UnprocessableEntity(DI::l10n()->t("Posts from %s can't be unshared", ContactSelector::networkToName($item['network'])));
index c1e71097097af31a57af3a8222f634b83045d65c..730b639104b4cb9bf9cbbc143bbe57e5d3981a37 100644 (file)
@@ -26,6 +26,7 @@ use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Module\BaseApi;
 use Friendica\Network\HTTPException;
+use Friendica\Network\HTTPException\NotFoundException;
 
 /**
  * @see https://docs.joinmastodon.org/methods/timelines/
@@ -76,9 +77,13 @@ class Direct extends BaseApi
 
                $statuses = [];
 
-               while ($mail = DBA::fetch($mails)) {
-                       self::setBoundaries($mail['uri-id']);
-                       $statuses[] = DI::mstdnStatus()->createFromMailId($mail['id']);
+               try {
+                       while ($mail = DBA::fetch($mails)) {
+                               self::setBoundaries($mail['uri-id']);
+                               $statuses[] = DI::mstdnStatus()->createFromMailId($mail['id']);
+                       }
+               } catch (NotFoundException $e) {
+                       $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound());
                }
 
                if (!empty($request['min_id'])) {