]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/NodeInfo110.php
Use rawContent for Special Options to avoid a protected options() method
[friendica.git] / src / Module / NodeInfo110.php
index d8f8a5049a3c1ee42051f4af3cd4c56ecb8824a2..9935e9089a24219ea891bf6abc119cb1a3fd922f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, 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, a standardized way of exposing metadata about a server running one of the distributed social networks.
@@ -33,10 +37,18 @@ use Friendica\Model\Nodeinfo;
  */
 class NodeInfo110 extends BaseModule
 {
-       public function rawContent()
+       /** @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',
                        'software'          => [
@@ -53,19 +65,19 @@ class NodeInfo110 extends BaseModule
                        ],
                        'services'          => [],
                        'usage'             => [],
-                       'openRegistrations' => intval($config->get('config', 'register_policy')) !== Register::CLOSED,
+                       'openRegistrations' => intval($this->config->get('config', 'register_policy')) !== Register::CLOSED,
                        'metadata'          => [
-                               'nodeName' => $config->get('config', 'sitename'),
+                               'nodeName' => $this->config->get('config', 'sitename'),
                        ],
                ];
 
-               if (!empty($config->get('system', 'diaspora_enabled'))) {
-                       $nodeinfo['protocols']['inbound'][] = 'diaspora';
+               if (!empty($this->config->get('system', 'diaspora_enabled'))) {
+                       $nodeinfo['protocols']['inbound'][]  = 'diaspora';
                        $nodeinfo['protocols']['outbound'][] = 'diaspora';
                }
 
-               if (empty($config->get('system', 'ostatus_disabled'))) {
-                       $nodeinfo['protocols']['inbound'][] = 'gnusocial';
+               if (empty($this->config->get('system', 'ostatus_disabled'))) {
+                       $nodeinfo['protocols']['inbound'][]  = 'gnusocial';
                        $nodeinfo['protocols']['outbound'][] = 'gnusocial';
                }
 
@@ -73,10 +85,10 @@ class NodeInfo110 extends BaseModule
 
                $nodeinfo['services'] = Nodeinfo::getServices();
 
-               $nodeinfo['metadata']['protocols'] = $nodeinfo['protocols'];
+               $nodeinfo['metadata']['protocols']               = $nodeinfo['protocols'];
                $nodeinfo['metadata']['protocols']['outbound'][] = 'atom1.0';
-               $nodeinfo['metadata']['protocols']['inbound'][] = 'atom1.0';
-               $nodeinfo['metadata']['protocols']['inbound'][] = 'rss2.0';
+               $nodeinfo['metadata']['protocols']['inbound'][]  = 'atom1.0';
+               $nodeinfo['metadata']['protocols']['inbound'][]  = 'rss2.0';
 
                $nodeinfo['metadata']['services'] = $nodeinfo['services'];
 
@@ -84,8 +96,9 @@ class NodeInfo110 extends BaseModule
                        $nodeinfo['metadata']['services']['inbound'][] = 'twitter';
                }
 
-               $nodeinfo['metadata']['explicitContent'] = $config->get('system', 'explicit_content', false) == true;
+               $nodeinfo['metadata']['explicitContent'] = $this->config->get('system', 'explicit_content', false) == true;
 
-               System::jsonExit($nodeinfo, 'application/json; charset=utf-8', JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
+               $this->response->setType(ICanCreateResponses::TYPE_JSON);
+               $this->response->addContent(json_encode($nodeinfo, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
        }
 }