| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- <?php
- namespace Webkul\BagistoApi\Http\Middleware;
- use Closure;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Symfony\Component\HttpFoundation\Response;
- /**
- * Adds effective Elasticsearch search details to collection responses.
- */
- class SearchMetadataResponse
- {
- public function handle(Request $request, Closure $next): Response
- {
- $response = $next($request);
- $metadata = $request->attributes->get('bagistoapi.search_metadata');
- if (! is_array($metadata) || ! $response instanceof JsonResponse) {
- return $response;
- }
- $payload = $response->getData(true);
- if ($this->isGraphQlRequest($request)) {
- $payload['extensions']['searchMetadata'] = $metadata;
- } else {
- $payload['meta']['searchMetadata'] = $metadata;
- }
- $response->setData($payload);
- return $response;
- }
- private function isGraphQlRequest(Request $request): bool
- {
- return $request->is('api/graphql', 'graphql');
- }
- }
|