mapper->getByToken($name); // Expired if ($direct->getExpiration() < $this->timeFactory->getTime()) { throw new NotFound(); } return new DirectFile($direct, $this->rootFolder, $this->eventDispatcher); } catch (DoesNotExistException $e) { // Since the token space is so huge only throttle on non-existing token $this->throttler->registerAttempt('directlink', $this->request->getRemoteAddress()); $this->throttler->sleepDelay($this->request->getRemoteAddress(), 'directlink'); throw new NotFound(); } } public function getChildren() { throw new MethodNotAllowed('Listing members of this collection is disabled'); } public function childExists($name): bool { return false; } public function delete() { throw new Forbidden(); } public function getName(): string { return 'direct'; } public function setName($name) { throw new Forbidden(); } public function getLastModified(): int { return 0; } }