Store "View" activity from Peertube

This commit is contained in:
Michael 2022-04-05 07:48:38 +00:00
parent a5a5a4b603
commit dcbca0c6a3
3 changed files with 20 additions and 3 deletions

View file

@ -183,6 +183,13 @@ final class Activity
*/ */
const EMOJIREACT = ActivityNamespace::LITEPUB . '/emojireact'; const EMOJIREACT = ActivityNamespace::LITEPUB . '/emojireact';
/**
* View notification from Peertube
*
* @var string
*/
const VIEW = ActivityNamespace::PEERTUBE . '/view';
/** /**
* likes (etc.) can apply to other things besides posts. Check if they are post children, * likes (etc.) can apply to other things besides posts. Check if they are post children,
* in which case we handle them specially * in which case we handle them specially
@ -195,6 +202,7 @@ final class Activity
self::FOLLOW, self::FOLLOW,
self::ANNOUNCE, self::ANNOUNCE,
self::EMOJIREACT, self::EMOJIREACT,
self::VIEW,
]; ];
/** /**

View file

@ -144,12 +144,19 @@ final class ActivityNamespace
* @var string * @var string
*/ */
const ATOM1 = 'http://www.w3.org/2005/Atom'; const ATOM1 = 'http://www.w3.org/2005/Atom';
/** /**
* @var string * @var string
*/ */
const MASTODON = 'http://mastodon.social/schema/1.0'; const MASTODON = 'http://mastodon.social/schema/1.0';
/** /**
* @var string * @var string
*/ */
const LITEPUB = 'http://litepub.social'; const LITEPUB = 'http://litepub.social';
/**
* @var string
*/
const PEERTUBE = 'https://joinpeertube.org';
} }

View file

@ -385,7 +385,7 @@ class Receiver
} else { } else {
$object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage'); $object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage');
} }
} elseif (in_array($type, array_merge(self::ACTIVITY_TYPES, ['as:Follow', 'litepub:EmojiReact'])) && in_array($object_type, self::CONTENT_TYPES)) { } elseif (in_array($type, array_merge(self::ACTIVITY_TYPES, ['as:Follow', 'litepub:EmojiReact', 'as:View'])) && in_array($object_type, self::CONTENT_TYPES)) {
// Create a mostly empty array out of the activity data (instead of the object). // 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 each individual array element. // This way we later don't have to check for the existence of each individual array element.
$object_data = self::processObject($activity); $object_data = self::processObject($activity);
@ -743,8 +743,10 @@ class Receiver
break; break;
case 'as:View': case 'as:View':
if (in_array($object_data['object_type'], ['as:Note', 'as:Video'])) { if (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
// Unhandled Peertube activity ActivityPub\Processor::createActivity($object_data, Activity::VIEW);
} elseif ($object_data['object_type'] == '') {
// The object type couldn't be determined. Most likely we don't have it here. We ignore this activity.
} else { } else {
self::storeUnhandledActivity(true, $type, $object_data, $activity, $body, $uid, $trust_source, $push, $signer); self::storeUnhandledActivity(true, $type, $object_data, $activity, $body, $uid, $trust_source, $push, $signer);
} }