Completed
Pull Request — master (#4)
by Cesar
02:11 queued 45s
created

IdentityService::getUserInfo()   A

Complexity

Conditions 2
Paths 3

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
cc 2
nc 3
nop 1
1
<?php
2
3
namespace App\Service\Paypal;
4
5
use Exception;
6
use PayPal\Api\OpenIdTokeninfo;
7
use PayPal\Api\OpenIdUserinfo;
8
9
/**
10
 * Class IdentityService
11
 * @package App\Service\Paypal
12
 */
13
class IdentityService extends AbstractPaypalService
14
{
15
    /**
16
     * getAccessTokenFromAuthToken
17
     *
18
     * @param $authToken
19
     * @return OpenIdTokeninfo|null
20
     */
21
    public function getAccessTokenFromAuthToken($authToken) : ?OpenIdTokeninfo
22
    {
23
        try {
24
            $accessToken = OpenIdTokeninfo::createFromAuthorizationCode(
25
                ['code' => $authToken],
26
                $this->clientId,
27
                $this->clientSecret,
28
                $this->apiContext
29
            );
30
        } catch (Exception $e) {
31
            $this->logger->error('Error on PayPal::getAccessTokenFromAuthToken = ' . $e->getMessage());
32
            return null;
33
        }
34
        return $accessToken;
35
    }
36
37
    /**
38
     * refreshToken
39
     *
40
     * @param string $refreshToken
41
     * @return OpenIdTokeninfo|null
42
     */
43
    public function refreshToken(string $refreshToken) : ?OpenIdTokeninfo
44
    {
45
        try {
46
            $tokenInfo = new OpenIdTokeninfo();
47
            $tokenInfo = $tokenInfo->createFromRefreshToken(['refresh_token' => $refreshToken], $this->apiContext);
0 ignored issues
show
Documentation introduced by
$this->apiContext is of type object<PayPal\Rest\ApiContext>, but the function expects a object<PayPal\Api\APIContext>|null.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
48
        } catch (Exception $e) {
49
            $this->logger->error('Error on PayPal::refreshToken = ' . $e->getMessage());
50
            return null;
51
        }
52
        return $tokenInfo;
53
    }
54
55
    /**
56
     * @param OpenIdTokeninfo $tokenInfo
57
     * @return OpenIdUserinfo|null
58
     */
59
    public function getUserInfo(OpenIdTokeninfo $tokenInfo) : ?OpenIdUserinfo
60
    {
61
        try {
62
            $params = ['access_token' => $tokenInfo->getAccessToken()];
63
            $userInfo = OpenIdUserinfo::getUserinfo($params, $this->apiContext);
64
        } catch (Exception $e) {
65
            $this->logger->error('Error on PayPal::getUserInfo = ' . $e->getMessage());
66
            return null;
67
        }
68
        return $userInfo;
69
    }
70
71
    /**
72
     * @param string $refreshToken
73
     * @return OpenIdUserinfo|null
74
     */
75
    public function getUserInfoFromRefreshToken(string $refreshToken) : ?OpenIdUserinfo
76
    {
77
        try {
78
            $tokenInfo = $this->refreshToken($refreshToken);
79
            if ($tokenInfo) {
80
                $userInfo = $this->getUserInfo($tokenInfo);
81
            }
82
        } catch (Exception $e) {
83
            $this->logger->error('Error on PayPal::getUserInfoFromRefreshToken = ' . $e->getMessage());
84
            return null;
85
        }
86
        return $userInfo ?? null;
87
    }
88
}
89