Пример #1
0
 /**
  * @inheritdoc
  */
 public function execute(Request $request, DataSourceInterface $resource, $identifier)
 {
     if (!$resource->delete(intval($identifier))) {
         throw new NotFoundHttpException();
     }
     return ActionResult::simple(200, ['status' => 'success']);
 }
Пример #2
0
 /**
  * @inheritdoc
  */
 public function execute(Request $request, DataSourceInterface $resource, $identifier)
 {
     $instance = $resource->update($identifier, $request->attributes->get(AuthorizationListener::API_REQUEST_PAYLOAD));
     if (is_null($instance)) {
         throw new NotFoundHttpException();
     }
     return ActionResult::instance(200, $resource->read($identifier));
 }
Пример #3
0
 /**
  * @inheritdoc
  */
 public function execute(Request $request, DataSourceInterface $resource, $identifier)
 {
     $instance = $resource->read($identifier);
     if (is_null($instance)) {
         throw new NotFoundHttpException();
     }
     return ActionResult::instance(200, $instance);
 }
Пример #4
0
 /**
  * @param ActionResult $result
  * @param string       $resource
  * @param string       $action
  * @param string[]     $roles
  * @return array
  */
 public function filterResponse(ActionResult $result, $resource, $action, $roles)
 {
     $serializeAndFilter = function ($item) use($resource, $action, $roles) {
         $data = $this->serializer->deserialize($this->serializer->serialize($item, 'json', SerializationContext::create()->enableMaxDepthChecks()), 'array', 'json');
         $fields = array_filter(array_keys($data), function ($field) use($resource, $action, $roles) {
             return $this->permissions->isReadable($resource . ':' . $field, $action, $roles);
         });
         return array_intersect_key($data, array_flip($fields));
     };
     switch ($result->getType()) {
         case ActionResult::SIMPLE:
         case ActionResult::INSTANCE:
             $data = $serializeAndFilter($result->getResult());
             break;
         case ActionResult::COLLECTION:
             $data = array_map($serializeAndFilter, $result->getResult());
             break;
         default:
             throw new \InvalidArgumentException('Unsupported ActionResult type ' . $result->getType());
     }
     return $data;
 }
Пример #5
0
 /**
  * @inheritdoc
  */
 public function execute(Request $request, DataSourceInterface $resource)
 {
     return ActionResult::instance(201, $resource->create($request->attributes->get(AuthorizationListener::API_REQUEST_PAYLOAD)));
 }
Пример #6
0
 /**
  * @inheritdoc
  */
 public function execute(Request $request, DataSourceInterface $resource)
 {
     return ActionResult::simple(200, ['count' => $resource->count()]);
 }
Пример #7
0
 /**
  * @inheritdoc
  */
 public function execute(Request $request, DataSourceInterface $resource)
 {
     return ActionResult::collection(200, $resource->index($request->query->get('limit'), $request->query->get('offset'), $request->query->get('orderBy'), $request->query->get('order')));
 }