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; | ||||
| 		} | ||||
| 
 | ||||
| 		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) { | ||||
| 
 | ||||
| 			// 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) { | ||||
| 		} | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
|  | @ -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
	
	 Maxence Lange
						Maxence Lange