]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/NodeInfo210.php
Merge pull request #12895 from HankG/mastodon-status-edit-fix-deleting-all-images
[friendica.git] / src / Module / NodeInfo210.php
index 5ea9c0e6833ec846a45042937bb489581cb93698..e7112846c6c9c86400a12f595f47fdee31ee2d13 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
 
 namespace Friendica\Module;
 
+use Friendica\App;
 use Friendica\BaseModule;
+use Friendica\Capabilities\ICanCreateResponses;
 use Friendica\Core\Addon;
-use Friendica\Core\System;
-use Friendica\DI;
+use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Core\L10n;
 use Friendica\Model\Nodeinfo;
+use Friendica\Util\Profiler;
+use Psr\Log\LoggerInterface;
 
 /**
  * Version 1.0 of Nodeinfo 2, a sStandardized way of exposing metadata about a server running one of the distributed social networks.
@@ -33,37 +37,40 @@ use Friendica\Model\Nodeinfo;
  */
 class NodeInfo210 extends BaseModule
 {
-       public static function rawContent(array $parameters = [])
+       /** @var IManageConfigValues  */
+       protected $config;
+
+       public function __construct(L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IManageConfigValues $config, array $server, array $parameters = [])
        {
-               $config = DI::config();
+               parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
+
+               $this->config = $config;
+       }
 
+       protected function rawContent(array $request = [])
+       {
                $nodeinfo = [
-                       'version'           => '1.0',
-                       'server'          => [
-                               'baseUrl'  => DI::baseUrl()->get(),
-                               'name'     => $config->get('config', 'sitename'),
+                       'version' => '1.0',
+                       'server'  => [
+                               'name'     => $this->config->get('config', 'sitename'),
                                'software' => 'friendica',
-                               'version'  => FRIENDICA_VERSION . '-' . DB_UPDATE_VERSION,
+                               'version'  => App::VERSION . '-' . DB_UPDATE_VERSION,
                        ],
-                       'organization'      => Nodeinfo::getOrganization($config),
+                       'organization'      => Nodeinfo::getOrganization($this->config),
                        'protocols'         => ['dfrn', 'activitypub'],
-                       'services'          => [],
-                       'openRegistrations' => intval($config->get('config', 'register_policy')) !== Register::CLOSED,
-                       'usage'             => [],
+                       'services'          => Nodeinfo::getServices(),
+                       'openRegistrations' => intval($this->config->get('config', 'register_policy')) !== Register::CLOSED,
+                       'usage'             => Nodeinfo::getUsage(true),
                ];
 
-               if (!empty($config->get('system', 'diaspora_enabled'))) {
+               if (!empty($this->config->get('system', 'diaspora_enabled'))) {
                        $nodeinfo['protocols'][] = 'diaspora';
                }
 
-               if (empty($config->get('system', 'ostatus_disabled'))) {
+               if (empty($this->config->get('system', 'ostatus_disabled'))) {
                        $nodeinfo['protocols'][] = 'ostatus';
                }
 
-               $nodeinfo['usage'] = Nodeinfo::getUsage(true);
-
-               $nodeinfo['services'] = Nodeinfo::getServices();
-
                if (Addon::isEnabled('twitter')) {
                        $nodeinfo['services']['inbound'][] = 'twitter';
                }
@@ -72,10 +79,11 @@ class NodeInfo210 extends BaseModule
                $nodeinfo['services']['inbound'][]  = 'rss2.0';
                $nodeinfo['services']['outbound'][] = 'atom1.0';
 
-               if (function_exists('imap_open') && !$config->get('system', 'imap_disabled')) {
+               if (function_exists('imap_open') && !$this->config->get('system', 'imap_disabled')) {
                        $nodeinfo['services']['inbound'][] = 'imap';
                }
 
-               System::jsonExit($nodeinfo, 'application/json; charset=utf-8', JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
+               $this->response->setType(ICanCreateResponses::TYPE_JSON, 'application/json; charset=utf-8');
+               $this->response->addContent(json_encode($nodeinfo, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
        }
 }