WordPress\AiClient\Providers\Http

HttpTransporter::mergeOptionsprivateWP 0.2.0

Merges request options with parameter options taking precedence.

Method of the class: HttpTransporter{}

No Hooks.

Returns

RequestOptions|null. Merged options, or null if both are null.

Usage

// private - for code of main (parent) class only
$result = $this->mergeOptions( ?RequestOptions $requestOptions, ?RequestOptions $parameterOptions ): ?RequestOptions;
?RequestOptions $requestOptions(required)
.
?RequestOptions $parameterOptions(required)
.

Changelog

Since 0.2.0 Introduced.

HttpTransporter::mergeOptions() code WP 7.0

private function mergeOptions(?RequestOptions $requestOptions, ?RequestOptions $parameterOptions): ?RequestOptions
{
    // If no options at all, return null
    if ($requestOptions === null && $parameterOptions === null) {
        return null;
    }
    // If only one set of options exists, return it
    if ($requestOptions === null) {
        return $parameterOptions;
    }
    if ($parameterOptions === null) {
        return $requestOptions;
    }
    // Both exist, merge them with parameter options taking precedence
    $merged = new RequestOptions();
    // Start with request options (lower precedence)
    if ($requestOptions->getTimeout() !== null) {
        $merged->setTimeout($requestOptions->getTimeout());
    }
    if ($requestOptions->getConnectTimeout() !== null) {
        $merged->setConnectTimeout($requestOptions->getConnectTimeout());
    }
    if ($requestOptions->getMaxRedirects() !== null) {
        $merged->setMaxRedirects($requestOptions->getMaxRedirects());
    }
    // Override with parameter options (higher precedence)
    if ($parameterOptions->getTimeout() !== null) {
        $merged->setTimeout($parameterOptions->getTimeout());
    }
    if ($parameterOptions->getConnectTimeout() !== null) {
        $merged->setConnectTimeout($parameterOptions->getConnectTimeout());
    }
    if ($parameterOptions->getMaxRedirects() !== null) {
        $merged->setMaxRedirects($parameterOptions->getMaxRedirects());
    }
    return $merged;
}