kopia lustrzana https://github.com/nextcloud/social
fixing some field when generating the Announce in DB
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>pull/374/head
rodzic
4c21a1fed9
commit
2af702bbb5
|
@ -37,6 +37,7 @@ use OCA\Social\Exceptions\SocialAppConfigException;
|
|||
use OCA\Social\Service\ActivityService;
|
||||
use OCA\Social\Service\MiscService;
|
||||
use OCA\Social\Service\RequestQueueService;
|
||||
use OCA\Social\Service\StreamQueueService;
|
||||
use OCP\AppFramework\QueryException;
|
||||
|
||||
|
||||
|
@ -52,7 +53,10 @@ class Queue extends TimedJob {
|
|||
private $activityService;
|
||||
|
||||
/** @var RequestQueueService */
|
||||
private $queueService;
|
||||
private $requestQueueService;
|
||||
|
||||
/** @var StreamQueueService */
|
||||
private $streamQueueService;
|
||||
|
||||
/** @var MiscService */
|
||||
private $miscService;
|
||||
|
@ -75,18 +79,20 @@ class Queue extends TimedJob {
|
|||
$app = new Application();
|
||||
$c = $app->getContainer();
|
||||
|
||||
$this->queueService = $c->query(RequestQueueService::class);
|
||||
$this->requestQueueService = $c->query(RequestQueueService::class);
|
||||
$this->streamQueueService = $c->query(StreamQueueService::class);
|
||||
$this->activityService = $c->query(ActivityService::class);
|
||||
$this->miscService = $c->query(MiscService::class);
|
||||
|
||||
$this->manageQueue();
|
||||
$this->manageRequestQueue();
|
||||
$this->manageStreamQueue();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
private function manageQueue() {
|
||||
$requests = $this->queueService->getRequestStandby();
|
||||
private function manageRequestQueue() {
|
||||
$requests = $this->requestQueueService->getRequestStandby();
|
||||
$this->activityService->manageInit();
|
||||
|
||||
foreach ($requests as $request) {
|
||||
|
@ -99,5 +105,15 @@ class Queue extends TimedJob {
|
|||
|
||||
}
|
||||
|
||||
|
||||
private function manageStreamQueue() {
|
||||
$items = $this->streamQueueService->getRequestStandby($total);
|
||||
|
||||
foreach ($items as $item) {
|
||||
$this->streamQueueService->manageStreamQueue($item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -64,6 +64,8 @@ class Announce extends Stream implements JsonSerializable {
|
|||
*/
|
||||
public function import(array $data) {
|
||||
parent::import($data);
|
||||
|
||||
$this->setAttributedTo($this->getActorId());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ use OCA\Social\Db\NotesRequest;
|
|||
use OCA\Social\Db\StreamQueueRequest;
|
||||
use OCA\Social\Exceptions\InvalidOriginException;
|
||||
use OCA\Social\Exceptions\InvalidResourceException;
|
||||
use OCA\Social\Exceptions\ItemNotFoundException;
|
||||
use OCA\Social\Exceptions\ItemUnknownException;
|
||||
use OCA\Social\Exceptions\NoteNotFoundException;
|
||||
use OCA\Social\Exceptions\QueueStatusException;
|
||||
|
@ -135,7 +134,6 @@ class StreamQueueService {
|
|||
* @param string $token
|
||||
*/
|
||||
public function cacheStreamByToken(string $token) {
|
||||
$this->miscService->log('Cache: ' . $token);
|
||||
$items = $this->streamQueueRequest->getFromToken($token);
|
||||
|
||||
foreach ($items as $item) {
|
||||
|
@ -161,51 +159,148 @@ class StreamQueueService {
|
|||
break;
|
||||
|
||||
default:
|
||||
$this->deleteRequest($queue);
|
||||
$this->deleteCache($queue);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param StreamQueue $queue
|
||||
*/
|
||||
private function manageStreamQueueCache(StreamQueue $queue) {
|
||||
try {
|
||||
$stream = $this->notesRequest->getNoteById($queue->getStreamId());
|
||||
} catch (NoteNotFoundException $e) {
|
||||
$this->deleteRequest($queue);
|
||||
$this->deleteCache($queue);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$stream->gotCache()) {
|
||||
$this->deleteRequest($queue);
|
||||
$this->deleteCache($queue);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->manageStreamCache($stream);
|
||||
try {
|
||||
$this->manageStreamCache($stream);
|
||||
} catch (SocialAppConfigException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Stream $stream
|
||||
*
|
||||
* @throws SocialAppConfigException
|
||||
*/
|
||||
private function manageStreamCache(Stream $stream) {
|
||||
$cache = $stream->getCache();
|
||||
|
||||
foreach ($cache->getItems() as $item) {
|
||||
$this->cacheItem($item);
|
||||
$cache->updateItem($item);
|
||||
|
||||
// TODO: PHP7.2 (NC16) : multiple exception per catch
|
||||
|
||||
try {
|
||||
$this->cacheItem($item);
|
||||
$item->setStatus(StreamQueue::STATUS_SUCCESS);
|
||||
$this->miscService->log('cached item: ' . json_encode($item));
|
||||
$cache->updateItem($item);
|
||||
} catch (NoteNotFoundException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
} catch (InvalidOriginException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
} catch (RequestContentException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
} catch (RequestNetworkException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
$item->incrementError();
|
||||
} catch (RequestResultNotJsonException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
$item->incrementError();
|
||||
} catch (RequestResultSizeException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
} catch (RequestServerException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
$item->incrementError();
|
||||
} catch (MalformedArrayException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
} catch (ItemUnknownException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
} catch (RedundancyLimitException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
} catch (InvalidResourceException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $cache->removeItem($item->getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
$this->updateCache($stream, $cache);
|
||||
// $this->updateCache($stream, $cache);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param CacheItem $item
|
||||
*
|
||||
* @throws InvalidOriginException
|
||||
* @throws InvalidResourceException
|
||||
* @throws ItemUnknownException
|
||||
* @throws MalformedArrayException
|
||||
* @throws NoteNotFoundException
|
||||
* @throws RedundancyLimitException
|
||||
* @throws RequestContentException
|
||||
* @throws RequestNetworkException
|
||||
* @throws RequestResultNotJsonException
|
||||
* @throws RequestResultSizeException
|
||||
* @throws RequestServerException
|
||||
* @throws SocialAppConfigException
|
||||
*/
|
||||
private function cacheItem(CacheItem &$item) {
|
||||
|
||||
try {
|
||||
$object = $this->notesRequest->getNoteById($item->getUrl());
|
||||
} catch (NoteNotFoundException $e) {
|
||||
$data = $this->curlService->retrieveObject($item->getUrl());
|
||||
$object = AP::$activityPub->getItemFromData($data);
|
||||
|
||||
|
@ -222,71 +317,10 @@ class StreamQueueService {
|
|||
|
||||
$interface = AP::$activityPub->getInterfaceForItem($object);
|
||||
$interface->save($object);
|
||||
|
||||
$note = $this->notesRequest->getNoteById($object->getId());
|
||||
$item->setContent(json_encode($note, JSON_UNESCAPED_SLASHES));
|
||||
|
||||
//$this->endRequest($queue, true);
|
||||
|
||||
} catch (NoteNotFoundException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->deleteRequest($queue);
|
||||
} catch (InvalidOriginException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->deleteRequest($queue);
|
||||
} catch (RequestContentException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->deleteRequest($queue);
|
||||
} catch (RequestNetworkException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->endRequest($queue, false);
|
||||
} catch (RequestResultNotJsonException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->endRequest($queue, false);
|
||||
} catch (RequestResultSizeException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->deleteRequest($queue);
|
||||
} catch (RequestServerException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->endRequest($queue, false);
|
||||
} catch (MalformedArrayException $e) {
|
||||
//$this->deleteRequest($item);
|
||||
} catch (ItemUnknownException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->deleteRequest($item);
|
||||
} catch (RedundancyLimitException $e) {
|
||||
$this->miscService->log(
|
||||
'Error caching stream: ' . json_encode($item) . ' ' . get_class($e) . ' '
|
||||
. $e->getMessage(), 1
|
||||
);
|
||||
// $this->deleteRequest($item);
|
||||
} catch (SocialAppConfigException $e) {
|
||||
}
|
||||
|
||||
$note = $this->notesRequest->getNoteById($object->getId());
|
||||
$item->setContent(json_encode($note, JSON_UNESCAPED_SLASHES));
|
||||
}
|
||||
|
||||
|
||||
|
@ -304,7 +338,7 @@ class StreamQueueService {
|
|||
*
|
||||
* @throws QueueStatusException
|
||||
*/
|
||||
public function initRequest(StreamQueue $queue) {
|
||||
private function initCache(StreamQueue $queue) {
|
||||
$this->streamQueueRequest->setAsRunning($queue);
|
||||
}
|
||||
|
||||
|
@ -313,7 +347,7 @@ class StreamQueueService {
|
|||
* @param StreamQueue $queue
|
||||
* @param bool $success
|
||||
*/
|
||||
public function endRequest(StreamQueue $queue, bool $success) {
|
||||
private function endCache(StreamQueue $queue, bool $success) {
|
||||
try {
|
||||
if ($success === true) {
|
||||
$this->streamQueueRequest->setAsSuccess($queue);
|
||||
|
@ -328,7 +362,7 @@ class StreamQueueService {
|
|||
/**
|
||||
* @param StreamQueue $queue
|
||||
*/
|
||||
public function deleteRequest(StreamQueue $queue) {
|
||||
private function deleteCache(StreamQueue $queue) {
|
||||
// try {
|
||||
// $stream = $this->notesRequest->getNoteById($queue->getStreamId());
|
||||
// $cache = $stream->getCache();
|
||||
|
|
Ładowanie…
Reference in New Issue