Skip to content

Commit

Permalink
Added to JsonApiResponseTrait fields support in links for collections
Browse files Browse the repository at this point in the history
  • Loading branch information
nilportugues committed Nov 14, 2015
1 parent b3b53df commit 9507001
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 41 deletions.
5 changes: 5 additions & 0 deletions .idea/scopes/scope_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/template/template_variable_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,13 @@ protected function resourceNotFoundResponse($errorTitle, $errorMessage, $parentU
'status' => 404,
'code' => 'not_found',
'title' => $errorTitle,
'detail' => $errorMessage,
'detail' => $errorMessage
],
'links' => [
'parent' => [
'href' => $parentUrl,
],
],
'href' => $parentUrl
]
]
]);

return (new HttpFoundationFactory())->createResponse($this->addHeaders(new ResourceNotFoundResponse($json)));
Expand Down Expand Up @@ -119,8 +119,8 @@ protected function resourcePostErrorResponse($errorTitle, $errorMessage)
'status' => 409,
'code' => 'Conflict',
'title' => $errorTitle,
'detail' => $errorMessage,
],
'detail' => $errorMessage
]
]);

return (new HttpFoundationFactory())->createResponse($this->addHeaders(new ResourcePostErrorResponse($json)));
Expand All @@ -133,6 +133,8 @@ protected function resourcePostErrorResponse($errorTitle, $errorMessage)
*/
protected function resourceProcessingResponse($json)
{


return (new HttpFoundationFactory())->createResponse($this->addHeaders(new ResourceProcessingResponse($json)));
}

Expand Down Expand Up @@ -167,9 +169,9 @@ protected function response($json)
*/
protected function collectionResponse($classMethod, Serializer $serializer, Request $request, $value, $totalAmount)
{
$controllerRoute = str_replace('::', '@', '\\'.$classMethod);
$controllerRoute = str_replace('::', '@', "\\" . $classMethod);

$pageNumber = $request->getPageNumber();
$pageNumber = $request->getPageNumber();
$resultsPerPage = $request->getPageSize();

$serializer->getTransformer()->setSelfUrl(
Expand All @@ -180,15 +182,16 @@ protected function collectionResponse($classMethod, Serializer $serializer, Requ
'page' => array_filter(
[
'number' => $pageNumber,
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'cursor' => $request->getPageCursor(),
'offset' => $request->getPageOffset(),
]
),
'fields' => $request->getQueryParam('fields'),
'filter' => $request->getQueryParam('filter'),
'sort' => $request->getQueryParam('sort'),
'include' => $request->getQueryParam('include'),
'include' => $request->getQueryParam('include')
]
)
)
Expand All @@ -203,15 +206,16 @@ protected function collectionResponse($classMethod, Serializer $serializer, Requ
'page' => array_filter(
[
'number' => $pageNumber - 1,
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'cursor' => $request->getPageCursor(),
'offset' => $request->getPageOffset(),
]
),
'fields' => $request->getQueryParam('fields'),
'filter' => $request->getQueryParam('filter'),
'sort' => $request->getQueryParam('sort'),
'include' => $request->getQueryParam('include'),
'include' => $request->getQueryParam('include')
]
)
)
Expand All @@ -227,15 +231,16 @@ protected function collectionResponse($classMethod, Serializer $serializer, Requ
'page' => array_filter(
[
'number' => $pageNumber + 1,
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'cursor' => $request->getPageCursor(),
'offset' => $request->getPageOffset(),
]
),
'fields' => $request->getQueryParam('fields'),
'filter' => $request->getQueryParam('filter'),
'sort' => $request->getQueryParam('sort'),
'include' => $request->getQueryParam('include'),
'include' => $request->getQueryParam('include')
]
)
)
Expand All @@ -250,15 +255,16 @@ protected function collectionResponse($classMethod, Serializer $serializer, Requ
'page' => array_filter(
[
'number' => 1,
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'cursor' => $request->getPageCursor(),
'offset' => $request->getPageOffset(),
]
),
'fields' => $request->getQueryParam('fields'),
'filter' => $request->getQueryParam('filter'),
'sort' => $request->getQueryParam('sort'),
'include' => $request->getQueryParam('include'),
'include' => $request->getQueryParam('include')
]
)
)
Expand All @@ -270,25 +276,26 @@ protected function collectionResponse($classMethod, Serializer $serializer, Requ
$controllerRoute,
array_filter(
[
'page' => array_filter(
'page' => array_filter(
[
'number' => ceil($totalAmount / $resultsPerPage),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'cursor' => $request->getPageCursor(),
'offset' => $request->getPageOffset(),
]
),
'fields' => $request->getQueryParam('fields'),
'filter' => $request->getQueryParam('filter'),
'sort' => $request->getQueryParam('sort'),
'include' => $request->getQueryParam('include'),
'include' => $request->getQueryParam('include')
]
)
)
)
);

$json = $serializer->serialize($value);
$json = $serializer->serialize($value, $request);

return (new HttpFoundationFactory())->createResponse($this->addHeaders(new Response($json)));
}
Expand All @@ -298,20 +305,20 @@ protected function collectionResponse($classMethod, Serializer $serializer, Requ
* @param string $errorMessage
* @param string $classMethod
* @param Request $request
* @param int $totalAmount
* @param int $totalAmount
*
* @return \Symfony\Component\HttpFoundation\Response
*/
private function collectionNotFoundResponse($errorTitle, $errorMessage, $classMethod, Request $request, $totalAmount)
{
$controllerRoute = str_replace('::', '@', '\\'.$classMethod);
$controllerRoute = str_replace('::', '@', "\\" . $classMethod);

$json = json_encode([
'errors' => [
'status' => 404,
'code' => 'not_found',
'title' => $errorTitle,
'detail' => $errorMessage,
'detail' => $errorMessage
],
'links' => [
'first' => [
Expand All @@ -322,43 +329,45 @@ private function collectionNotFoundResponse($errorTitle, $errorMessage, $classMe
'page' => array_filter(
[
'number' => 1,
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'cursor' => $request->getPageCursor(),
'offset' => $request->getPageOffset(),
]
),
'fields' => $request->getQueryParam('fields'),
'filter' => $request->getQueryParam('filter'),
'sort' => $request->getQueryParam('sort'),
'include' => $request->getQueryParam('include'),
'include' => $request->getQueryParam('include')
]
)
),
)
],
'last' => [
'href' => urldecode(
'href' => urldecode(
action(
$controllerRoute,
array_filter(
[
'page' => array_filter(
'page' => array_filter(
[
'number' => ceil($totalAmount / $request->getPageSize()),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'size' => $request->getPageSize(),
'limit' => $request->getPageLimit(),
'cursor' => $request->getPageCursor(),
'offset' => $request->getPageOffset(),
]
),
'fields' => $request->getQueryParam('fields'),
'filter' => $request->getQueryParam('filter'),
'sort' => $request->getQueryParam('sort'),
'include' => $request->getQueryParam('include'),
'include' => $request->getQueryParam('include')
]
)
)
),
],
],
)
]
]
]);

return (new HttpFoundationFactory())->createResponse($this->addHeaders(new ResourceNotFoundResponse($json)));
Expand All @@ -371,6 +380,9 @@ private function collectionNotFoundResponse($errorTitle, $errorMessage, $classMe
*/
protected function unsupportedActionResponse($json)
{
return (new HttpFoundationFactory())->createResponse($this->addHeaders(new UnsupportedActionResponse($json)));
return (new HttpFoundationFactory())
->createResponse(
$this->addHeaders(new UnsupportedActionResponse($json))
);
}
}

0 comments on commit 9507001

Please sign in to comment.