X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FApi%2FApiResponse.php;h=b5b2a4717c45bf9a25c9a34c15a1463aff8d5769;hb=53aba7b37e019d4093d0985e394d393ae77ef0df;hp=8a28e5766bec9459b5267d4733794b7eb97d75ed;hpb=537b74f3079a046750bc210bbd9e51c1187b361d;p=friendica.git diff --git a/src/Module/Api/ApiResponse.php b/src/Module/Api/ApiResponse.php index 8a28e5766b..b5b2a4717c 100644 --- a/src/Module/Api/ApiResponse.php +++ b/src/Module/Api/ApiResponse.php @@ -1,4 +1,23 @@ . + * + */ namespace Friendica\Module\Api; @@ -8,7 +27,6 @@ use Friendica\Core\L10n; use Friendica\Module\Response; use Friendica\Util\Arrays; use Friendica\Util\DateTimeFormat; -use Friendica\Util\HTTPInputData; use Friendica\Util\XML; use Psr\Log\LoggerInterface; use Friendica\Factory\Api\Twitter\User as TwitterUser; @@ -81,7 +99,7 @@ class ApiResponse extends Response $data3 = [$root_element => $data2]; - return XML::fromArray($data3, $xml, false, $namespaces); + return XML::fromArray($data3, $dummy, false, $namespaces); } /** @@ -89,9 +107,10 @@ class ApiResponse extends Response * * @param array $arr Array to be passed to template * @param int $cid Contact ID of template + * * @return array */ - private function addRSSValues(array $arr, int $cid) + private function addRSSValues(array $arr, int $cid): array { if (empty($cid)) { return $arr; @@ -104,7 +123,7 @@ class ApiResponse extends Response 'alternate' => $user_info['url'], 'self' => $this->baseUrl . '/' . $this->args->getQueryString(), 'base' => $this->baseUrl, - 'updated' => DateTimeFormat::utc(null, DateTimeFormat::API), + 'updated' => DateTimeFormat::utcNow(DateTimeFormat::API), 'atom_updated' => DateTimeFormat::utcNow(DateTimeFormat::ATOM), 'language' => $user_info['lang'], 'logo' => $this->baseUrl . '/images/friendica-32.png', @@ -131,6 +150,7 @@ class ApiResponse extends Response case 'atom': case 'xml': return $this->createXML($data, $root_element); + case 'json': default: return $data; @@ -199,10 +219,11 @@ class ApiResponse extends Response switch ($format) { case 'xml': - $this->setHeader('Content-Type: text/xml'); + $this->setType(static::TYPE_XML); break; + case 'json': - $this->setHeader('Content-Type: application/json'); + $this->setType(static::TYPE_JSON); if (!empty($return)) { $json = json_encode(end($return)); if (!empty($_GET['callback'])) { @@ -211,26 +232,41 @@ class ApiResponse extends Response $return = $json; } break; + case 'rss': - $this->setHeader('Content-Type: application/rss+xml'); + $this->setType(static::TYPE_RSS); break; + case 'atom': - $this->setHeader('Content-Type: application/atom+xml'); + $this->setType(static::TYPE_ATOM); break; } $this->addContent($return); } + /** + * Wrapper around exit() for JSON only responses + * + * @param array $data + * + * @return void + */ + public function exitWithJson(array $data) + { + $this->exit('content', ['content' => $data], static::TYPE_JSON); + } + /** * Quit execution with the message that the endpoint isn't implemented * * @param string $method + * @param array $request (optional) The request content of the current call for later analysis * * @return void * @throws \Exception */ - public function unsupported(string $method = 'all') + public function unsupported(string $method = 'all', array $request = []) { $path = $this->args->getQueryString(); $this->logger->info('Unimplemented API call', @@ -238,11 +274,10 @@ class ApiResponse extends Response 'method' => $method, 'path' => $path, 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '', - 'request' => HTTPInputData::process() + 'request' => $request, ]); - $error = $this->l10n->t('API endpoint %s %s is not implemented', strtoupper($method), $path); - $error_description = $this->l10n->t('The API endpoint is currently not implemented but might be in the future.'); + $error = $this->l10n->t('API endpoint %s %s is not implemented but might be in the future.', strtoupper($method), $path); - $this->exit('error', ['error' => ['error' => $error, 'error_description' => $error_description]]); + $this->error(501, 'Not Implemented', $error); } }