. * */ 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 { protected function delete(array $request = []) { self::checkAllowedScope(self::SCOPE_WRITE); $uid = self::getCurrentUserID(); if (empty($this->parameters['id'])) { DI::mstdnError()->UnprocessableEntity(); } if (!Group::exists($this->parameters['id'], $uid)) { DI::mstdnError()->RecordNotFound(); } if (!Group::remove($this->parameters['id'])) { DI::mstdnError()->InternalError(); } System::jsonExit([]); } protected function post(array $request = []) { self::checkAllowedScope(self::SCOPE_WRITE); $uid = self::getCurrentUserID(); $request = $this->getRequest([ 'title' => '', ], $request); 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 function put(array $request = []) { $request = $this->getRequest([ 'title' => '', // The title of the list to be updated. 'replies_policy' => '', // One of: "followed", "list", or "none". ]); if (empty($request['title']) || empty($this->parameters['id'])) { DI::mstdnError()->UnprocessableEntity(); } Group::update($this->parameters['id'], $request['title']); } /** * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ protected function rawContent(array $request = []) { self::checkAllowedScope(self::SCOPE_READ); $uid = self::getCurrentUserID(); if (empty($this->parameters['id'])) { $lists = []; $groups = Group::getByUserId($uid); foreach ($groups as $group) { $lists[] = DI::mstdnList()->createFromGroupId($group['id']); } } else { $id = $this->parameters['id']; if (!Group::exists($id, $uid)) { DI::mstdnError()->RecordNotFound(); } $lists = DI::mstdnList()->createFromGroupId($id); } System::jsonExit($lists); } }