Skip to content

Commit 22d5e81

Browse files
committed
Add specific http promise
1 parent 5183cf8 commit 22d5e81

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed

src/Promise/HttpFulfilledPromise.php

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace Http\Client\Promise;
4+
5+
use Http\Client\Exception;
6+
use Http\Promise\Promise;
7+
use Psr\Http\Message\ResponseInterface;
8+
9+
final class HttpFulfilledPromise implements Promise
10+
{
11+
/**
12+
* @var ResponseInterface
13+
*/
14+
private $response;
15+
16+
/**
17+
* @param ResponseInterface $response
18+
*/
19+
public function __construct(ResponseInterface $response)
20+
{
21+
$this->response = $response;
22+
}
23+
24+
/**
25+
* {@inheritdoc}
26+
*/
27+
public function then(callable $onFulfilled = null, callable $onRejected = null)
28+
{
29+
if (null === $onFulfilled) {
30+
return $this;
31+
}
32+
33+
try {
34+
return new self($onFulfilled($this->response));
35+
} catch (Exception $e) {
36+
return new HttpRejectedPromise($e);
37+
}
38+
}
39+
40+
/**
41+
* {@inheritdoc}
42+
*/
43+
public function getState()
44+
{
45+
return Promise::FULFILLED;
46+
}
47+
48+
/**
49+
* {@inheritdoc}
50+
*/
51+
public function wait($unwrap = true)
52+
{
53+
if ($unwrap) {
54+
return $this->response;
55+
}
56+
}
57+
}

src/Promise/HttpRejectedPromise.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace Http\Client\Promise;
4+
5+
use Http\Client\Exception;
6+
use Http\Promise\Promise;
7+
8+
final class HttpRejectedPromise implements Promise
9+
{
10+
/**
11+
* @var \Exception
12+
*/
13+
private $exception;
14+
15+
/**
16+
* @param \Exception $exception
17+
*/
18+
public function __construct(\Exception $exception)
19+
{
20+
$this->exception = $exception;
21+
}
22+
23+
/**
24+
* {@inheritdoc}
25+
*/
26+
public function then(callable $onFulfilled = null, callable $onRejected = null)
27+
{
28+
if (null === $onRejected) {
29+
return $this;
30+
}
31+
32+
try {
33+
return new HttpFulfilledPromise($onRejected($this->exception));
34+
} catch (Exception $e) {
35+
return new self($e);
36+
}
37+
}
38+
39+
/**
40+
* {@inheritdoc}
41+
*/
42+
public function getState()
43+
{
44+
return Promise::REJECTED;
45+
}
46+
47+
/**
48+
* {@inheritdoc}
49+
*/
50+
public function wait($unwrap = true)
51+
{
52+
if ($unwrap) {
53+
throw $this->exception;
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)