. * */ namespace Friendica\Module\Api\Mastodon; use Friendica\Core\System; use Friendica\DI; use Friendica\Module\BaseApi; use Friendica\Model\Group; /** * @see https://docs.joinmastodon.org/methods/timelines/lists/ */ class Lists extends BaseApi { public static function delete(array $parameters = []) { self::checkAllowedScope(self::SCOPE_WRITE); $uid = self::getCurrentUserID(); if (empty($parameters['id'])) { DI::mstdnError()->UnprocessableEntity(); } if (!Group::exists($parameters['id'], $uid)) { DI::mstdnError()->RecordNotFound(); } if (!Group::remove($parameters['id'])) { DI::mstdnError()->InternalError(); } System::jsonExit([]); } public static function post(array $parameters = []) { self::checkAllowedScope(self::SCOPE_WRITE); $uid = self::getCurrentUserID(); $request = self::getRequest([ 'title' => '', ]); if (empty($request['title'])) { DI::mstdnError()->UnprocessableEntity(); } Group::create($uid, $request['title']); $id = Group::getIdByName($uid, $request['title']); if (!$id) { DI::mstdnError()->InternalError(); } System::jsonExit(DI::mstdnList()->createFromGroupId($id)); } public static function put(array $parameters = []) { $request = self::getRequest([ 'title' => '', // The title of the list to be updated. 'replies_policy' => '', // One of: "followed", "list", or "none". ]); if (empty($request['title']) || empty($parameters['id'])) { DI::mstdnError()->UnprocessableEntity(); } Group::update($parameters['id'], $request['title']); } /** * @param array $parameters * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function rawContent(array $parameters = []) { self::checkAllowedScope(self::SCOPE_READ); $uid = self::getCurrentUserID(); if (empty($parameters['id'])) { $lists = []; $groups = Group::getByUserId($uid); foreach ($groups as $group) { $lists[] = DI::mstdnList()->createFromGroupId($group['id']); } } else { $id = $parameters['id']; if (!Group::exists($id, $uid)) { DI::mstdnError()->RecordNotFound(); } $lists = DI::mstdnList()->createFromGroupId($id); } System::jsonExit($lists); } }