. * */ namespace Friendica\Module\Api\Mastodon; use Friendica\Core\System; use Friendica\DI; use Friendica\Module\BaseApi; use Friendica\Model\Circle; /** * @see https://docs.joinmastodon.org/methods/timelines/lists/ */ class Lists extends BaseApi { protected function delete(array $request = []) { $this->checkAllowedScope(self::SCOPE_WRITE); $uid = self::getCurrentUserID(); if (empty($this->parameters['id'])) { $this->logErrorAndJsonExit(422, $this->errorFactory->UnprocessableEntity()); } if (!Circle::exists($this->parameters['id'], $uid)) { $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound()); } if (!Circle::remove($this->parameters['id'])) { $this->logErrorAndJsonExit(500, $this->errorFactory->InternalError()); } $this->jsonExit([]); } protected function post(array $request = []) { $this->checkAllowedScope(self::SCOPE_WRITE); $uid = self::getCurrentUserID(); $request = $this->getRequest([ 'title' => '', ], $request); if (empty($request['title'])) { $this->logErrorAndJsonExit(422, $this->errorFactory->UnprocessableEntity()); } Circle::create($uid, $request['title']); $id = Circle::getIdByName($uid, $request['title']); if (!$id) { $this->logErrorAndJsonExit(500, $this->errorFactory->InternalError()); } $this->jsonExit(DI::mstdnList()->createFromCircleId($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". ], $request); if (empty($request['title']) || empty($this->parameters['id'])) { $this->logErrorAndJsonExit(422, $this->errorFactory->UnprocessableEntity()); } Circle::update($this->parameters['id'], $request['title']); } /** * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ protected function rawContent(array $request = []) { $this->checkAllowedScope(self::SCOPE_READ); $uid = self::getCurrentUserID(); if (empty($this->parameters['id'])) { $lists = []; foreach (Circle::getByUserId($uid) as $circle) { $lists[] = DI::mstdnList()->createFromCircleId($circle['id']); } } else { $id = $this->parameters['id']; if (!Circle::exists($id, $uid)) { $this->logErrorAndJsonExit(404, $this->errorFactory->RecordNotFound()); } $lists = DI::mstdnList()->createFromCircleId($id); } $this->jsonExit($lists); } }