X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FActivityPub%2FOutbox.php;h=01061d8c674163c4b3f9596d8902680060fd0ff8;hb=8fe6419d392b2abff5c7ba2552b9fe8d4dad69f2;hp=c459a55e30e50622550a9afe2d7102d900520130;hpb=3bae52074a644b0ade3808bed9fc1268e1baa4e3;p=friendica.git diff --git a/src/Module/ActivityPub/Outbox.php b/src/Module/ActivityPub/Outbox.php index c459a55e30..01061d8c67 100644 --- a/src/Module/ActivityPub/Outbox.php +++ b/src/Module/ActivityPub/Outbox.php @@ -1,6 +1,6 @@ parameters['nickname'])) { throw new \Friendica\Network\HTTPException\NotFoundException(); @@ -42,12 +44,42 @@ class Outbox extends BaseModule throw new \Friendica\Network\HTTPException\NotFoundException(); } - $page = $_REQUEST['page'] ?? null; + $uid = self::getCurrentUserID(); + $page = $request['page'] ?? null; + + if (empty($page) && empty($request['max_id']) && !empty($uid)) { + $page = 1; + } $requester = HTTPSignature::getSigner('', $_SERVER); - $outbox = ActivityPub\Transmitter::getOutbox($owner, $page, $requester); - header('Content-Type: application/activity+json'); - echo json_encode($outbox); - exit(); + $outbox = ActivityPub\Transmitter::getOutbox($owner, $uid, $page, $request['max_id'] ?? null, $requester); + + System::jsonExit($outbox, 'application/activity+json'); + } + + protected function post(array $request = []) + { + self::checkAllowedScope(self::SCOPE_WRITE); + $uid = self::getCurrentUserID(); + $postdata = Network::postdata(); + + if (empty($postdata) || empty($this->parameters['nickname'])) { + throw new \Friendica\Network\HTTPException\BadRequestException(); + } + + $owner = User::getOwnerDataByNick($this->parameters['nickname']); + if (empty($owner)) { + throw new \Friendica\Network\HTTPException\NotFoundException(); + } + if ($owner['uid'] != $uid) { + throw new \Friendica\Network\HTTPException\ForbiddenException(); + } + + $activity = json_decode($postdata, true); + if (empty($activity)) { + throw new \Friendica\Network\HTTPException\BadRequestException(); + } + + System::jsonExit(ActivityPub\ClientToServer::processActivity($activity, $uid, self::getCurrentApplication() ?? [])); } }