/** * @param string $status * @param string $title * @param string $description * @param string $type * @param string $priority * * @return Document */ public function search($status = null, $title = null, $description = null, $type = null, $priority = null) { $results = $this->service->search($status, $title, $description, $type, $priority); $collection = (new Collection($results, $this->serializer))->with(['author', 'comments']); $document = new Document($collection); $document->addMeta('total', count($results)); return $document; }
/** @return void */ protected function generateMetaData(ResponseInterface $response, Document $document) { if (is_null($this->metaDataGenerator)) { return; } $metaData = call_user_func($this->metaDataGenerator, $response); foreach ($metaData as $key => $value) { $document->addMeta($key, $value); } }
/** * Convert's the passed DTOs into a JSON-API document representation. * * @param \AppserverIo\Collections\CollectionInterface $applications The application DTOs to convert * * @return Tobscure\JsonApi\Document The JSON-API document representation */ protected function toApplicationOverviewData(CollectionInterface $applications) { // create a new collection of naming directories $collection = new Collection($applications->toArray(), new ApplicationSerializer()); // create a new JSON-API document with that collection as the data $document = new Document($collection); // add metadata and links $document->addMeta('total', count($applications)); // return the JSON-API representation return $document; }
/** * Convert's the passed virtual host DTOs into a JSON-API document representation. * * @param \AppserverIo\Collections\CollectionInterface $virtualHosts The virtual host DTOs to convert * * @return Tobscure\JsonApi\Document The JSON-API document representation */ protected function toVirtualHostOverviewData(CollectionInterface $virtualHosts) { // create a new collection of naming directories $collection = new Collection($virtualHosts->toArray(), new VirtualHostSerializer()); // create a new JSON-API document with that collection as the data $document = new Document($collection); // add metadata and links $document->addMeta('total', count($virtualHosts)); // return the stdClass representation of the naming directories return $document; }
/** * Convert's the passed persistence unit DTOs into a JSON-API document representation. * * @param \AppserverIo\Collections\CollectionInterface $persistenceUnits The persistence unit DTOs to convert * * @return Tobscure\JsonApi\Document The JSON-API document representation */ public function toPersistenceUnitOverviewData(CollectionInterface $persistenceUnits) { // create a new collection of naming directories $collection = new Collection($persistenceUnits, new PersistenceUnitSerializer()); // create a new JSON-API document with that collection as the data $document = new Document($collection); // add metadata and links $document->addMeta('total', count($persistenceUnits)); // return the stdClass representation of the naming directories return $document; }
public function processAction($args) { $document = new Document(); $element = NULL; $meta = array(); try { switch ($args['action']) { case "init_repository": $this->initRepository($args['psw']); $session = $this->getSession(); $element = new Resource($session, new SessionSerializer()); break; case "log_in": $this->logIn($args['psw']); $session = $this->getSession(); $element = new Resource($session, new SessionSerializer()); break; case "log_out": $this->logOut(); $session = $this->getSession(); $element = new Resource($session, new SessionSerializer()); break; case "get_session": $session = $this->getSession(); $element = new Resource($session, new SessionSerializer()); break; case "get_post": $postId = isset($args['id']) ? $args['id'] : NULL; $post = $this->getPost($postId); $element = (new Resource($post, new PostSerializer()))->fields(['tags']); break; case "get_posts": $parameters = new Parameters($args); $sort = $parameters->getSort(); if ($sort == NULL) { $sort = array(); } $limit = $parameters->getLimit(); if ($limit == NULL) { $limit = -1; } $offset = $parameters->getOffset(); if ($offset == NULL) { $offset = 0; } $posts = $this->getPosts($sort, $limit, $offset); $element = (new Collection($posts, new PostSerializer()))->fields(['tags']); break; case "publish_post": $id = $this->publishPost($args['title'], $args['body'], $args['tags'], $args['draft'], $args['token']); $element = new Resource(new stdClass(), new ResultSerializer()); $document->addMeta("id", $id); break; case "update_post": $id = $this->updatePost($args['id'], $args['title'], $args['body'], $args['tags'], $args['draft'], $args['token']); $element = new Resource(new stdClass(), new ResultSerializer()); $document->addMeta("id", $id); break; case "delete_post": $this->deletePost($args['id'], $args['token']); $element = new Resource(new stdClass(), new ResultSerializer()); break; default: throw new Exception("unknown action " . $args['action'], self::EBL_ERROR_BADREQUEST); break; } } catch (Exception $e) { http_response_code($e->getCode()); $document->setErrors(array(array("message" => $e->getMessage()))); } if ($element != NULL) { $document->setData($element); } echo json_encode($document->toArray()); }