/** * @inheritdoc */ public function execute(Request $request, DataSourceInterface $resource, $identifier) { if (!$resource->delete(intval($identifier))) { throw new NotFoundHttpException(); } return ActionResult::simple(200, ['status' => 'success']); }
/** * @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)); }
/** * @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); }
/** * @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; }
/** * @inheritdoc */ public function execute(Request $request, DataSourceInterface $resource) { return ActionResult::instance(201, $resource->create($request->attributes->get(AuthorizationListener::API_REQUEST_PAYLOAD))); }
/** * @inheritdoc */ public function execute(Request $request, DataSourceInterface $resource) { return ActionResult::simple(200, ['count' => $resource->count()]); }
/** * @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'))); }