%PDF- %PDF-
Direktori : /home/silvzytp/crm-ind-code/vendor/laravel/framework/src/Illuminate/Http/Client/ |
Current File : //home/silvzytp/crm-ind-code/vendor/laravel/framework/src/Illuminate/Http/Client/Response.php |
<?php namespace Illuminate\Http\Client; use ArrayAccess; use Illuminate\Support\Collection; use Illuminate\Support\Traits\Macroable; use LogicException; class Response implements ArrayAccess { use Macroable { __call as macroCall; } /** * The underlying PSR response. * * @var \Psr\Http\Message\ResponseInterface */ protected $response; /** * The decoded JSON response. * * @var array */ protected $decoded; /** * The request cookies. * * @var \GuzzleHttp\Cookie\CookieJar */ public $cookies; /** * The transfer stats for the request. * * @var \GuzzleHttp\TransferStats|null */ public $transferStats; /** * Create a new response instance. * * @param \Psr\Http\Message\MessageInterface $response * @return void */ public function __construct($response) { $this->response = $response; } /** * Get the body of the response. * * @return string */ public function body() { return (string) $this->response->getBody(); } /** * Get the JSON decoded body of the response as an array or scalar value. * * @param string|null $key * @param mixed $default * @return mixed */ public function json($key = null, $default = null) { if (! $this->decoded) { $this->decoded = json_decode($this->body(), true); } if (is_null($key)) { return $this->decoded; } return data_get($this->decoded, $key, $default); } /** * Get the JSON decoded body of the response as an object. * * @return object|array */ public function object() { return json_decode($this->body(), false); } /** * Get the JSON decoded body of the response as a collection. * * @param string|null $key * @return \Illuminate\Support\Collection */ public function collect($key = null) { return Collection::make($this->json($key)); } /** * Get a header from the response. * * @param string $header * @return string */ public function header(string $header) { return $this->response->getHeaderLine($header); } /** * Get the headers from the response. * * @return array */ public function headers() { return $this->response->getHeaders(); } /** * Get the status code of the response. * * @return int */ public function status() { return (int) $this->response->getStatusCode(); } /** * Get the reason phrase of the response. * * @return string */ public function reason() { return $this->response->getReasonPhrase(); } /** * Get the effective URI of the response. * * @return \Psr\Http\Message\UriInterface|null */ public function effectiveUri() { return $this->transferStats?->getEffectiveUri(); } /** * Determine if the request was successful. * * @return bool */ public function successful() { return $this->status() >= 200 && $this->status() < 300; } /** * Determine if the response code was "OK". * * @return bool */ public function ok() { return $this->status() === 200; } /** * Determine if the response was a redirect. * * @return bool */ public function redirect() { return $this->status() >= 300 && $this->status() < 400; } /** * Determine if the response was a 401 "Unauthorized" response. * * @return bool */ public function unauthorized() { return $this->status() === 401; } /** * Determine if the response was a 403 "Forbidden" response. * * @return bool */ public function forbidden() { return $this->status() === 403; } /** * Determine if the response indicates a client or server error occurred. * * @return bool */ public function failed() { return $this->serverError() || $this->clientError(); } /** * Determine if the response indicates a client error occurred. * * @return bool */ public function clientError() { return $this->status() >= 400 && $this->status() < 500; } /** * Determine if the response indicates a server error occurred. * * @return bool */ public function serverError() { return $this->status() >= 500; } /** * Execute the given callback if there was a server or client error. * * @param callable $callback * @return $this */ public function onError(callable $callback) { if ($this->failed()) { $callback($this); } return $this; } /** * Get the response cookies. * * @return \GuzzleHttp\Cookie\CookieJar */ public function cookies() { return $this->cookies; } /** * Get the handler stats of the response. * * @return array */ public function handlerStats() { return $this->transferStats?->getHandlerStats() ?? []; } /** * Close the stream and any underlying resources. * * @return $this */ public function close() { $this->response->getBody()->close(); return $this; } /** * Get the underlying PSR response for the response. * * @return \Psr\Http\Message\ResponseInterface */ public function toPsrResponse() { return $this->response; } /** * Create an exception if a server or client error occurred. * * @return \Illuminate\Http\Client\RequestException|null */ public function toException() { if ($this->failed()) { return new RequestException($this); } } /** * Throw an exception if a server or client error occurred. * * @param \Closure|null $callback * @return $this * * @throws \Illuminate\Http\Client\RequestException */ public function throw() { $callback = func_get_args()[0] ?? null; if ($this->failed()) { throw tap($this->toException(), function ($exception) use ($callback) { if ($callback && is_callable($callback)) { $callback($this, $exception); } }); } return $this; } /** * Throw an exception if a server or client error occurred and the given condition evaluates to true. * * @param \Closure|bool $condition * @param \Closure|null $throwCallback * @return $this * * @throws \Illuminate\Http\Client\RequestException */ public function throwIf($condition) { return value($condition, $this) ? $this->throw(func_get_args()[1] ?? null) : $this; } /** * Determine if the given offset exists. * * @param string $offset * @return bool */ public function offsetExists($offset): bool { return isset($this->json()[$offset]); } /** * Get the value for a given offset. * * @param string $offset * @return mixed */ public function offsetGet($offset): mixed { return $this->json()[$offset]; } /** * Set the value at the given offset. * * @param string $offset * @param mixed $value * @return void * * @throws \LogicException */ public function offsetSet($offset, $value): void { throw new LogicException('Response data may not be mutated using array access.'); } /** * Unset the value at the given offset. * * @param string $offset * @return void * * @throws \LogicException */ public function offsetUnset($offset): void { throw new LogicException('Response data may not be mutated using array access.'); } /** * Get the body of the response. * * @return string */ public function __toString() { return $this->body(); } /** * Dynamically proxy other methods to the underlying response. * * @param string $method * @param array $parameters * @return mixed */ public function __call($method, $parameters) { return static::hasMacro($method) ? $this->macroCall($method, $parameters) : $this->response->{$method}(...$parameters); } }