1
|
|
|
<?php |
2
|
|
|
declare(strict_types = 1); |
3
|
|
|
/** |
4
|
|
|
* /src/Rest/Traits/Methods/FindMethod.php |
5
|
|
|
* |
6
|
|
|
* @author TLe, Tarmo Leppänen <[email protected]> |
7
|
|
|
*/ |
8
|
|
|
|
9
|
|
|
namespace App\Rest\Traits\Methods; |
10
|
|
|
|
11
|
|
|
use App\Rest\RequestHandler; |
12
|
|
|
use Symfony\Component\HttpFoundation\Request; |
13
|
|
|
use Symfony\Component\HttpFoundation\Response; |
14
|
|
|
use Throwable; |
15
|
|
|
|
16
|
|
|
/** |
17
|
|
|
* Trait FindMethod |
18
|
|
|
* |
19
|
|
|
* @package App\Rest\Traits\Methods |
20
|
|
|
* @author TLe, Tarmo Leppänen <[email protected]> |
21
|
|
|
*/ |
22
|
|
|
trait FindMethod |
23
|
|
|
{ |
24
|
|
|
/** |
25
|
|
|
* Generic 'findMethod' method for REST resources. |
26
|
|
|
* |
27
|
|
|
* @param array<int, string>|null $allowedHttpMethods |
28
|
|
|
* |
29
|
|
|
* @throws Throwable |
30
|
|
|
*/ |
31
|
50 |
|
public function findMethod(Request $request, ?array $allowedHttpMethods = null): Response |
32
|
|
|
{ |
33
|
50 |
|
$resource = $this->getResourceForMethod($request, $allowedHttpMethods ?? [Request::METHOD_GET]); |
|
|
|
|
34
|
|
|
|
35
|
|
|
// Determine used parameters |
36
|
41 |
|
$orderBy = RequestHandler::getOrderBy($request); |
37
|
41 |
|
$limit = RequestHandler::getLimit($request); |
38
|
41 |
|
$offset = RequestHandler::getOffset($request); |
39
|
41 |
|
$search = RequestHandler::getSearchTerms($request); |
40
|
|
|
|
41
|
|
|
try { |
42
|
41 |
|
$criteria = RequestHandler::getCriteria($request); |
43
|
|
|
|
44
|
40 |
|
$this->processCriteria($criteria, $request, __METHOD__); |
|
|
|
|
45
|
|
|
|
46
|
40 |
|
return $this |
47
|
40 |
|
->getResponseHandler() |
|
|
|
|
48
|
40 |
|
->createResponse($request, $resource->find($criteria, $orderBy, $limit, $offset, $search), $resource); |
49
|
8 |
|
} catch (Throwable $exception) { |
50
|
8 |
|
throw $this->handleRestMethodException($exception); |
|
|
|
|
51
|
|
|
} |
52
|
|
|
} |
53
|
|
|
} |
54
|
|
|
|