|  1:  | <?php | 
|  2:  |  | 
|  3:  | declare(strict_types=1); | 
|  4:  |  | 
|  5:  |  | 
|  6:  |  | 
|  7:  |  | 
|  8:  |  | 
|  9:  |  | 
| 10:  |  | 
| 11:  |  | 
| 12:  |  | 
| 13:  |  | 
| 14:  |  | 
| 15:  |  | 
| 16:  |  | 
| 17:  |  | 
| 18:  |  | 
| 19:  |  | 
| 20:  |  | 
| 21:  |  | 
| 22:  | namespace OpenSearch\Endpoints; | 
| 23:  |  | 
| 24:  | use OpenSearch\Serializers\SerializerInterface; | 
| 25:  |  | 
| 26:  |  | 
| 27:  |  | 
| 28:  |  | 
| 29:  | class Msearch extends AbstractEndpoint | 
| 30:  | { | 
| 31:  |     public function __construct(SerializerInterface $serializer) | 
| 32:  |     { | 
| 33:  |         $this->serializer = $serializer; | 
| 34:  |     } | 
| 35:  |  | 
| 36:  |     public function getURI(): string | 
| 37:  |     { | 
| 38:  |         $index = $this->index ?? null; | 
| 39:  |         if (isset($index)) { | 
| 40:  |             return '/' . rawurlencode($index) . '/_msearch'; | 
| 41:  |         } | 
| 42:  |         return '/_msearch'; | 
| 43:  |     } | 
| 44:  |  | 
| 45:  |     public function getParamWhitelist(): array | 
| 46:  |     { | 
| 47:  |         return [ | 
| 48:  |             'ccs_minimize_roundtrips', | 
| 49:  |             'max_concurrent_searches', | 
| 50:  |             'max_concurrent_shard_requests', | 
| 51:  |             'pre_filter_shard_size', | 
| 52:  |             'rest_total_hits_as_int', | 
| 53:  |             'search_type', | 
| 54:  |             'typed_keys', | 
| 55:  |             'pretty', | 
| 56:  |             'human', | 
| 57:  |             'error_trace', | 
| 58:  |             'source', | 
| 59:  |             'filter_path' | 
| 60:  |         ]; | 
| 61:  |     } | 
| 62:  |  | 
| 63:  |     public function getMethod(): string | 
| 64:  |     { | 
| 65:  |         return isset($this->body) ? 'POST' : 'GET'; | 
| 66:  |     } | 
| 67:  |  | 
| 68:  |     public function setBody(string|iterable|null $body): static | 
| 69:  |     { | 
| 70:  |         if (is_null($body)) { | 
| 71:  |             return $this; | 
| 72:  |         } | 
| 73:  |  | 
| 74:  |         if (is_string($body)) { | 
| 75:  |             if (!str_ends_with($body, "\n")) { | 
| 76:  |                 $body .= "\n"; | 
| 77:  |             } | 
| 78:  |             $this->body = $body; | 
| 79:  |             return $this; | 
| 80:  |         } | 
| 81:  |  | 
| 82:  |          | 
| 83:  |         foreach ($body as $item) { | 
| 84:  |             $this->body .= $this->serializer->serialize($item) . "\n"; | 
| 85:  |         } | 
| 86:  |  | 
| 87:  |         return $this; | 
| 88:  |     } | 
| 89:  |  | 
| 90:  | } | 
| 91:  |  |