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
Push — master ( 0f638c...d3a4d4 )
by Cees-Jan
124:48
created

ClosureChild::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 9
cts 9
cp 1
rs 9.8333
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 SuperClosure\Serializer;
8
use Throwable;
9
use WyriHaximus\React\ChildProcess\Messenger\ChildInterface;
10
use WyriHaximus\React\ChildProcess\Messenger\Messages\Payload;
11
use WyriHaximus\React\ChildProcess\Messenger\Messenger;
12
use function React\Promise\reject;
13
use function React\Promise\resolve;
14
15
final class ClosureChild implements ChildInterface
16
{
17
    /**
18
     * @var Messenger
19
     */
20
    private $messenger;
21
22
    /**
23
     * @var LoopInterface
24
     */
25
    private $loop;
26
27
    /**
28
     * @var Serializer
29
     */
30
    private $serializer;
31
32
    /**
33
     * @param Messenger     $messenger
34
     * @param LoopInterface $loop
35
     */
36 1
    private function __construct(Messenger $messenger, LoopInterface $loop)
37
    {
38 1
        $this->messenger = $messenger;
39 1
        $this->loop = $loop;
40 1
        $this->serializer = new Serializer();
41
42 1
        $this->messenger->registerRpc(
43 1
            MessageFactory::CLOSURE_EXECUTE,
44
            function (Payload $payload) {
45 1
                return $this->executeClosure($payload->getPayload()['closure']);
46 1
            }
47
        );
48 1
    }
49
50
    /**
51
     * @param  Messenger     $messenger
52
     * @param  LoopInterface $loop
53
     * @return ClosureChild
54
     */
55 1
    public static function create(Messenger $messenger, LoopInterface $loop): ClosureChild
56
    {
57 1
        return new self($messenger, $loop);
58
    }
59
60
    /**
61
     * @param  string           $closure
62
     * @return PromiseInterface
63
     */
64 1
    private function executeClosure(string $closure): PromiseInterface
65
    {
66
        try {
67 1
            $unserialized = $this->serializer->unserialize($closure);
68
69 1
            return resolve($unserialized());
70
        } catch (Throwable $throwable) {
71
            return reject($throwable);
72
        }
73
    }
74
}
75