in util/ClientEndpoint.php [47:115]
public function renderClass(): string
{
if (empty($this->endpoints)) {
throw new Exception("No endpoints has been added. I cannot render the class");
}
$class = file_get_contents(self::CLIENT_CLASS_TEMPLATE);
// use Namespace
$useNamespace = '';
foreach ($this->namespace as $name) {
if (empty($name)) {
continue;
}
$useNamespace .= sprintf("use OpenSearch\Namespaces\%sNamespace;\n", NamespaceEndpoint::normalizeName($name));
}
$class = str_replace(':use-namespaces', $useNamespace, $class);
// new Namespace
$newNamespace = '';
foreach ($this->namespace as $name) {
if (empty($name)) {
continue;
}
$normNamespace = NamespaceEndpoint::normalizeName($name);
$newName = file_get_contents(self::NEW_NAMESPACE_TEMPLATE);
$newName = str_replace(':namespace', $normNamespace . 'Namespace', $newName);
$newName = str_replace(':name', lcfirst($normNamespace), $newName);
$newNamespace .= $newName;
}
$class = str_replace(':new-namespaces', $newNamespace, $class);
// Properties
$properties = '';
foreach ($this->namespace as $name) {
if (empty($name)) {
continue;
}
$normNamespace = NamespaceEndpoint::normalizeName($name);
$prop = file_get_contents(self::PROPERTY_CLASS_TEMPLATE);
$prop = str_replace(':namespace', $normNamespace, $prop);
$prop = str_replace(':var_namespace', lcfirst($normNamespace), $prop);
$properties .= $prop . "\n";
}
$class = str_replace(':namespace_properties', $properties, $class);
// Endpoints
$endpoints = '';
foreach ($this->endpoints as $endpoint) {
$endpoints .= $this->renderEndpoint($endpoint);
}
$class = str_replace(':endpoints', $endpoints, $class);
// Namespace functions
$functions = '';
foreach ($this->namespace as $name) {
if (empty($name)) {
continue;
}
$normNamespace = NamespaceEndpoint::normalizeName($name);
$func = file_get_contents(self::NAMESPACE_FUNC_TEMPLATE);
$func = str_replace(':namespace', $normNamespace . 'Namespace', $func);
$func = str_replace(':name', lcfirst($normNamespace), $func);
$functions .= $func;
}
$class = str_replace(':functions', $functions, $class);
$class = str_replace(':version', $this->version, $class);
$class = str_replace(':buildhash', $this->buildhash, $class);
return $class;
}