From b365ffc3b5b1fb6b65ef5fb5d9b6ba3c4f912a4d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 5 Dec 2019 08:12:59 -0500 Subject: [PATCH] Add API base module --- src/Module/Base/Api.php | 105 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/Module/Base/Api.php diff --git a/src/Module/Base/Api.php b/src/Module/Base/Api.php new file mode 100644 index 000000000..f3453e032 --- /dev/null +++ b/src/Module/Base/Api.php @@ -0,0 +1,105 @@ +getQueryString(), -4) === '.xml') { + self::$format = 'xml'; + } + if (substr($Arguments->getQueryString(), -4) === '.rss') { + self::$format = 'rss'; + } + if (substr($Arguments->getQueryString(), -4) === '.atom') { + self::$format = 'atom'; + } + } + + public static function post(array $parameters = []) + { + if (!api_user()) { + throw new HTTPException\UnauthorizedException(L10n::t('Permission denied.')); + } + + $a = self::getApp(); + + if (!empty($a->user['uid']) && $a->user['uid'] != api_user()) { + throw new HTTPException\ForbiddenException(L10n::t('Permission denied.')); + } + } + + /** + * Log in user via OAuth1 or Simple HTTP Auth. + * Simple Auth allow username in form of
user@server
, ignoring server part + * + * @brief Login API user + * + * @throws HTTPException\ForbiddenException + * @throws HTTPException\UnauthorizedException + * @throws HTTPException\InternalServerErrorException + * @hook 'authenticate' + * array $addon_auth + * 'username' => username from login form + * 'password' => password from login form + * 'authenticated' => return status, + * 'user_record' => return authenticated user record + */ + protected static function login() + { + api_login(self::getApp()); + + self::$current_user_id = api_user(); + } + + /** + * @brief Get user info array. + * + * @param int|string $contact_id Contact ID or URL + * @return array|bool + * @throws HTTPException\BadRequestException + * @throws HTTPException\InternalServerErrorException + * @throws HTTPException\UnauthorizedException + * @throws \ImagickException + */ + protected static function getUser($contact_id = null) + { + return api_get_user(self::getApp(), $contact_id); + } + + protected static function format($root_element, $data) + { + switch (self::$format) { + case "atom": + case "rss": + case "xml": + $ret = api_create_xml($data, $root_element); + break; + case "json": + default: + $ret = $data; + break; + } + + return $ret; + } +}