public function testToArrayIncludesTheResourcesRepresentation() { $resource = new Resource('post', 1); $document = new Document(); $document->setData($resource); $this->assertEquals(['data' => $resource->toArray()], $document->toArray()); }
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()); }