GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Pull Request — master (#21)
by
unknown
05:06
created

ClosureChild::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 1
1
<?php declare(strict_types=1);
2
3
namespace WyriHaximus\React\ChildProcess\Closure;
4
5
use React\EventLoop\LoopInterface;
6
use React\Promise\PromiseInterface;
7
use function React\Promise\reject;
8
use function React\Promise\resolve;
9
use Throwable;
10
use WyriHaximus\React\ChildProcess\Messenger\ChildInterface;
11
use WyriHaximus\React\ChildProcess\Messenger\Messages\Payload;
12
use WyriHaximus\React\ChildProcess\Messenger\Messenger;
13
14
final class ClosureChild implements ChildInterface
15
{
16
    /**
17
     * @var Messenger
18
     */
19
    private $messenger;
20
21
    /**
22
     * @var LoopInterface
23
     */
24
    private $loop;
25
26
    /**
27
     * @param Messenger     $messenger
28
     * @param LoopInterface $loop
29
     */
30 1
    private function __construct(Messenger $messenger, LoopInterface $loop)
31
    {
32 1
        $this->messenger = $messenger;
33 1
        $this->loop = $loop;
34
35 1
        $this->messenger->registerRpc(
36 1
            MessageFactory::CLOSURE_EXECUTE,
37
            function (Payload $payload) {
38 1
                return $this->executeClosure($payload->getPayload()['closure']);
39 1
            }
40
        );
41 1
    }
42
43
    /**
44
     * @param  Messenger     $messenger
45
     * @param  LoopInterface $loop
46
     * @return ClosureChild
47
     */
48 1
    public static function create(Messenger $messenger, LoopInterface $loop): ClosureChild
49
    {
50 1
        return new self($messenger, $loop);
51
    }
52
53
    /**
54
     * @param  string           $closure
55
     * @return PromiseInterface
56
     */
57 1
    private function executeClosure(string $closure): PromiseInterface
58
    {
59
        try {
60 1
            $unserialized = \unserialize($closure)->getClosure();
61
62 1
            return resolve($unserialized());
63
        } catch (Throwable $throwable) {
64
            return reject($throwable);
65
        }
66
    }
67
}
68