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   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 87.5%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 3
dl 0
loc 60
ccs 14
cts 16
cp 0.875
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 13 1
A create() 0 4 1
A executeClosure() 0 10 2
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