![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /home/fdshops/public_html/vendor/openai-php/client/src/Transporters/ |
<?php declare(strict_types=1); namespace OpenAI\Transporters; use Closure; use JsonException; use OpenAI\Contracts\TransporterContract; use OpenAI\Exceptions\ErrorException; use OpenAI\Exceptions\TransporterException; use OpenAI\Exceptions\UnserializableResponse; use OpenAI\ValueObjects\Transporter\BaseUri; use OpenAI\ValueObjects\Transporter\Headers; use OpenAI\ValueObjects\Transporter\Payload; use OpenAI\ValueObjects\Transporter\QueryParams; use Psr\Http\Client\ClientExceptionInterface; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\ResponseInterface; /** * @internal */ final class HttpTransporter implements TransporterContract { /** * Creates a new Http Transporter instance. */ public function __construct( private readonly ClientInterface $client, private readonly BaseUri $baseUri, private readonly Headers $headers, private readonly QueryParams $queryParams, private readonly Closure $streamHandler, ) { // .. } /** * {@inheritDoc} */ public function requestObject(Payload $payload): array|string { $request = $payload->toRequest($this->baseUri, $this->headers, $this->queryParams); try { $response = $this->client->sendRequest($request); } catch (ClientExceptionInterface $clientException) { throw new TransporterException($clientException); } $contents = (string) $response->getBody(); if ($response->getHeader('Content-Type')[0] === 'text/plain; charset=utf-8') { return $contents; } try { /** @var array{error?: array{message: string, type: string, code: string}} $response */ $response = json_decode($contents, true, 512, JSON_THROW_ON_ERROR); } catch (JsonException $jsonException) { throw new UnserializableResponse($jsonException); } if (isset($response['error'])) { throw new ErrorException($response['error']); } return $response; } /** * {@inheritDoc} */ public function requestContent(Payload $payload): string { $request = $payload->toRequest($this->baseUri, $this->headers, $this->queryParams); try { $response = $this->client->sendRequest($request); } catch (ClientExceptionInterface $clientException) { throw new TransporterException($clientException); } $contents = $response->getBody()->getContents(); try { /** @var array{error?: array{message: string, type: string, code: string}} $response */ $response = json_decode($contents, true, 512, JSON_THROW_ON_ERROR); if (isset($response['error'])) { throw new ErrorException($response['error']); } } catch (JsonException) { // .. } return $contents; } /** * {@inheritDoc} */ public function requestStream(Payload $payload): ResponseInterface { $request = $payload->toRequest($this->baseUri, $this->headers, $this->queryParams); try { $response = ($this->streamHandler)($request); } catch (ClientExceptionInterface $clientException) { throw new TransporterException($clientException); } return $response; } }