1 | <?php |
||
37 | class JsonApiService implements JsonApiServiceInterface |
||
38 | { |
||
39 | /** |
||
40 | * @var FactoryInterface |
||
41 | */ |
||
42 | protected $factory; |
||
43 | |||
44 | /** |
||
45 | * @var JsonApiRegistryInterface |
||
46 | */ |
||
47 | protected $registry; |
||
48 | |||
49 | /** |
||
50 | * @var ContainerInterface |
||
51 | */ |
||
52 | protected $schemas; |
||
53 | |||
54 | /** |
||
55 | * @var ValidationServiceInterface |
||
56 | */ |
||
57 | protected $validator; |
||
58 | |||
59 | /** |
||
60 | * @var DataParserInterface |
||
61 | */ |
||
62 | protected $parser; |
||
63 | |||
64 | /** |
||
65 | * Constructor |
||
66 | * |
||
67 | * @param FactoryInterface $factory |
||
68 | * @param JsonApiRegistryInterface $registry |
||
69 | * @param ContainerInterface $schemas |
||
70 | * @param DataParserInterface $parser |
||
71 | * @param ValidationServiceInterface $validator |
||
72 | */ |
||
73 | 6 | public function __construct( |
|
86 | |||
87 | /** |
||
88 | * @inheritdoc |
||
89 | */ |
||
90 | public function getFactory() |
||
94 | |||
95 | /** |
||
96 | * @inheritdoc |
||
97 | */ |
||
98 | 6 | public function parseRequest(Request $request, EnvironmentInterface $environment = null) |
|
123 | 2 | ||
124 | 2 | /** |
|
125 | * @inheritdoc |
||
126 | */ |
||
127 | public function validateRequest(RequestInterface $request) |
||
158 | 1 | ||
159 | /** |
||
160 | * @inheritdoc |
||
161 | */ |
||
162 | public function getResponseFactory(RequestInterface $request) |
||
166 | |||
167 | 6 | /** |
|
168 | * Returns JSON API environment configured in request |
||
169 | 6 | * |
|
170 | 1 | * @param Request $request |
|
171 | * @return EnvironmentInterface |
||
172 | */ |
||
173 | 5 | public function getRequestEnvironment(Request $request) |
|
189 | |||
190 | 4 | /** |
|
191 | * Initialize JSON API environment for specified request |
||
192 | 4 | * |
|
193 | * @param EnvironmentInterface $environment |
||
194 | 3 | * @param Request $request |
|
195 | */ |
||
196 | private function initializeEnvironment(EnvironmentInterface $environment, Request $request) |
||
207 | |||
208 | 4 | /** |
|
209 | * Create codec matcher for specified environment |
||
210 | 4 | * |
|
211 | * @param EnvironmentInterface $environment |
||
212 | 4 | * @return \Neomerx\JsonApi\Contracts\Codec\CodecMatcherInterface |
|
213 | 4 | */ |
|
214 | 4 | private function createMatcher(EnvironmentInterface $environment) |
|
229 | |||
230 | 4 | /** |
|
231 | * Convert media type string to media type object |
||
232 | 4 | * |
|
233 | 4 | * @param string $type |
|
234 | 1 | * @return \Neomerx\JsonApi\Contracts\Http\Headers\MediaTypeInterface |
|
235 | */ |
||
236 | private function parseMediaTypeString($type) |
||
245 | |||
246 | 3 | /** |
|
247 | * Parse request headers and detect appropriate decoder and encoder |
||
248 | 3 | * |
|
249 | 3 | * @param Request $request |
|
250 | 3 | * @param CodecMatcherInterface $matcher |
|
251 | */ |
||
252 | 3 | private function parseRequestHeaders(Request $request, CodecMatcherInterface $matcher) |
|
260 | |||
261 | 3 | /** |
|
262 | * Create PSR7 request from symfony http foundation request |
||
263 | 3 | * |
|
264 | * @param Request $request |
||
265 | 3 | * @return Psr7Request |
|
266 | 3 | */ |
|
267 | private function createPsr7Request(Request $request) |
||
286 | |||
287 | /** |
||
288 | 3 | * Parse request query parameters |
|
289 | * |
||
290 | 3 | * @param Request $request |
|
291 | 1 | * @param EnvironmentInterface $environment |
|
292 | * @return \Neomerx\JsonApi\Contracts\Encoder\Parameters\EncodingParametersInterface|null |
||
293 | */ |
||
294 | 2 | private function parseQuery(Request $request, EnvironmentInterface $environment) |
|
309 | |||
310 | /** |
||
311 | 3 | * Parse request body |
|
312 | * |
||
313 | 3 | * @param Request $request |
|
314 | 2 | * @param EnvironmentInterface $environment |
|
315 | * @return mixed|null |
||
316 | */ |
||
317 | 1 | private function parseBody(Request $request, EnvironmentInterface $environment) |
|
330 | |||
331 | /** |
||
332 | 2 | * Validate specified data |
|
333 | * |
||
334 | 2 | * @param mixed $data |
|
335 | * @param array|null $validationGroups |
||
336 | * @return Error[] |
||
337 | */ |
||
338 | private function validateData($data = null, array $validationGroups = null) |
||
342 | |||
343 | 4 | /** |
|
344 | * Register specified decoders |
||
345 | 4 | * |
|
346 | 4 | * @param array $decoders |
|
347 | 4 | * @param CodecMatcherInterface $matcher |
|
348 | 3 | */ |
|
349 | 3 | private function registerDecoders(array $decoders, CodecMatcherInterface $matcher) |
|
358 | |||
359 | 3 | /** |
|
360 | * Register specified encoders |
||
361 | 3 | * |
|
362 | 3 | * @param array $encoders |
|
363 | 3 | * @param CodecMatcherInterface $matcher |
|
364 | 3 | */ |
|
365 | 3 | private function registerEncoders(array $encoders, CodecMatcherInterface $matcher) |
|
374 | } |
||
375 |