<?php
/**
- * @copyright Copyright (C) 2010-2023, the Friendica project
+ * @copyright Copyright (C) 2010-2024, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
namespace Friendica\Module\ActivityPub;
-use Friendica\Core\System;
use Friendica\Model\User;
use Friendica\Module\BaseApi;
use Friendica\Protocol\ActivityPub;
use Friendica\Util\HTTPSignature;
+use Friendica\Util\Network;
/**
* ActivityPub Outbox
protected function rawContent(array $request = [])
{
if (empty($this->parameters['nickname'])) {
- throw new \Friendica\Network\HTTPException\NotFoundException();
+ $this->jsonExit([], 'application/activity+json');
}
$owner = User::getOwnerDataByNick($this->parameters['nickname']);
$page = 1;
}
- $requester = HTTPSignature::getSigner('', $_SERVER);
- $outbox = ActivityPub\Transmitter::getOutbox($owner, $page, $request['max_id'] ?? null, $requester);
+ $outbox = ActivityPub\ClientToServer::getOutbox($owner, $uid, $page, $request['max_id'] ?? null, HTTPSignature::getSigner('', $_SERVER));
+
+ $this->jsonExit($outbox, 'application/activity+json');
+ }
+
+ protected function post(array $request = [])
+ {
+ $this->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($outbox, 'application/activity+json');
+ $this->jsonExit(ActivityPub\ClientToServer::processActivity($activity, $uid, self::getCurrentApplication() ?? []));
}
}