*/ public function headersForBody(string $sRawBody): array { if ($this->sUnaKey === '' || $this->sUnaSecret === '') throw new Exception(_t('_sys_agents_una_proxy_unconfigured')); return [ 'X-Una-Key' => $this->sUnaKey, 'X-Una-Sign' => self::sign($sRawBody, $this->sUnaSecret), ]; } public function runRequest(NeuronAI\HttpClient\HttpRequest $request, array $options, GuzzleHttp\Client $client): Psr\Http\Message\ResponseInterface { $sBody = ''; if (is_array($request->body)) { $sBody = self::encodeBody($request->body); $request = new NeuronAI\HttpClient\HttpRequest($request->method, $request->uri, $request->headers, $sBody); } elseif (is_string($request->body)) $sBody = $request->body; $aHeaders = $options[\GuzzleHttp\RequestOptions::HEADERS] ?? []; foreach (array_keys($aHeaders) as $sName) { if (strcasecmp((string)$sName, 'Authorization') === 0) unset($aHeaders[$sName]); } $options[\GuzzleHttp\RequestOptions::HEADERS] = array_merge($aHeaders, $this->headersForBody($sBody)); unset($options[\GuzzleHttp\RequestOptions::JSON]); return parent::runRequest($request, $options, $client); } } /** @} */