Skip to content

Commit 4cb2085

Browse files
committed
Refactor request handler
1 parent 5e7edec commit 4cb2085

File tree

1 file changed

+9
-22
lines changed

1 file changed

+9
-22
lines changed

src/JsonApi.php

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,10 @@ public function handle(Request $request): Response
6262

6363
switch (count($segments)) {
6464
case 1:
65-
return $this->handleWithHandler(
66-
$request,
67-
$this->getCollectionHandler($request, $segments)
68-
);
65+
return $this->handleCollection($request, $segments);
6966

7067
case 2:
71-
return $this->handleWithHandler(
72-
$request,
73-
$this->getMemberHandler($request, $segments)
74-
);
68+
return $this->handleResource($request, $segments);
7569

7670
case 3:
7771
// return $this->handleRelated($request, $resource, $model, $segments[2]);
@@ -136,49 +130,42 @@ private function stripBasePath(string $path): string
136130
return $path;
137131
}
138132

139-
private function getCollectionHandler(Request $request, array $segments): RequestHandlerInterface
133+
private function handleCollection(Request $request, array $segments): Response
140134
{
141135
$resource = $this->getResource($segments[0]);
142136

143137
switch ($request->getMethod()) {
144138
case 'GET':
145-
return new Handler\Index($this, $resource);
139+
return (new Handler\Index($this, $resource))->handle($request);
146140

147141
case 'POST':
148-
return new Handler\Create($this, $resource);
142+
return (new Handler\Create($this, $resource))->handle($request);
149143

150144
default:
151145
throw new MethodNotAllowedException;
152146
}
153147
}
154148

155-
private function getMemberHandler(Request $request, array $segments): RequestHandlerInterface
149+
private function handleResource(Request $request, array $segments): Response
156150
{
157151
$resource = $this->getResource($segments[0]);
158152
$model = $this->findResource($request, $resource, $segments[1]);
159153

160154
switch ($request->getMethod()) {
161155
case 'PATCH':
162-
return new Handler\Update($this, $resource, $model);
156+
return (new Handler\Update($this, $resource, $model))->handle($request);
163157

164158
case 'GET':
165-
return new Handler\Show($this, $resource, $model);
159+
return (new Handler\Show($this, $resource, $model))->handle($request);
166160

167161
case 'DELETE':
168-
return new Handler\Delete($resource, $model);
162+
return (new Handler\Delete($resource, $model))->handle($request);
169163

170164
default:
171165
throw new MethodNotAllowedException;
172166
}
173167
}
174168

175-
private function handleWithHandler(Request $request, RequestHandlerInterface $handler)
176-
{
177-
$request = $request->withAttribute('jsonApiHandler', $handler);
178-
179-
return $handler->handle($request);
180-
}
181-
182169
public function error($e)
183170
{
184171
if (! $e instanceof ErrorProviderInterface) {

0 commit comments

Comments
 (0)