new appraoch
This commit is contained in:
58
pancake/system/vendor/php-http/promise/src/FulfilledPromise.php
vendored
Executable file
58
pancake/system/vendor/php-http/promise/src/FulfilledPromise.php
vendored
Executable file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Promise;
|
||||
|
||||
/**
|
||||
* A promise already fulfilled.
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
*/
|
||||
final class FulfilledPromise implements Promise
|
||||
{
|
||||
/**
|
||||
* @var mixed
|
||||
*/
|
||||
private $result;
|
||||
|
||||
/**
|
||||
* @param $result
|
||||
*/
|
||||
public function __construct($result)
|
||||
{
|
||||
$this->result = $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null)
|
||||
{
|
||||
if (null === $onFulfilled) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
try {
|
||||
return new self($onFulfilled($this->result));
|
||||
} catch (\Exception $e) {
|
||||
return new RejectedPromise($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getState()
|
||||
{
|
||||
return Promise::FULFILLED;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function wait($unwrap = true)
|
||||
{
|
||||
if ($unwrap) {
|
||||
return $this->result;
|
||||
}
|
||||
}
|
||||
}
|
||||
69
pancake/system/vendor/php-http/promise/src/Promise.php
vendored
Executable file
69
pancake/system/vendor/php-http/promise/src/Promise.php
vendored
Executable file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Promise;
|
||||
|
||||
/**
|
||||
* Promise represents a value that may not be available yet, but will be resolved at some point in future.
|
||||
* It acts like a proxy to the actual value.
|
||||
*
|
||||
* This interface is an extension of the promises/a+ specification.
|
||||
*
|
||||
* @see https://promisesaplus.com/
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
* @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
|
||||
*/
|
||||
interface Promise
|
||||
{
|
||||
/**
|
||||
* Promise has not been fulfilled or rejected.
|
||||
*/
|
||||
const PENDING = 'pending';
|
||||
|
||||
/**
|
||||
* Promise has been fulfilled.
|
||||
*/
|
||||
const FULFILLED = 'fulfilled';
|
||||
|
||||
/**
|
||||
* Promise has been rejected.
|
||||
*/
|
||||
const REJECTED = 'rejected';
|
||||
|
||||
/**
|
||||
* Adds behavior for when the promise is resolved or rejected (response will be available, or error happens).
|
||||
*
|
||||
* If you do not care about one of the cases, you can set the corresponding callable to null
|
||||
* The callback will be called when the value arrived and never more than once.
|
||||
*
|
||||
* @param callable|null $onFulfilled called when a response will be available
|
||||
* @param callable|null $onRejected called when an exception occurs
|
||||
*
|
||||
* @return Promise a new resolved promise with value of the executed callback (onFulfilled / onRejected)
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null);
|
||||
|
||||
/**
|
||||
* Returns the state of the promise, one of PENDING, FULFILLED or REJECTED.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getState();
|
||||
|
||||
/**
|
||||
* Wait for the promise to be fulfilled or rejected.
|
||||
*
|
||||
* When this method returns, the request has been resolved and if callables have been
|
||||
* specified, the appropriate one has terminated.
|
||||
*
|
||||
* When $unwrap is true (the default), the response is returned, or the exception thrown
|
||||
* on failure. Otherwise, nothing is returned or thrown.
|
||||
*
|
||||
* @param bool $unwrap Whether to return resolved value / throw reason or not
|
||||
*
|
||||
* @return mixed Resolved value, null if $unwrap is set to false
|
||||
*
|
||||
* @throws \Exception the rejection reason if $unwrap is set to true and the request failed
|
||||
*/
|
||||
public function wait($unwrap = true);
|
||||
}
|
||||
58
pancake/system/vendor/php-http/promise/src/RejectedPromise.php
vendored
Executable file
58
pancake/system/vendor/php-http/promise/src/RejectedPromise.php
vendored
Executable file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Http\Promise;
|
||||
|
||||
/**
|
||||
* A rejected promise.
|
||||
*
|
||||
* @author Joel Wurtz <joel.wurtz@gmail.com>
|
||||
*/
|
||||
final class RejectedPromise implements Promise
|
||||
{
|
||||
/**
|
||||
* @var \Exception
|
||||
*/
|
||||
private $exception;
|
||||
|
||||
/**
|
||||
* @param \Exception $exception
|
||||
*/
|
||||
public function __construct(\Exception $exception)
|
||||
{
|
||||
$this->exception = $exception;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function then(callable $onFulfilled = null, callable $onRejected = null)
|
||||
{
|
||||
if (null === $onRejected) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
try {
|
||||
return new FulfilledPromise($onRejected($this->exception));
|
||||
} catch (\Exception $e) {
|
||||
return new self($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getState()
|
||||
{
|
||||
return Promise::REJECTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function wait($unwrap = true)
|
||||
{
|
||||
if ($unwrap) {
|
||||
throw $this->exception;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user