protected function action()
 {
     $headers = ['Content-Type' => $this->resourceDO->getMimeType()];
     $filePath = $this->resourceDO->getFilePath();
     $fileExists = is_file($filePath);
     $recreate = PrepareResourceMiddlewareAbstract::getParamFromRequest(static::RECREATE_COMMAND, $this->request);
     $uri = PrepareResourceMiddlewareAbstract::getParamFromRequest(static::URI_COMMAND, $this->request);
     $recreate = $fileExists && $recreate;
     $this->resourceDO->setNew(!$fileExists);
     if (!$fileExists || $recreate) {
         $this->resourceDO->setRecreate($recreate);
         $upload = $this->upload();
         // Upload must be with high priority
         if ($upload) {
             /** @see \Zend\Diactoros\Response::$phrases */
             return new FileUploadedResponse($upload, 201, $headers);
         } elseif ($uri) {
             $upload = $this->download($this->resourceDO, $uri);
             /** @see \Zend\Diactoros\Response::$phrases */
             return new FileUploadedResponse($upload, 201, $headers);
         } else {
             $body = $this->generate($this->resourceDO);
             /** @see \Zend\Diactoros\Response::$phrases */
             return new FileContentResponse($body, 201, $headers);
         }
     }
     /** @see \Zend\Diactoros\Response::$phrases */
     return new EmptyResponse(304, $headers);
 }
 /**
  * @return int
  */
 protected function getCursor()
 {
     $allowCursor = $this->config->get('staticus.search.allow_cursor_for_users', false);
     $roles = $this->user->getRoles();
     if ($allowCursor || in_array(Roles::ADMIN, $roles, true)) {
         $cursor = (int) PrepareResourceMiddlewareAbstract::getParamFromRequest('cursor', $this->request);
         return $cursor;
     }
     return self::DEFAULT_CURSOR;
 }
 protected function action()
 {
     $headers = ['Content-Type' => $this->resourceDO->getMimeType()];
     $destroy = PrepareResourceMiddlewareAbstract::getParamFromRequest('destroy', $this->request);
     if ($destroy) {
         $command = new DestroyResourceCommand($this->resourceDO, $this->filesystem);
         $command();
     } else {
         $command = new DeleteSafetyResourceCommand($this->resourceDO, $this->filesystem);
         $command();
     }
     /** @see \Zend\Diactoros\Response::$phrases */
     return new EmptyResponse(204, $headers);
 }
 /**
  * @param ServerRequestInterface $request
  * @return string
  */
 protected function getAction(ServerRequestInterface $request)
 {
     if (PrepareResourceMiddlewareAbstract::getParamFromRequest(Actions::ACTION_SEARCH, $request)) {
         return Actions::ACTION_SEARCH;
     }
     if (PrepareResourceMiddlewareAbstract::getParamFromRequest(Actions::ACTION_LIST, $request)) {
         return Actions::ACTION_LIST;
     }
     $method = $request->getMethod();
     switch ($method) {
         case 'GET':
             $action = Actions::ACTION_READ;
             break;
         case 'POST':
             $action = Actions::ACTION_WRITE;
             break;
         case 'DELETE':
             $action = Actions::ACTION_DELETE;
             break;
         default:
             throw new WrongRequestException('Unknown access control action');
     }
     return $action;
 }
 public function __construct(ResourceDO $resourceDO, ConfigInterface $config)
 {
     parent::__construct($resourceDO, $config);
 }