serializer = $serializer; } public function getURI(): string { $index = $this->index ?? null; $type = $this->type ?? null; if (isset($type)) { @trigger_error('Specifying types in urls has been deprecated', E_USER_DEPRECATED); } if (isset($index) && isset($type)) { return "/$index/$type/_bulk"; } if (isset($index)) { return "/$index/_bulk"; } return "/_bulk"; } public function getParamWhitelist(): array { return [ 'wait_for_active_shards', 'refresh', 'routing', 'timeout', 'type', '_source', '_source_excludes', '_source_includes', 'pipeline', 'require_alias' ]; } public function getMethod(): string { return 'POST'; } public function setBody($body): Bulk { if (isset($body) !== true) { return $this; } if (is_array($body) === true || $body instanceof Traversable) { foreach ($body as $item) { $this->body .= $this->serializer->serialize($item) . "\n"; } } elseif (is_string($body)) { $this->body = $body; if (substr($body, -1) != "\n") { $this->body .= "\n"; } } else { throw new InvalidArgumentException("Body must be an array, traversable object or string"); } return $this; } }