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 Cees-Jan
07:18
created

Client::getRateLimitState()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

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
eloc 2
nc 1
nop 0
crap 1
1
<?php declare(strict_types=1);
2
3
namespace ApiClients\Client\Github;
4
5
use ApiClients\Client\Github\Resource\UserInterface;
6
use ApiClients\Foundation\Factory as FoundationClientFactory;
7
use ApiClients\Foundation\Options;
8
use ApiClients\Foundation\Resource\ResourceInterface;
9
use React\EventLoop\Factory;
10
use React\EventLoop\LoopInterface;
11
use Rx\Scheduler;
12
use function Clue\React\Block\await;
13
14
final class Client implements ClientInterface
15
{
16
    /**
17
     * @var LoopInterface
18
     */
19
    private $loop;
20
21
    /**
22
     * @var AsyncClient
23
     */
24
    private $asyncClient;
25
26
    /**
27
     * @param LoopInterface $loop
28
     * @param AsyncClient   $client
29
     */
30 1
    private function __construct(LoopInterface $loop, AsyncClient $client)
31
    {
32 1
        $this->loop = $loop;
33 1
        $this->asyncClient = $client;
34 1
    }
35
36
    /**
37
     * @param  AuthenticationInterface $auth
38
     * @param  array                   $options
39
     * @return Client
40
     */
41 1
    public static function create(
42
        AuthenticationInterface $auth,
43
        array $options = []
44
    ): self {
45 1
        $loop = Factory::create();
46 1
        $options = ApiSettings::getOptions($auth, $options, 'Sync');
47 1
        $rateLimitState = new RateLimitState();
48 1
        $options[Options::CONTAINER_DEFINITIONS][RateLimitState::class] = $rateLimitState;
49 1
        $client = FoundationClientFactory::create($loop, $options);
50
51
        try {
52 1
            Scheduler::setAsyncFactory(function () use ($loop) {
53
                return new Scheduler\EventLoopScheduler($loop);
54 1
            });
55
        } catch (\Throwable $t) {
0 ignored issues
show
Coding Style Comprehensibility introduced by
Consider adding a comment why this CATCH block is empty.
Loading history...
56
        }
57
58 1
        $asyncClient = AsyncClient::createFromClient($client, $rateLimitState);
59
60 1
        return new self($loop, $asyncClient);
61
    }
62
63
    public function hydrate(string $resource): ResourceInterface
64
    {
65
        return await(
66
            $this->asyncClient->hydrate($resource),
67
            $this->loop
68
        );
69
    }
70
71
    public function extract(ResourceInterface $resource): string
72
    {
73
        return await(
74
            $this->asyncClient->extract($resource),
75
            $this->loop
76
        );
77
    }
78
79
    /**
80
     * @param  string        $user
81
     * @return UserInterface
82
     */
83
    public function user(string $user): UserInterface
84
    {
85
        return await(
86
            $this->asyncClient->user($user),
87
            $this->loop
88
        );
89
    }
90
91
    /**
92
     * @return RateLimitState
93
     */
94 1
    public function getRateLimitState(): RateLimitState
95
    {
96 1
        return $this->asyncClient->getRateLimitState();
97
    }
98
}
99