From bf4575799708cddf9ff0dfdb7d7531db27c4cbd1 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Sun, 2 Dec 2018 09:56:56 -0100 Subject: routes and methods Signed-off-by: Maxence Lange --- appinfo/routes.php | 10 ++-- lib/Controller/LocalController.php | 112 +++++++++++++++++++++++++++---------- 2 files changed, 87 insertions(+), 35 deletions(-) diff --git a/appinfo/routes.php b/appinfo/routes.php index b1f52d42..3d371336 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -75,16 +75,18 @@ return [ ['name' => 'Local#actionFollow', 'url' => '/api/v1/current/follow', 'verb' => 'PUT'], ['name' => 'Local#actionUnfollow', 'url' => '/api/v1/current/follow', 'verb' => 'DELETE'], + ['name' => 'Local#currentInfo', 'url' => '/api/v1/current/info', 'verb' => 'PUT'], ['name' => 'Local#currentFollowers', 'url' => '/api/v1/current/followers', 'verb' => 'GET'], ['name' => 'Local#currentFollowing', 'url' => '/api/v1/current/following', 'verb' => 'GET'], + ['name' => 'Local#accountInfo', 'url' => '/api/v1/account/{username}/info', 'verb' => 'GET'], ['name' => 'Local#accountFollowers', 'url' => '/api/v1/account/{username}/followers', 'verb' => 'GET'], ['name' => 'Local#accountFollowing', 'url' => '/api/v1/account/{username}/following', 'verb' => 'GET'], - ['name' => 'Local#accountInfo', 'url' => '/api/v1/global/account/info', 'verb' => 'GET'], - ['name' => 'Local#actorInfo', 'url' => '/api/v1/global/actor/info', 'verb' => 'GET'], - ['name' => 'Local#actorAvatar', 'url' => '/api/v1/global/actor/avatar', 'verb' => 'GET'], - ['name' => 'Local#accountsSearch', 'url' => '/api/v1/global/accounts/search', 'verb' => 'GET'], + ['name' => 'Local#globalAccountInfo', 'url' => '/api/v1/global/account/info', 'verb' => 'GET'], + ['name' => 'Local#globalActorInfo', 'url' => '/api/v1/global/actor/info', 'verb' => 'GET'], + ['name' => 'Local#globalActorAvatar', 'url' => '/api/v1/global/actor/avatar', 'verb' => 'GET'], + ['name' => 'Local#globalAccountsSearch', 'url' => '/api/v1/global/accounts/search', 'verb' => 'GET'], ['name' => 'Local#documentsCache', 'url' => '/api/v1/documents/cache', 'verb' => 'POST'], diff --git a/lib/Controller/LocalController.php b/lib/Controller/LocalController.php index cc37a5eb..69bd259e 100644 --- a/lib/Controller/LocalController.php +++ b/lib/Controller/LocalController.php @@ -294,32 +294,16 @@ class LocalController extends Controller { * @NoAdminRequired * @NoSubAdminRequired * - * @param string $search + * @param string $account * * @return DataResponse - * @throws Exception */ - public function accountsSearch(string $search): DataResponse { - try { - $viewer = $this->actorService->getActorFromUserId($this->userId, true); - } catch (Exception $e) { - throw new Exception(); - } - - $this->personService->setViewerId($viewer->getId()); - - /* Look for an exactly matching account */ - $match = null; - try { - $match = $this->personService->getFromAccount($search, false); - $match->setCompleteDetails(true); - } catch (Exception $e) { - } - + public function actionFollow(string $account): DataResponse { try { - $accounts = $this->personService->searchCachedAccounts($search); + $actor = $this->actorService->getActorFromUserId($this->userId); + $this->followService->followAccount($actor, $account); - return $this->success(['accounts' => $accounts, 'exact' => $match]); + return $this->success([]); } catch (Exception $e) { return $this->fail($e); } @@ -338,10 +322,10 @@ class LocalController extends Controller { * * @return DataResponse */ - public function accountFollow(string $account): DataResponse { + public function actionUnfollow(string $account): DataResponse { try { $actor = $this->actorService->getActorFromUserId($this->userId); - $this->followService->followAccount($actor, $account); + $this->followService->unfollowAccount($actor, $account); return $this->success([]); } catch (Exception $e) { @@ -358,16 +342,14 @@ class LocalController extends Controller { * @NoAdminRequired * @NoSubAdminRequired * - * @param string $account - * * @return DataResponse */ - public function accountUnfollow(string $account): DataResponse { + public function currentInfo(): DataResponse { try { $actor = $this->actorService->getActorFromUserId($this->userId); - $this->followService->unfollowAccount($actor, $account); + $actor = $this->personService->getFromLocalAccount($actor->getPreferredUsername()); - return $this->success([]); + return $this->success(['account' => $actor]); } catch (Exception $e) { return $this->fail($e); } @@ -413,10 +395,36 @@ class LocalController extends Controller { /** + * + * // TODO: Delete the NoCSRF check + * * @NoCSRFRequired * @NoAdminRequired * @NoSubAdminRequired * + * @param string $username + * + * @return DataResponse + */ + public function accountInfo(string $username): DataResponse { + try { + $actor = $this->actorService->getActor($username); + $actor = $this->personService->getFromLocalAccount($actor->getPreferredUsername()); + + return $this->success(['account' => $actor]); + } catch (Exception $e) { + return $this->fail($e); + } + } + + + /** + * @NoCSRFRequired + * @NoAdminRequired + * @NoSubAdminRequired + * + * @param string $username + * * @return DataResponse */ public function accountFollowers(string $username): DataResponse { @@ -436,6 +444,8 @@ class LocalController extends Controller { * @NoAdminRequired * @NoSubAdminRequired * + * @param string $username + * * @return DataResponse */ public function accountFollowing(string $username): DataResponse { @@ -462,7 +472,7 @@ class LocalController extends Controller { * * @return DataResponse */ - public function accountInfo(string $account): DataResponse { + public function globalAccountInfo(string $account): DataResponse { try { $actor = $this->personService->getFromAccount($account); @@ -485,7 +495,7 @@ class LocalController extends Controller { * * @return DataResponse */ - public function actorInfo(string $id): DataResponse { + public function globalActorInfo(string $id): DataResponse { try { $actor = $this->personService->getFromId($id); @@ -504,7 +514,7 @@ class LocalController extends Controller { * * @return DataResponse */ - public function actorAvatar(string $id): Response { + public function globalActorAvatar(string $id): Response { try { $actor = $this->personService->getFromId($id); if ($actor->gotIcon()) { @@ -521,6 +531,46 @@ class LocalController extends Controller { } + /** + * + * // TODO: Delete the NoCSRF check + * + * @NoCSRFRequired + * @NoAdminRequired + * @NoSubAdminRequired + * + * @param string $search + * + * @return DataResponse + * @throws Exception + */ + public function globalAccountsSearch(string $search): DataResponse { + try { + $viewer = $this->actorService->getActorFromUserId($this->userId, true); + } catch (Exception $e) { + throw new Exception(); + } + + $this->personService->setViewerId($viewer->getId()); + + /* Look for an exactly matching account */ + $match = null; + try { + $match = $this->personService->getFromAccount($search, false); + $match->setCompleteDetails(true); + } catch (Exception $e) { + } + + try { + $accounts = $this->personService->searchCachedAccounts($search); + + return $this->success(['accounts' => $accounts, 'exact' => $match]); + } catch (Exception $e) { + return $this->fail($e); + } + } + + /** * // TODO: Delete the NoCSRF check * -- cgit v1.2.3