Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Completed
Pull Request — master (#108)
by Jérémiah
09:21
created

ReactPromiseAdapter   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 79.17%

Importance

Changes 0
Metric Value
wmc 8
lcom 0
cbo 3
dl 0
loc 62
ccs 19
cts 24
cp 0.7917
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A isThenable() 0 4 2
A convertThenable() 0 8 2
B wait() 0 30 4
1
<?php
2
3
/*
4
 * This file is part of the OverblogGraphQLBundle package.
5
 *
6
 * (c) Overblog <http://github.com/overblog/>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Overblog\GraphQLBundle\Executor\Promise\Adapter;
13
14
use GraphQL\Executor\ExecutionResult;
15
use GraphQL\Executor\Promise\Adapter\ReactPromiseAdapter as BaseReactPromiseAdapter;
16
use GraphQL\Executor\Promise\Promise;
17
use Overblog\GraphQLBundle\Executor\Promise\PromiseAdapterInterface;
18
19
class ReactPromiseAdapter extends BaseReactPromiseAdapter implements PromiseAdapterInterface
20
{
21
    /**
22
     * {@inheritdoc}
23
     */
24 10
    public function isThenable($value)
25
    {
26 10
        return parent::isThenable($value instanceof Promise ? $value->adoptedPromise : $value);
27
    }
28
29
    /**
30
     * {@inheritdoc}
31
     */
32 9
    public function convertThenable($thenable)
33
    {
34 9
        if ($thenable instanceof Promise) {
35 9
            return $thenable;
36
        }
37
38 9
        return parent::convertThenable($thenable);
39
    }
40
41
    /**
42
     * Synchronously wait when promise completes.
43
     *
44
     * @param Promise $promise
45
     *
46
     * @return ExecutionResult
47
     *
48
     * @throws \Exception
49
     */
50 10
    public function wait(Promise $promise)
51
    {
52 10
        if (!$this->isThenable($promise)) {
53
            return;
54
        }
55 10
        $wait = true;
56 10
        $resolvedValue = null;
57 10
        $exception = null;
58
        /** @var \React\Promise\PromiseInterface $reactPromise */
59 10
        $reactPromise = $promise->adoptedPromise;
60
61
        $reactPromise->then(function ($values) use (&$resolvedValue, &$wait) {
62 10
            $resolvedValue = $values;
63 10
            $wait = false;
64 10
        }, function ($reason) use (&$exception, &$wait) {
65
            $exception = $reason;
66
            $wait = false;
67 10
        });
68
69
        // wait until promise resolution
70 10
        while ($wait) {
0 ignored issues
show
Unused Code introduced by
This while loop is empty and can be removed.

This check looks for while loops that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.

Consider removing the loop.

Loading history...
71
        }
72
73
        /** @var \Exception|null $exception */
74 10
        if (null !== $exception) {
75
            throw $exception;
76
        }
77
78 10
        return $resolvedValue;
79
    }
80
}
81