Functionality is now split

This commit is contained in:
Michael 2018-10-03 09:15:38 +00:00
parent 4528d8748c
commit 3ab837f3c7
13 changed files with 71 additions and 1727 deletions

View file

@ -116,7 +116,7 @@ class Processor
* @param array $activity
* @param $body
*/
private static function createItem($activity, $body)
public static function createItem($activity, $body)
{
$item = [];
$item['verb'] = ACTIVITY_POST;
@ -144,7 +144,7 @@ class Processor
* @param array $activity
* @param $body
*/
private static function likeItem($activity, $body)
public static function likeItem($activity, $body)
{
$item = [];
$item['verb'] = ACTIVITY_LIKE;
@ -161,7 +161,7 @@ class Processor
* @param array $activity
* @param $body
*/
private static function deleteItem($activity)
public static function deleteItem($activity)
{
$owner = Contact::getIdForURL($activity['owner']);
$object = JsonLD::fetchElement($activity, 'object', 'id');
@ -175,7 +175,7 @@ class Processor
* @param array $activity
* @param $body
*/
private static function dislikeItem($activity, $body)
public static function dislikeItem($activity, $body)
{
$item = [];
$item['verb'] = ACTIVITY_DISLIKE;
@ -272,7 +272,7 @@ class Processor
$activity['published'] = $object['published'];
$activity['type'] = 'Create';
ActivityPub::processActivity($activity);
ActivityPub\Receiver::processActivity($activity);
logger('Activity ' . $url . ' had been fetched and processed.');
}
@ -281,7 +281,7 @@ class Processor
*
* @param array $activity
*/
private static function followUser($activity)
public static function followUser($activity)
{
$actor = JsonLD::fetchElement($activity, 'object', 'id');
$uid = User::getIdForURL($actor);
@ -321,7 +321,7 @@ class Processor
*
* @param array $activity
*/
private static function updatePerson($activity)
public static function updatePerson($activity)
{
if (empty($activity['object']['id'])) {
return;
@ -336,7 +336,7 @@ class Processor
*
* @param array $activity
*/
private static function deletePerson($activity)
public static function deletePerson($activity)
{
if (empty($activity['object']['id']) || empty($activity['object']['actor'])) {
logger('Empty object id or actor.', LOGGER_DEBUG);
@ -362,7 +362,7 @@ class Processor
*
* @param array $activity
*/
private static function acceptFollowUser($activity)
public static function acceptFollowUser($activity)
{
$actor = JsonLD::fetchElement($activity, 'object', 'actor');
$uid = User::getIdForURL($actor);
@ -395,7 +395,7 @@ class Processor
*
* @param array $activity
*/
private static function rejectFollowUser($activity)
public static function rejectFollowUser($activity)
{
$actor = JsonLD::fetchElement($activity, 'object', 'actor');
$uid = User::getIdForURL($actor);
@ -424,7 +424,7 @@ class Processor
*
* @param array $activity
*/
private static function undoActivity($activity)
public static function undoActivity($activity)
{
$activity_url = JsonLD::fetchElement($activity, 'object', 'id');
if (empty($activity_url)) {
@ -449,7 +449,7 @@ class Processor
*
* @param array $activity
*/
private static function undoFollowUser($activity)
public static function undoFollowUser($activity)
{
$object = JsonLD::fetchElement($activity, 'object', 'object');
$uid = User::getIdForURL($object);

View file

@ -95,7 +95,7 @@ class Receiver
$trust_source = false;
}
ActivityPub::processActivity($activity, $body, $uid, $trust_source);
self::processActivity($activity, $body, $uid, $trust_source);
}
/**
@ -116,7 +116,7 @@ class Receiver
}
// Fetch all receivers from to, cc, bto and bcc
$receivers = ActivityPub::getReceivers($activity, $actor);
$receivers = self::getReceivers($activity, $actor);
// When it is a delivery to a personal inbox we add that user to the receivers
if (!empty($uid)) {
@ -135,7 +135,7 @@ class Receiver
// Fetch the content only on activities where this matters
if (in_array($activity['type'], ['Create', 'Announce'])) {
$object_data = ActivityPub::fetchObject($object_id, $activity['object'], $trust_source);
$object_data = self::fetchObject($object_id, $activity['object'], $trust_source);
if (empty($object_data)) {
logger("Object data couldn't be processed", LOGGER_DEBUG);
return [];
@ -145,7 +145,7 @@ class Receiver
} elseif (in_array($activity['type'], ['Like', 'Dislike'])) {
// Create a mostly empty array out of the activity data (instead of the object).
// This way we later don't have to check for the existence of ech individual array element.
$object_data = ActivityPub::processObject($activity);
$object_data = self::processObject($activity);
$object_data['name'] = $activity['type'];
$object_data['author'] = $activity['actor'];
$object_data['object'] = $object_id;
@ -157,7 +157,7 @@ class Receiver
$object_data['object_type'] = JsonLD::fetchElement($activity, 'object', 'type');
}
$object_data = ActivityPub::addActivityFields($object_data, $activity);
$object_data = self::addActivityFields($object_data, $activity);
$object_data['type'] = $activity['type'];
$object_data['owner'] = $actor;
@ -176,7 +176,7 @@ class Receiver
* @param integer $uid User ID
* @param $trust_source
*/
private static function processActivity($activity, $body = '', $uid = null, $trust_source = false)
public static function processActivity($activity, $body = '', $uid = null, $trust_source = false)
{
if (empty($activity['type'])) {
logger('Empty type', LOGGER_DEBUG);
@ -195,7 +195,7 @@ class Receiver
}
// $trust_source is called by reference and is set to true if the content was retrieved successfully
$object_data = ActivityPub::prepareObjectData($activity, $uid, $trust_source);
$object_data = self::prepareObjectData($activity, $uid, $trust_source);
if (empty($object_data)) {
logger('No object data found', LOGGER_DEBUG);
return;
@ -208,54 +208,54 @@ class Receiver
switch ($activity['type']) {
case 'Create':
case 'Announce':
ActivityPub::createItem($object_data, $body);
ActivityPub\Processor::createItem($object_data, $body);
break;
case 'Like':
ActivityPub::likeItem($object_data, $body);
ActivityPub\Processor::likeItem($object_data, $body);
break;
case 'Dislike':
ActivityPub::dislikeItem($object_data, $body);
ActivityPub\Processor::dislikeItem($object_data, $body);
break;
case 'Update':
if (in_array($object_data['object_type'], ActivityPub::CONTENT_TYPES)) {
/// @todo
} elseif (in_array($object_data['object_type'], ActivityPub::ACCOUNT_TYPES)) {
ActivityPub::updatePerson($object_data, $body);
ActivityPub\Processor::updatePerson($object_data, $body);
}
break;
case 'Delete':
if ($object_data['object_type'] == 'Tombstone') {
ActivityPub::deleteItem($object_data, $body);
ActivityPub\Processor::deleteItem($object_data, $body);
} elseif (in_array($object_data['object_type'], ActivityPub::ACCOUNT_TYPES)) {
ActivityPub::deletePerson($object_data, $body);
ActivityPub\Processor::deletePerson($object_data, $body);
}
break;
case 'Follow':
ActivityPub::followUser($object_data);
ActivityPub\Processor::followUser($object_data);
break;
case 'Accept':
if ($object_data['object_type'] == 'Follow') {
ActivityPub::acceptFollowUser($object_data);
ActivityPub\Processor::acceptFollowUser($object_data);
}
break;
case 'Reject':
if ($object_data['object_type'] == 'Follow') {
ActivityPub::rejectFollowUser($object_data);
ActivityPub\Processor::rejectFollowUser($object_data);
}
break;
case 'Undo':
if ($object_data['object_type'] == 'Follow') {
ActivityPub::undoFollowUser($object_data);
ActivityPub\Processor::undoFollowUser($object_data);
} elseif (in_array($object_data['object_type'], ActivityPub::ACTIVITY_TYPES)) {
ActivityPub::undoActivity($object_data);
ActivityPub\Processor::undoActivity($object_data);
}
break;
@ -346,7 +346,7 @@ class Receiver
}
}
ActivityPub::switchContacts($receivers, $actor);
self::switchContacts($receivers, $actor);
return $receivers;
}
@ -392,12 +392,12 @@ class Receiver
foreach ($receivers as $receiver) {
$contact = DBA::selectFirst('contact', ['id'], ['uid' => $receiver, 'network' => Protocol::OSTATUS, 'nurl' => normalise_link($actor)]);
if (DBA::isResult($contact)) {
ActivityPub::switchContact($contact['id'], $receiver, $actor);
self::switchContact($contact['id'], $receiver, $actor);
}
$contact = DBA::selectFirst('contact', ['id'], ['uid' => $receiver, 'network' => Protocol::OSTATUS, 'alias' => [normalise_link($actor), $actor]]);
if (DBA::isResult($contact)) {
ActivityPub::switchContact($contact['id'], $receiver, $actor);
self::switchContact($contact['id'], $receiver, $actor);
}
}
}
@ -461,7 +461,7 @@ class Receiver
return false;
}
logger('Using already stored item for url ' . $object_id, LOGGER_DEBUG);
$data = ActivityPub::createNote($item);
$data = ActivityPub\Transmitter::createNote($item);
}
if (empty($data['type'])) {
@ -470,14 +470,14 @@ class Receiver
}
if (in_array($data['type'], ActivityPub::CONTENT_TYPES)) {
return ActivityPub::processObject($data);
return self::processObject($data);
}
if ($data['type'] == 'Announce') {
if (empty($data['object'])) {
return false;
}
return ActivityPub::fetchObject($data['object']);
return self::fetchObject($data['object']);
}
logger('Unhandled object type: ' . $data['type'], LOGGER_DEBUG);
@ -533,7 +533,7 @@ class Receiver
$object_data['tags'] = defaults($object, 'tag', null);
$object_data['service'] = JsonLD::fetchElement($object, 'instrument', 'name', 'type', 'Service');
$object_data['alternate-url'] = JsonLD::fetchElement($object, 'url', 'href');
$object_data['receiver'] = ActivityPub::getReceivers($object, $object_data['owner']);
$object_data['receiver'] = self::getReceivers($object, $object_data['owner']);
// Common object data:
@ -560,37 +560,4 @@ class Receiver
return $object_data;
}
/**
* @brief
*
* @param $url
* @param $child
*/
private static function fetchMissingActivity($url, $child)
{
if (Config::get('system', 'ostatus_full_threads')) {
return;
}
$object = ActivityPub::fetchContent($url);
if (empty($object)) {
logger('Activity ' . $url . ' was not fetchable, aborting.');
return;
}
$activity = [];
$activity['@context'] = $object['@context'];
unset($object['@context']);
$activity['id'] = $object['id'];
$activity['to'] = defaults($object, 'to', []);
$activity['cc'] = defaults($object, 'cc', []);
$activity['actor'] = $child['author'];
$activity['object'] = $object;
$activity['published'] = $object['published'];
$activity['type'] = 'Create';
ActivityPub::processActivity($activity);
logger('Activity ' . $url . ' had been fetched and processed.');
}
}

View file

@ -283,7 +283,7 @@ class Transmitter
*
* @return permission array
*/
public static function createPermissionBlockForItem($item)
private static function createPermissionBlockForItem($item)
{
$data = ['to' => [], 'cc' => []];
@ -684,7 +684,7 @@ class Transmitter
'id' => System::baseUrl() . '/activity/' . System::createGUID(),
'type' => 'Delete',
'actor' => $owner['url'],
'object' => self::profile($uid),
'object' => $owner['url'],
'published' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
'to' => [ActivityPub::PUBLIC_COLLECTION],
'cc' => []];