From feeec908d30c660824a0adc77b3e61e50644c943 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 23 Sep 2018 09:20:25 +0000 Subject: [PATCH] We can delete notes / changed credits --- src/Protocol/ActivityPub.php | 23 +++++++++++++++-------- src/Util/HTTPSignature.php | 3 +++ src/Util/LDSignature.php | 5 +++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/Protocol/ActivityPub.php b/src/Protocol/ActivityPub.php index 87889300c7..4d7657865c 100644 --- a/src/Protocol/ActivityPub.php +++ b/src/Protocol/ActivityPub.php @@ -34,10 +34,6 @@ use Friendica\Util\LDSignature; * * Digest: https://tools.ietf.org/html/rfc5843 * https://tools.ietf.org/html/draft-cavage-http-signatures-10#ref-15 - * https://github.com/digitalbazaar/php-json-ld - * - * Part of the code for HTTP signing is taken from the Osada project. - * https://framagit.org/macgirvin/osada * * To-do: * @@ -46,8 +42,8 @@ use Friendica\Util\LDSignature; * - Object Types: Person, Tombstome * * Transmitter: - * - Activities: Announce, Delete Notes - * - Object Tyoes: Person, Tombstone + * - Activities: Announce + * - Object Tyoes: Person * * General: * - Endpoints: Outbox, Follower, Following @@ -344,8 +340,10 @@ class ActivityPub 'atomUri' => 'ostatus:atomUri', 'conversation' => 'ostatus:conversation', 'inReplyToAtomUri' => 'ostatus:inReplyToAtomUri']]]; - if ($item['deleted']) { + if ($item['deleted'] && ($item['gravity'] == GRAVITY_ACTIVITY)) { $type = 'Undo'; + } elseif ($item['deleted']) { + $type = 'Delete'; } } else { $data = []; @@ -365,7 +363,7 @@ class ActivityPub $data = array_merge($data, ActivityPub::createPermissionBlockForItem($item)); - if (in_array($data['type'], ['Create', 'Update', 'Announce'])) { + if (in_array($data['type'], ['Create', 'Update', 'Announce', 'Delete'])) { $data['object'] = self::CreateNote($item); } elseif ($data['type'] == 'Undo') { $data['object'] = self::createActivityFromItem($item_id, true); @@ -441,9 +439,18 @@ class ActivityPub $type = 'Note'; } + if ($item['deleted']) { + $type = 'Tombstone'; + } + $data = []; $data['id'] = $item['uri']; $data['type'] = $type; + + if ($item['deleted']) { + return $data; + } + $data['summary'] = null; // Ignore by now if ($item['uri'] != $item['thr-parent']) { diff --git a/src/Util/HTTPSignature.php b/src/Util/HTTPSignature.php index 8fa8566af3..aba280cf1d 100644 --- a/src/Util/HTTPSignature.php +++ b/src/Util/HTTPSignature.php @@ -16,6 +16,9 @@ use Friendica\Protocol\ActivityPub; * * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/Zotlabs/Web/HTTPSig.php * + * Other parts of the code for HTTP signing are taken from the Osada project. + * https://framagit.org/macgirvin/osada + * * @see https://tools.ietf.org/html/draft-cavage-http-signatures-07 */ diff --git a/src/Util/LDSignature.php b/src/Util/LDSignature.php index 6db66a52a5..6d6dd16f3a 100644 --- a/src/Util/LDSignature.php +++ b/src/Util/LDSignature.php @@ -6,6 +6,11 @@ use Friendica\Util\JsonLD; use Friendica\Util\DateTimeFormat; use Friendica\Protocol\ActivityPub; +/** + * @brief Implements JSON-LD signatures + * + * Ported from Osada: https://framagit.org/macgirvin/osada + */ class LDSignature { public static function isSigned($data)