[AP] Handle unlisted/followers-only notices
Note that this commit isn't intended to add support for sending such notes in GS. Instead, we handle the reception, storage and direct reply to this type of notices, in AP. ActivityPubPlugin: - Subscribe the event StartNoticeSave to hack answering non-public notes Activitypub_create: - Add 'directMessage' attribute to the Create activity, defaulting to false for now - Update validation method: validate 'directMessage' and add debug Activitypub_notice: - Handle incoming unlisted/followers-only notes - Add support for unlisted-replies - Add method to verify private (direct) notices inbox_handler: - Add handler for CREATE Note - Prepare logic for private-messaging - Overall refactor: Class members were continuously being passed as function arguments without need SharePlugin: - Stop showing the announce button in non public posts
This commit is contained in:
@@ -44,16 +44,17 @@ class Activitypub_create
|
||||
* @param array $object
|
||||
* @return array pretty array to be used in a response
|
||||
*/
|
||||
public static function create_to_array($actor, $object)
|
||||
public static function create_to_array(string $actor, array $object): array
|
||||
{
|
||||
$res = [
|
||||
'@context' => 'https://www.w3.org/ns/activitystreams',
|
||||
'id' => $object['id'].'/create',
|
||||
'type' => 'Create',
|
||||
'to' => $object['to'],
|
||||
'cc' => $object['cc'],
|
||||
'actor' => $actor,
|
||||
'object' => $object
|
||||
'@context' => 'https://www.w3.org/ns/activitystreams',
|
||||
'id' => $object['id'].'/create',
|
||||
'type' => 'Create',
|
||||
'directMessage' => false,
|
||||
'to' => $object['to'],
|
||||
'cc' => $object['cc'],
|
||||
'actor' => $actor,
|
||||
'object' => $object
|
||||
];
|
||||
return $res;
|
||||
}
|
||||
@@ -68,11 +69,17 @@ class Activitypub_create
|
||||
public static function validate_object($object)
|
||||
{
|
||||
if (!is_array($object)) {
|
||||
common_debug('ActivityPub Create Validator: Rejected because of invalid Object format.');
|
||||
throw new Exception('Invalid Object Format for Create Activity.');
|
||||
}
|
||||
if (!isset($object['type'])) {
|
||||
common_debug('ActivityPub Create Validator: Rejected because of Type.');
|
||||
throw new Exception('Object type was not specified for Create Activity.');
|
||||
}
|
||||
if (isset($object['directMessage']) && !is_bool($object['directMessage'])) {
|
||||
common_debug('ActivityPub Create Validator: Rejected because Object directMessage is invalid.');
|
||||
throw new Exception('Invalid Object directMessage.');
|
||||
}
|
||||
switch ($object['type']) {
|
||||
case 'Note':
|
||||
// Validate data
|
||||
|
Reference in New Issue
Block a user