From b00185ddbac9ac3de975a3954f2ede2f24458f6a Mon Sep 17 00:00:00 2001 From: winter Date: Sun, 8 Dec 2024 18:04:37 +0000 Subject: implement notes --- routes/actor.php | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'routes/actor.php') diff --git a/routes/actor.php b/routes/actor.php index 710adfa..5879538 100644 --- a/routes/actor.php +++ b/routes/actor.php @@ -2,6 +2,7 @@ use WpfTest\HttpResponseStatus\NotFound; use WpfTest\Model\Actor; +use WpfTest\Model\Note; use WpfTest\Router; Router::getInstance()->mount('/user/:handle', function (array $args) { @@ -9,35 +10,33 @@ Router::getInstance()->mount('/user/:handle', function (array $args) { if ($actor == null) { throw new NotFound("i don't know any local user called " . $args['handle']); } + json_response($actor); +}); + +Router::getInstance()->mount('/user/:handle/basicFeed', function (array $args) { + $actor = Actor::findLocalByHandle($args['handle']); + $notes = Note::findAllWithAuthor($actor); + // TODO: implement pagination json_response([ - 'type' => 'actor', - 'dbgIsLocal' => $actor->isLocal, - 'self' => path_to_uri("/user/$actor->handle"), - 'created' => $actor->created?->format('c'), - 'modified' => $actor->modified?->format('c'), - 'homepage' => path_to_uri("/$actor->handle"), - 'handle' => $actor->handle, - 'displayName' => $actor->displayName, - 'bio' => $actor->bio, - 'pronouns' => $actor->pronouns, - 'automated' => $actor->automated, - 'endpoints' => [ - 'basicFeed' => path_to_uri("/user/$actor->handle/basicFeed") - ] + 'page' => 1, + 'totalPages' => 1, + 'nextPage' => null, + 'previousPage' => null, + 'items' => array_map(function (Note $note) { + return $note->uri; + }, $notes) ]); }); -Router::getInstance()->mount('/user/:username/basicFeed', function (array $args) { - if ($args['username'] != 'winter') { - throw new NotFound('i only know about winter'); - } +Router::getInstance()->mount('/user/:handle/fullFeed', function (array $args) { + $actor = Actor::findLocalByHandle($args['handle']); + $notes = Note::findAllWithAuthor($actor); + // TODO: implement pagination here as well json_response([ 'page' => 1, 'totalPages' => 1, 'nextPage' => null, 'previousPage' => null, - 'items' => [ - path_to_uri('/post/1') - ] + 'items' => $notes ]); }); \ No newline at end of file -- cgit v1.3