Inject all dependnencies and increase cache timeout

Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/33494/head
Julius Härtl 4 years ago
parent 80f6a5834a
commit 1ab66988bc
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
  1. 3
      core/Controller/ReferenceController.php
  2. 2
      lib/private/Collaboration/Reference/File/FileReferenceProvider.php
  3. 14
      lib/private/Collaboration/Reference/LinkReferenceProvider.php
  4. 2
      lib/private/Collaboration/Reference/ReferenceManager.php

@ -24,6 +24,7 @@ declare(strict_types=1);
namespace OC\Core\Controller;
use OCP\AppFramework\Http\Response;
use OCP\Collaboration\Reference\IReferenceManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
@ -48,7 +49,7 @@ class ReferenceController extends Controller {
* @PublicPage
* @NoCSRFRequired
*/
public function preview(string $referenceId) {
public function preview(string $referenceId): Response {
$reference = $this->referenceManager->getReferenceByCacheKey($referenceId);
if ($reference === null) {
return new DataResponse('', Http::STATUS_NOT_FOUND);

@ -103,7 +103,7 @@ class FileReferenceProvider implements IReferenceProvider {
/**
* @throws NotFoundException
*/
private function fetchReference(Reference $reference) {
private function fetchReference(Reference $reference): void {
if ($this->userId === null) {
throw new NotFoundException();
}

@ -35,7 +35,9 @@ use OCP\Collaboration\Reference\IReferenceProvider;
use OCP\Files\AppData\IAppDataFactory;
use OCP\Files\NotFoundException;
use OCP\Http\Client\IClientService;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserSession;
use Psr\Log\LoggerInterface;
class LinkReferenceProvider implements IReferenceProvider {
@ -56,14 +58,18 @@ class LinkReferenceProvider implements IReferenceProvider {
private IAppDataFactory $appDataFactory;
private IURLGenerator $urlGenerator;
private Limiter $limiter;
private IUserSession $userSession;
private IRequest $request;
public function __construct(IClientService $clientService, LoggerInterface $logger, SystemConfig $systemConfig, IAppDataFactory $appDataFactory, IURLGenerator $urlGenerator, Limiter $limiter) {
public function __construct(IClientService $clientService, LoggerInterface $logger, SystemConfig $systemConfig, IAppDataFactory $appDataFactory, IURLGenerator $urlGenerator, Limiter $limiter, IUserSession $userSession, IRequest $request) {
$this->clientService = $clientService;
$this->logger = $logger;
$this->systemConfig = $systemConfig;
$this->appDataFactory = $appDataFactory;
$this->urlGenerator = $urlGenerator;
$this->limiter = $limiter;
$this->userSession = $userSession;
$this->request = $request;
}
public function matchReference(string $referenceText): bool {
@ -84,13 +90,13 @@ class LinkReferenceProvider implements IReferenceProvider {
return null;
}
private function fetchReference(Reference $reference) {
private function fetchReference(Reference $reference): void {
try {
$user = \OC::$server->getUserSession()->getUser();
$user = $this->userSession->getUser();
if ($user) {
$this->limiter->registerUserRequest('opengraph', 10, 120, $user);
} else {
$this->limiter->registerAnonRequest('opengraph', 10, 120, \OC::$server->getRequest()->getRemoteAddress());
$this->limiter->registerAnonRequest('opengraph', 10, 120, $this->request->getRemoteAddress());
}
} catch (RateLimitExceededException $e) {
return;

@ -37,7 +37,7 @@ use Psr\Log\LoggerInterface;
use Throwable;
class ReferenceManager implements IReferenceManager {
public const CACHE_TTL = 60;
public const CACHE_TTL = 3600;
/** @var IReferenceProvider[]|null */
private ?array $providers = null;

Loading…
Cancel
Save