fkooman\RemoteStorage\RemoteStorageService::getFolder PHP Method

getFolder() public method

public getFolder ( Path $path, fkooman\Http\Request $request, fkooman\Rest\Plugin\Authentication\Bearer\TokenInfo $tokenInfo )
$path Path
$request fkooman\Http\Request
$tokenInfo fkooman\Rest\Plugin\Authentication\Bearer\TokenInfo
    public function getFolder(Path $path, Request $request, TokenInfo $tokenInfo)
    {
        if ($path->getUserId() !== $tokenInfo->getUserId()) {
            throw new ForbiddenException('path does not match authorized subject');
        }
        if (!$this->hasReadScope($tokenInfo->getScope(), $path->getModuleName())) {
            throw new ForbiddenException('path does not match authorized scope');
        }
        $folderVersion = $this->remoteStorage->getVersion($path);
        if (null === $folderVersion) {
            // folder does not exist, so we just invent this
            // ETag that will be the same for all empty folders
            $folderVersion = 'e:404';
        }
        $requestedVersion = $this->stripQuotes($request->getHeader('If-None-Match'));
        if (null !== $requestedVersion) {
            if (in_array($folderVersion, $requestedVersion)) {
                //return new RemoteStorageResponse($request, 304, $folderVersion);
                $response = new Response(304, 'application/ld+json');
                $response->setHeader('ETag', '"' . $folderVersion . '"');
                return $response;
            }
        }
        $rsr = new Response(200, 'application/ld+json');
        $rsr->setHeader('ETag', '"' . $folderVersion . '"');
        if ('GET' === $request->getMethod()) {
            $rsr->setBody($this->remoteStorage->getFolder($path, $this->stripQuotes($request->getHeader('If-None-Match'))));
        }
        return $rsr;
    }