From 13a03ee457475b1ae8bc9ea69c4b5790a12a56a9 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 29 May 2019 16:47:09 -0100 Subject: [PATCH 1/3] parse as Note if asked Signed-off-by: Maxence Lange --- lib/AP.php | 5 +++++ lib/Db/StreamRequest.php | 2 +- lib/Db/StreamRequestBuilder.php | 9 +++++++-- lib/Model/ActivityPub/Stream.php | 3 +++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/AP.php b/lib/AP.php index 5db1eabc..80859eae 100644 --- a/lib/AP.php +++ b/lib/AP.php @@ -73,6 +73,7 @@ use OCA\Social\Model\ActivityPub\Object\Image; use OCA\Social\Model\ActivityPub\Object\Note; use OCA\Social\Model\ActivityPub\Internal\SocialAppNotification; use OCA\Social\Model\ActivityPub\Object\Tombstone; +use OCA\Social\Model\ActivityPub\Stream; use OCA\Social\Service\ConfigService; use OCP\AppFramework\QueryException; @@ -317,6 +318,10 @@ class AP { $item = new SocialAppNotification(); break; + case Stream::TYPE: + $item = new Stream(); + break; + case Person::TYPE: $item = new Person(); break; diff --git a/lib/Db/StreamRequest.php b/lib/Db/StreamRequest.php index 1555c19a..592a3389 100644 --- a/lib/Db/StreamRequest.php +++ b/lib/Db/StreamRequest.php @@ -473,7 +473,7 @@ class StreamRequest extends StreamRequestBuilder { $streams = []; $cursor = $qb->execute(); while ($data = $cursor->fetch()) { - $streams[] = $this->parseStreamSelectSql($data); + $streams[] = $this->parseStreamSelectSql($data, Note::TYPE); } $cursor->closeCursor(); diff --git a/lib/Db/StreamRequestBuilder.php b/lib/Db/StreamRequestBuilder.php index f4cbbe61..bfeeff68 100644 --- a/lib/Db/StreamRequestBuilder.php +++ b/lib/Db/StreamRequestBuilder.php @@ -32,6 +32,7 @@ namespace OCA\Social\Db; use daita\MySmallPhpTools\Traits\TArrayTools; use Doctrine\DBAL\Query\QueryBuilder; +use OCA\Social\AP; use OCA\Social\Exceptions\InvalidResourceException; use OCA\Social\Model\ActivityPub\ACore; use OCA\Social\Model\ActivityPub\Actor\Person; @@ -385,11 +386,15 @@ class StreamRequestBuilder extends CoreRequestBuilder { /** * @param array $data + * @param string $as * * @return Stream + * @throws ItemUnknownException + * @throws SocialAppConfigException */ - protected function parseStreamSelectSql($data): Stream { - $item = new Stream(); + protected function parseStreamSelectSql(array $data, string $as = Stream::TYPE): Stream { + /** @var Stream $item */ + $item = AP::$activityPub->getItemFromType($as); $item->importFromDatabase($data); $instances = json_decode($this->get('instances', $data, '[]'), true); diff --git a/lib/Model/ActivityPub/Stream.php b/lib/Model/ActivityPub/Stream.php index 8c40d0bf..d961f78c 100644 --- a/lib/Model/ActivityPub/Stream.php +++ b/lib/Model/ActivityPub/Stream.php @@ -41,6 +41,9 @@ use OCA\Social\Model\StreamAction; class Stream extends ACore implements JsonSerializable { + const TYPE = 'Stream'; + + const TYPE_PUBLIC = 'public'; const TYPE_UNLISTED = 'unlisted'; const TYPE_FOLLOWERS = 'followers'; From 8b9845787b5f16fa154723a2a5c6ec4ce4c2a073 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 29 May 2019 16:47:29 -0100 Subject: [PATCH 2/3] do not import SocialAppNotification from outside. Signed-off-by: Maxence Lange --- lib/Model/ActivityPub/Internal/SocialAppNotification.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Model/ActivityPub/Internal/SocialAppNotification.php b/lib/Model/ActivityPub/Internal/SocialAppNotification.php index c76965d1..d0ebcae8 100644 --- a/lib/Model/ActivityPub/Internal/SocialAppNotification.php +++ b/lib/Model/ActivityPub/Internal/SocialAppNotification.php @@ -59,7 +59,7 @@ class SocialAppNotification extends Stream implements JsonSerializable { * @throws Exception */ public function import(array $data) { - parent::import($data); + //parent::import($data); } From a5d06e253a041254464050095bfc0fc597e2f672 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 29 May 2019 16:56:09 -0100 Subject: [PATCH 3/3] imports Signed-off-by: Maxence Lange --- lib/Db/StreamRequestBuilder.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/Db/StreamRequestBuilder.php b/lib/Db/StreamRequestBuilder.php index bfeeff68..1b5b68c6 100644 --- a/lib/Db/StreamRequestBuilder.php +++ b/lib/Db/StreamRequestBuilder.php @@ -34,6 +34,8 @@ use daita\MySmallPhpTools\Traits\TArrayTools; use Doctrine\DBAL\Query\QueryBuilder; use OCA\Social\AP; use OCA\Social\Exceptions\InvalidResourceException; +use OCA\Social\Exceptions\ItemUnknownException; +use OCA\Social\Exceptions\SocialAppConfigException; use OCA\Social\Model\ActivityPub\ACore; use OCA\Social\Model\ActivityPub\Actor\Person; use OCA\Social\Model\ActivityPub\Stream;