X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FBaseApi.php;h=75791e0eaede651156833081163ad606495aa6db;hb=0031b4e18cff5ded33c5f8599d6d93ea090986ff;hp=81814bb0d497cb5e6870728d433a43a7aca83dd4;hpb=75a2190af5fce8ec02ea69ed1753fd57b57d62b3;p=friendica.git diff --git a/src/Module/BaseApi.php b/src/Module/BaseApi.php index 81814bb0d4..75791e0eae 100644 --- a/src/Module/BaseApi.php +++ b/src/Module/BaseApi.php @@ -1,4 +1,23 @@ . + * + */ namespace Friendica\Module; @@ -23,13 +42,13 @@ class BaseApi extends BaseModule { $arguments = DI::args(); - if (substr($arguments->getQueryString(), -4) === '.xml') { + if (substr($arguments->getCommand(), -4) === '.xml') { self::$format = 'xml'; } - if (substr($arguments->getQueryString(), -4) === '.rss') { + if (substr($arguments->getCommand(), -4) === '.rss') { self::$format = 'rss'; } - if (substr($arguments->getQueryString(), -4) === '.atom') { + if (substr($arguments->getCommand(), -4) === '.atom') { self::$format = 'atom'; } } @@ -87,20 +106,53 @@ class BaseApi extends BaseModule return api_get_user(DI::app(), $contact_id); } - protected static function format($root_element, $data) + /** + * Formats the data according to the data type + * + * @param string $root_element + * @param array $data An array with a single element containing the returned result + * @return false|string + */ + protected static function format(string $root_element, array $data) { + $return = api_format_data($root_element, self::$format, $data); + switch (self::$format) { - case "atom": - case "rss": case "xml": - $ret = api_create_xml($data, $root_element); + header("Content-Type: text/xml"); break; case "json": - default: - $ret = $data; + header("Content-Type: application/json"); + if (!empty($return)) { + $json = json_encode(end($return)); + if (!empty($_GET['callback'])) { + $json = $_GET['callback'] . "(" . $json . ")"; + } + $return = $json; + } + break; + case "rss": + header("Content-Type: application/rss+xml"); + $return = '' . "\n" . $return; + break; + case "atom": + header("Content-Type: application/atom+xml"); + $return = '' . "\n" . $return; break; } + + return $return; + } - return $ret; + /** + * Creates the XML from a JSON style array + * + * @param $data + * @param $root_element + * @return string + */ + protected static function createXml($data, $root_element) + { + return api_create_xml($data, $root_element); } }