]> git.mxchange.org Git - friendica.git/commitdiff
Unified JSON exit
authorMichael <heluecht@pirati.ca>
Sat, 9 Apr 2022 11:58:01 +0000 (11:58 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 9 Apr 2022 11:58:01 +0000 (11:58 +0000)
21 files changed:
mod/cal.php
mod/msearch.php
mod/poco.php
mod/wall_attach.php
mod/wall_upload.php
src/Core/System.php
src/Module/AccountManagementControlDocument.php
src/Module/ActivityPub/Featured.php
src/Module/ActivityPub/Followers.php
src/Module/ActivityPub/Following.php
src/Module/ActivityPub/Inbox.php
src/Module/ActivityPub/Objects.php
src/Module/ActivityPub/Outbox.php
src/Module/Events/Json.php
src/Module/Friendica.php
src/Module/Search/Acl.php
src/Module/Statistics.php
src/Module/ThemeDetails.php
src/Module/WellKnown/NodeInfo.php
src/Module/WellKnown/XSocialRelay.php
src/Protocol/ActivityPub/Receiver.php

index ebf78e77f6cf3ff9633f3d4403009ee7a2a930dd..070cadf3d5c251ba0a53ff2e1b5d3e4051be3812 100644 (file)
@@ -28,6 +28,7 @@ use Friendica\Content\Nav;
 use Friendica\Content\Widget;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Event;
@@ -216,8 +217,7 @@ function cal_content(App $a)
                $events = Event::prepareListForTemplate($r);
 
                if (!empty(DI::args()->getArgv()[2]) && (DI::args()->getArgv()[2] === 'json')) {
-                       echo json_encode($events);
-                       exit();
+                       System::jsonExit($events);
                }
 
                // links: array('href', 'text', 'extra css classes', 'title')
index d29a2fc6472bd376849e527f55079d1ce4932a34..00a72ea9f72171f75470ae3042fd7c7109192057 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 use Friendica\App;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\User;
@@ -37,8 +38,7 @@ function msearch_post(App $a)
 
        if (!strlen($search)) {
                $output = ['total' => 0, 'items_page' => $perpage, 'page' => $page, 'results' => $results];
-               echo json_encode($output);
-               exit();
+               System::jsonExit($output);
        }
 
        $total = 0;
@@ -60,7 +60,5 @@ function msearch_post(App $a)
 
        $output = ['total' => $total, 'items_page' => $perpage, 'page' => $page, 'results' => $results];
 
-       echo json_encode($output);
-
-       exit();
+       System::jsonExit($output);
 }
