NextEngineProvider::getResourceOwnerDetailsUrl()   A
last analyzed

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 1
crap 1
1
<?php
2
3
namespace Shippinno\NextEngine\OAuth2\Client\Provider;
4
5
use League\OAuth2\Client\Provider\AbstractProvider;
6
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
7
use League\OAuth2\Client\Provider\ResourceOwnerInterface;
8
use League\OAuth2\Client\Token\AccessToken;
9
use Psr\Http\Message\ResponseInterface;
10
11
class NextEngineProvider extends AbstractProvider
12
{
13
    /**
14
     * @var string Key used in a token response to identify the resource owner.
15
     */
16
    const ACCESS_TOKEN_RESOURCE_OWNER_ID = 'uid';
17
18
    /**
19
     * Returns the base URL for authorizing a client.
20
     *
21
     * @return string
22
     */
23 1
    public function getBaseAuthorizationUrl()
24
    {
25 1
        return 'https://base.next-engine.org/users/sign_in/';
26
    }
27
28
    /**
29
     * Returns the base URL for requesting an access token.
30
     *
31
     * Eg. https://oauth.service.com/token
32
     *
33
     * @param array $params
34
     * @return string
35
     */
36 2
    public function getBaseAccessTokenUrl(array $params)
37
    {
38 2
        return 'https://api.next-engine.org/api_neauth/';
39
    }
40
41
    /**
42
     * Returns the URL for requesting the resource owner's details.
43
     *
44
     * @param AccessToken $token
45
     * @return string
46
     */
47 1
    public function getResourceOwnerDetailsUrl(AccessToken $token)
48
    {
49 1
        return null;
50
    }
51
52
    /**
53
     * Returns the default scopes used by this provider.
54
     *
55
     * This should only be the scopes that are required to request the details
56
     * of the resource owner, rather than all the available scopes.
57
     *
58
     * @return string[]
59
     */
60
    protected function getDefaultScopes()
61
    {
62
        return [];
63
    }
64
65
    /**
66
     * Checks a provider response for errors.
67
     *
68
     * @throws IdentityProviderException
69
     * @param  ResponseInterface $response
70
     * @param  array|string $data Parsed response data
71
     * @return void
72
     */
73 2
    protected function checkResponse(ResponseInterface $response, $data)
74
    {
75 2
        if (isset($data['result']) && 'error' === $data['result']) {
76 1
            throw new IdentityProviderException(
77 1
                $data['message'] ?: $response->getReasonPhrase(),
78 1
                $response->getStatusCode(),
79 1
                $response->getBody()
80 1
            );
81
        }
82 1
    }
83
84
    /**
85
     * Returns authorization parameters based on provided options.
86
     *
87
     * @param  array $options
88
     * @return array Authorization parameters
89
     */
90 1
    protected function getAuthorizationParameters(array $options)
91
    {
92 1
        if (!isset($options['redirect_uri'])) {
93 1
            $options['redirect_uri'] = $this->redirectUri;
94 1
        }
95
96 1
        $options['client_id'] = $this->clientId;
97 1
        $options['client_secret'] = $this->clientSecret;
98
99 1
        return $options;
100
    }
101
102
    /**
103
     * Requests an access token using a specified grant and option set.
104
     *
105
     * @param  mixed $grant
106
     * @param  array $options
107
     * @return AccessToken
108
     */
109 2
    public function getAccessToken($grant, array $options = [])
110
    {
111 2
        $grant = $this->verifyGrant($grant);
112
113 2
        $request  = $this->getAccessTokenRequest($options);
114 2
        $response = $this->getParsedResponse($request);
115 1
        $prepared = $this->prepareAccessTokenResponse($response);
0 ignored issues
show
Bug introduced by
It seems like $response defined by $this->getParsedResponse($request) on line 114 can also be of type null or string; however, League\OAuth2\Client\Pro...reAccessTokenResponse() does only seem to accept array, maybe add an additional type check?

If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check:

/**
 * @return array|string
 */
function returnsDifferentValues($x) {
    if ($x) {
        return 'foo';
    }

    return array();
}

$x = returnsDifferentValues($y);
if (is_array($x)) {
    // $x is an array.
}

If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.

Loading history...
116 1
        $token    = $this->createAccessToken($prepared, $grant);
117
118 1
        return $token;
119
    }
120
121
    /**
122
     * Generates a resource owner object from a successful resource owner
123
     * details request.
124
     *
125
     * @param  array $response
126
     * @param  AccessToken $token
127
     * @return ResourceOwnerInterface
128
     */
129
    protected function createResourceOwner(array $response, AccessToken $token)
130
    {
131
        return new NextEngineResourceOwner($token->getValues());
132
    }
133
134
    /**
135
     * Requests and returns the resource owner of given access token.
136
     *
137
     * @param  AccessToken $token
138
     * @return ResourceOwnerInterface
139
     */
140
    public function getResourceOwner(AccessToken $token)
141
    {
142
        return $this->createResourceOwner([], $token);
143
    }
144
}
145