index 1ccd74b7f1dda1f7fd44fa5a08b8af4ebd852419..09ee25a1ff88ffdfea2d8db769a07e9cac8103cd 100644 (file)
@@ -25,10 +25,10 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Util\DateTimeFormat;
-use Friendica\Util\Strings;
 use Friendica\Util\XML;
 
 function poco_init(App $a) {
@@ -234,9 +234,7 @@ function poco_init(App $a) {
                exit();
        }
        if ($format === 'json') {
-               header('Content-type: application/json');
-               echo json_encode($ret);
-               exit();
+               System::jsonExit($ret);
        } else {
                throw new \Friendica\Network\HTTPException\InternalServerErrorException();
        }
index 98dc3e1cba548458405bcfed3bd29b7f0890cd8b..607d0fe7a394c237b5ff8b179191fcd5dcc001bc 100644 (file)
@@ -21,6 +21,7 @@
 
 use Friendica\App;
 use Friendica\Core\Session;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Attach;
@@ -36,15 +37,13 @@ function wall_attach_post(App $a) {
                $owner = User::getOwnerDataByNick($nick);
                if (!DBA::isResult($owner)) {
                        if ($r_json) {
-                               echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
-                               exit();
+                               System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
                        }
                        return;
                }
        } else {
                if ($r_json) {
-                       echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
-                       exit();
+                       System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
                }
 
                return;
@@ -65,8 +64,7 @@ function wall_attach_post(App $a) {
 
        if (!$can_post) {
                if ($r_json) {
-                       echo json_encode(['error' => DI::l10n()->t('Permission denied.')]);
-                       exit();
+                       System::jsonExit(['error' => DI::l10n()->t('Permission denied.')]);
                }
                notice(DI::l10n()->t('Permission denied.') . EOL );
                exit();
@@ -74,7 +72,7 @@ function wall_attach_post(App $a) {
 
        if (empty($_FILES['userfile'])) {
                if ($r_json) {
-                       echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
+                       System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
                }
                exit();
        }
@@ -93,23 +91,23 @@ function wall_attach_post(App $a) {
 
        if ($filesize <= 0) {
                $msg = DI::l10n()->t('Sorry, maybe your upload is bigger than the PHP configuration allows') . EOL .(DI::l10n()->t('Or - did you try to upload an empty file?'));
+               @unlink($src);
                if ($r_json) {
-                       echo json_encode(['error' => $msg]);
+                       System::jsonExit(['error' => $msg]);
                } else {
                        notice($msg);
                }
-               @unlink($src);
                exit();
        }
 
        if ($maxfilesize && $filesize > $maxfilesize) {
                $msg = DI::l10n()->t('File exceeds size limit of %s', Strings::formatBytes($maxfilesize));
+               @unlink($src);
                if ($r_json) {
-                       echo json_encode(['error' => $msg]);
+                       System::jsonExit(['error' => $msg]);
                } else {
                        echo $msg . EOL;
                }
-               @unlink($src);
                exit();
        }
 
@@ -120,7 +118,7 @@ function wall_attach_post(App $a) {
        if ($newid === false) {
                $msg =  DI::l10n()->t('File upload failed.');
                if ($r_json) {
-                       echo json_encode(['error' => $msg]);
+                       System::jsonExit(['error' => $msg]);
                } else {
                        echo $msg . EOL;
                }
@@ -128,8 +126,7 @@ function wall_attach_post(App $a) {
        }
 
        if ($r_json) {
-               echo json_encode(['ok' => true, 'id' => $newid]);
-               exit();
+               System::jsonExit(['ok' => true, 'id' => $newid]);
        }
 
        $lf = "\n";
index a9828e61f94333b478b4984ffe694c184fc2d62b..79f1dcc41f323c8fa2853e84cb4461432cb07ab8 100644 (file)
@@ -28,6 +28,7 @@
 use Friendica\App;
 use Friendica\Core\Logger;
 use Friendica\Core\Session;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Photo;
@@ -50,8 +51,7 @@ function wall_upload_post(App $a, $desktopmode = true)
                        $user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['nickname' => $nick, 'blocked' => false]);
                        if (!DBA::isResult($user)) {
                                if ($r_json) {
-                                       echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
-                                       exit();
+                                       System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
                                }
                                return;
                        }
@@ -60,8 +60,7 @@ function wall_upload_post(App $a, $desktopmode = true)
                }
        } else {
                if ($r_json) {
-                       echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
-                       exit();
+                       System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
                }
                return;
        }
@@ -87,8 +86,7 @@ function wall_upload_post(App $a, $desktopmode = true)
 
        if (!$can_post) {
                if ($r_json) {
-                       echo json_encode(['error' => DI::l10n()->t('Permission denied.')]);
-                       exit();
+                       System::jsonExit(['error' => DI::l10n()->t('Permission denied.')]);
                }
                notice(DI::l10n()->t('Permission denied.'));
                exit();
@@ -96,7 +94,7 @@ function wall_upload_post(App $a, $desktopmode = true)
 
        if (empty($_FILES['userfile']) && empty($_FILES['media'])) {
                if ($r_json) {
-                       echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
+                       System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
                }
                exit();
        }
@@ -147,8 +145,7 @@ function wall_upload_post(App $a, $desktopmode = true)
 
        if ($src == "") {
                if ($r_json) {
-                       echo json_encode(['error' => DI::l10n()->t('Invalid request.')]);
-                       exit();
+                       System::jsonExit(['error' => DI::l10n()->t('Invalid request.')]);
                }
                notice(DI::l10n()->t('Invalid request.'));
                exit();
@@ -164,12 +161,12 @@ function wall_upload_post(App $a, $desktopmode = true)
 
        if (!$Image->isValid()) {
                $msg = DI::l10n()->t('Unable to process image.');
+               @unlink($src);
                if ($r_json) {
-                       echo json_encode(['error' => $msg]);
+                       System::jsonExit(['error' => $msg]);
                } else {
                        echo  $msg. EOL;
                }
-               @unlink($src);
                exit();
        }
 
@@ -202,12 +199,12 @@ function wall_upload_post(App $a, $desktopmode = true)
                if ($filesize > $maximagesize) {
                        Logger::notice('Image size is too big', ['size' => $filesize, 'max' => $maximagesize]);
                        $msg = DI::l10n()->t('Image exceeds size limit of %s', Strings::formatBytes($maximagesize));
+                       @unlink($src);
                        if ($r_json) {
-                               echo json_encode(['error' => $msg]);
+                               System::jsonExit(['error' => $msg]);
                        } else {
                                echo  $msg. EOL;
                        }
-                       @unlink($src);
                        exit();
                }
        }
@@ -228,7 +225,7 @@ function wall_upload_post(App $a, $desktopmode = true)
        if (!$r) {
                $msg = DI::l10n()->t('Image upload failed.');
                if ($r_json) {
-                       echo json_encode(['error' => $msg]);
+                       System::jsonExit(['error' => $msg]);
                } else {
                        echo  $msg. EOL;
                }
@@ -255,8 +252,7 @@ function wall_upload_post(App $a, $desktopmode = true)
                $photo = Photo::selectFirst(['id', 'datasize', 'width', 'height', 'type'], ['resource-id' => $resource_id], ['order' => ['width']]);
                if (!$photo) {
                        if ($r_json) {
-                               echo json_encode(['error' => '']);
-                               exit();
+                               System::jsonExit(['error' => '']);
                        }
                        return false;
                }
@@ -272,8 +268,7 @@ function wall_upload_post(App $a, $desktopmode = true)
                $picture["preview"]   = DI::baseUrl() . "/photo/{$resource_id}-{$smallest}." . $Image->getExt();
 
                if ($r_json) {
-                       echo json_encode(['picture' => $picture]);
-                       exit();
+                       System::jsonExit(['picture' => $picture]);
                }
                Logger::info("upload done");
                return $picture;
@@ -282,8 +277,7 @@ function wall_upload_post(App $a, $desktopmode = true)
        Logger::info("upload done");
 
        if ($r_json) {
-               echo json_encode(['ok' => true]);
-               exit();
+               System::jsonExit(['ok' => true]);
        }
 
        echo  "\n\n" . '[url=' . DI::baseUrl() . '/photos/' . $page_owner_nick . '/image/' . $resource_id . '][img]' . DI::baseUrl() . "/photo/{$resource_id}-{$smallest}.".$Image->getExt()."[/img][/url]\n\n";
index 16bc2360ef2767edb8984209bcac62b07b7437dd..3ef94a74c5dad16fd707f6676cf658faaf1c788f 100644 (file)
@@ -339,7 +339,7 @@ class System
         * @param integer $options      JSON options
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function jsonExit($x, $content_type = 'application/json', int $options = 0) {
+       public static function jsonExit($x, $content_type = 'application/json', int $options = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) {
                DI::apiResponse()->setType(Response::TYPE_JSON, $content_type);
                DI::apiResponse()->addContent(json_encode($x, $options));
                DI::page()->exit(DI::apiResponse()->generate());
index cd17f758b4149abc6ec019bd2915a6529617fe1a..82997161d16cbbdef1850a12512227fdf3547009 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
+use Friendica\Core\System;
 
 /**
  * Static definition for the Firefox Account Manager
@@ -78,7 +79,6 @@ class AccountManagementControlDocument extends BaseModule
                        ],
                ];
 
-               echo json_encode($output);
-               exit();
+               System::jsonExit($output);
        }
 }
index 2279ec1793619997e9a80b5d11d1d85bb4f74d05..a4b8c3fef10e48791dce63838e49fc997d13ea2c 100644 (file)
@@ -44,7 +44,8 @@ class Featured extends BaseModule
 
                $page = $request['page'] ?? null;
 
-               $outbox = ActivityPub\Transmitter::getFeatured($owner, $page);
-               System::jsonExit($outbox, 'application/activity+json');
+               $featured = ActivityPub\Transmitter::getFeatured($owner, $page);
+
+               System::jsonExit($featured, 'application/activity+json');
        }
 }
index 54584de1824c6e761f35345424379ab8d1035bed..b04d1976e0e503ca58fa9e8bc7cb87579ec71177 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module\ActivityPub;
 
 use Friendica\BaseModule;
+use Friendica\Core\System;
 use Friendica\Model\Contact;
 use Friendica\Model\User;
 use Friendica\Protocol\ActivityPub;
@@ -48,8 +49,6 @@ class Followers extends BaseModule
 
                $followers = ActivityPub\Transmitter::getContacts($owner, [Contact::FOLLOWER, Contact::FRIEND], 'followers', $page, (string)HTTPSignature::getSigner('', $_SERVER));
 
-               header('Content-Type: application/activity+json');
-               echo json_encode($followers);
-               exit();
+               System::jsonExit($followers, 'application/activity+json');
        }
 }
index 67d3010a3a68564e569c4a8c0a941d3b47f1c908..e3ae10e87e22382d55501c1049c7bd767a5778fe 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module\ActivityPub;
 
 use Friendica\BaseModule;
+use Friendica\Core\System;
 use Friendica\Model\Contact;
 use Friendica\Model\User;
 use Friendica\Protocol\ActivityPub;
@@ -46,8 +47,6 @@ class Following extends BaseModule
 
                $following = ActivityPub\Transmitter::getContacts($owner, [Contact::SHARING, Contact::FRIEND], 'following', $page);
 
-               header('Content-Type: application/activity+json');
-               echo json_encode($following);
-               exit();
+               System::jsonExit($following, 'application/activity+json');
        }
 }
index b16eb9fd403b1a8d95022130148ecaed3a724585..a9858d94c8d2f77bb1f513708f121db8d421f654 100644 (file)
@@ -50,7 +50,7 @@ class Inbox extends BaseModule
                                $filename = 'failed-activitypub';
                        }
                        $tempfile = tempnam(System::getTempPath(), $filename);
-                       file_put_contents($tempfile, json_encode(['parameters' => $this->parameters, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
+                       file_put_contents($tempfile, json_encode(['parameters' => $this->parameters, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
                        Logger::notice('Incoming message stored', ['file' => $tempfile]);
                }
 
index f3a37b7dadc9eaadf387e4d941b4bcab1b9b361b..d52c02bef2e668f12e89fe1cc0a9cfe230d46e96 100644 (file)
@@ -31,7 +31,6 @@ use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Network\HTTPException;
 use Friendica\Protocol\ActivityPub;
-use Friendica\Security\PermissionSet\Repository\PermissionSet;
 use Friendica\Util\HTTPSignature;
 use Friendica\Util\Network;
 use Friendica\Util\Strings;
@@ -130,6 +129,7 @@ class Objects extends BaseModule
 
                // Relaxed CORS header for public items
                header('Access-Control-Allow-Origin: *');
+
                System::jsonExit($data, 'application/activity+json');
        }
 }
index 3fa143cfbdfcdb5a6aceff4c75f74d81c54f3592..4bc1ca69301d27aa27b7789d39add7138f953316 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module\ActivityPub;
 
 use Friendica\BaseModule;
+use Friendica\Core\System;
 use Friendica\Model\User;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Util\HTTPSignature;
@@ -46,8 +47,7 @@ class Outbox extends BaseModule
 
                $requester = HTTPSignature::getSigner('', $_SERVER);
                $outbox = ActivityPub\Transmitter::getOutbox($owner, $page, $requester);
-               header('Content-Type: application/activity+json');
-               echo json_encode($outbox);
-               exit();
+
+               System::jsonExit($outbox, 'application/activity+json');
        }
 }
index 8c6192e0a8ae80038fd9f6442130ee86de3d247c..dac6e5c1b31ac6f1f96b76f184ef2f27a0408dc2 100644 (file)
@@ -21,6 +21,7 @@
 
 namespace Friendica\Module\Events;
 
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Event;
@@ -94,9 +95,7 @@ class Json extends \Friendica\BaseModule
                        $events = self::map($events);
                }
 
-               header('Content-Type: application/json');
-               echo json_encode($events);
-               exit();
+               System::jsonExit($events);
        }
 
        private static function map(array $events): array
index 3fccda5f859ddd429adb34a8e21e23e3c521ca83..c5a66fa3d5038ffc0e23f6caa22a95899a4250f9 100644 (file)
@@ -182,8 +182,6 @@ class Friendica extends BaseModule
                        'no_scrape_url'    => DI::baseUrl()->get() . '/noscrape',
                ];
 
-               header('Content-type: application/json; charset=utf-8');
-               echo json_encode($data);
-               exit();
+               System::jsonExit($data);
        }
 }
index f00c9f9ecb1c98b0f25d900d7c32d9e85728a88d..88b1788dea2dc58917f304b7ed8c9298dc39a0a5 100644 (file)
@@ -27,6 +27,7 @@ use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Search;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Contact;
@@ -61,8 +62,7 @@ class Acl extends BaseModule
                        $o = self::regularContactSearch($type);
                }
 
-               echo json_encode($o);
-               exit;
+               System::jsonExit($o);
        }
 
        private static function globalContactSearch()
index 88b01e255e392adf19705654c0ecbc04db34ed62..db145bd430aa8b7d997837ab4aaebcaf831a6a0e 100644 (file)
@@ -26,6 +26,7 @@ use Friendica\BaseModule;
 use Friendica\Core\Addon;
 use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\L10n;
+use Friendica\Core\System;
 use Friendica\Network\HTTPException\NotFoundException;
 use Friendica\Util\Profiler;
 use Psr\Log\LoggerInterface;
@@ -78,9 +79,7 @@ class Statistics extends BaseModule
                        'services'              => $services,
                ], $services);
 
-               header("Content-Type: application/json");
-               echo json_encode($statistics, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
                $this->logger->debug("statistics.", ['statistics' => $statistics]);
-               exit();
+               System::jsonExit($statistics);
        }
 }
index cc5b75154640bc266ca6996f5f9050faedabda1c..6398a00c99704af5b5cfe5b52ccea382fb07ca6e 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
+use Friendica\Core\System;
 use Friendica\Core\Theme;
 
 /**
@@ -40,7 +41,7 @@ class ThemeDetails extends BaseModule
                        $version     = $info['version']     ?? '';
                        $credits     = $info['credits']     ?? '';
 
-                       echo json_encode([
+                       System::jsonExit([
                                'img'     => Theme::getScreenshot($theme),
                                'desc'    => $description,
                                'version' => $version,
index d34823bb438635f79e51dfb1257d6b6081c9433d..0feb5e37926e51b197f23da6acf3e3743c4419b4 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module\WellKnown;
 
 use Friendica\BaseModule;
+use Friendica\Core\System;
 use Friendica\DI;
 
 /**
@@ -51,8 +52,6 @@ class NodeInfo extends BaseModule
                        ]
                ];
 
-               header('Content-type: application/json; charset=utf-8');
-               echo json_encode($nodeinfo, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
-               exit;
+               System::jsonExit($nodeinfo);
        }
 }
index bf767a3e7ba0f0d34b5570ab42596a9629dc73e6..d89d08e0838da1331785c74d5d19bd596578b226 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module\WellKnown;
 
 use Friendica\BaseModule;
+use Friendica\Core\System;
 use Friendica\DI;
 use Friendica\Model\Search;
 use Friendica\Protocol\Relay;
@@ -76,8 +77,6 @@ class XSocialRelay extends BaseModule
                        $relay['protocols']['diaspora'] = ['receive' => DI::baseUrl()->get() . '/receive/public'];
                }
 
-               header('Content-type: application/json; charset=utf-8');
-               echo json_encode($relay, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
-               exit;
+               System::jsonExit($relay);
        }
 }
index caf97231fea267b06f0d298ce04172320836d8e9..6797330442ab5b91bf1dc50e2b07dda97c7ac672 100644 (file)
@@ -802,7 +802,7 @@ class Receiver
                }
 
                $tempfile = tempnam(System::getTempPath(), $file);
-               file_put_contents($tempfile, json_encode(['activity' => $activity, 'body' => $body, 'uid' => $uid, 'trust_source' => $trust_source, 'push' => $push, 'signer' => $signer, 'object_data' => $object_data], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
+               file_put_contents($tempfile, json_encode(['activity' => $activity, 'body' => $body, 'uid' => $uid, 'trust_source' => $trust_source, 'push' => $push, 'signer' => $signer, 'object_data' => $object_data], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
                Logger::notice('Unknown activity stored', ['type' => $type, 'object_type' => $object_data['object_type'], $object_data['object_object_type'] ?? '', 'file' => $tempfile]);
        }