Completed
Pull Request — master (#17)
by Cesar
10:49
created

IdentityService   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 6
dl 0
loc 86
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getAccessToken() 0 6 1
A getAccessTokenFromAuthToken() 0 15 2
A refreshToken() 0 11 2
A getUserInfo() 0 11 2
A getUserInfoFromRefreshToken() 0 13 3
1
<?php
2
3
namespace App\Service\Paypal;
4
5
use Exception;
6
use PayPal\Api\OpenIdTokeninfo;
7
use PayPal\Api\OpenIdUserinfo;
8
use PayPal\Auth\OAuthTokenCredential;
9
use PayPal\Core\PayPalConfigManager;
10
11
/**
12
 * Class IdentityService
13
 * @package App\Service\Paypal
14
 */
15
class IdentityService extends AbstractPaypalService
16
{
17
    /**
18
     * @return string|null
19
     */
20
    public function getAccessToken(): ?string
21
    {
22
        $credential = new OAuthTokenCredential($this->clientId, $this->clientSecret);
23
        $config = PayPalConfigManager::getInstance()->getConfigHashmap();
24
        return $credential->getAccessToken($config);
25
    }
26
27
    /**
28
     * getAccessTokenFromAuthToken
29
     *
30
     * @param $authToken
31
     * @return OpenIdTokeninfo|null
32
     */
33
    public function getAccessTokenFromAuthToken($authToken) : ?OpenIdTokeninfo
34
    {
35
        try {
36
            $accessToken = OpenIdTokeninfo::createFromAuthorizationCode(
37
                ['code' => $authToken],
38
                $this->clientId,
39
                $this->clientSecret,
40
                $this->apiContext
41
            );
42
        } catch (Exception $e) {
43
            $this->logger->error('Error on PayPal::getAccessTokenFromAuthToken = ' . $e->getMessage());
44
            return null;
45
        }
46
        return $accessToken;
47
    }
48
49
    /**
50
     * refreshToken
51
     *
52
     * @param string $refreshToken
53
     * @return OpenIdTokeninfo|null
54
     */
55
    public function refreshToken(string $refreshToken) : ?OpenIdTokeninfo
56
    {
57
        try {
58
            $tokenInfo = new OpenIdTokeninfo();
59
            $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...
60
        } catch (Exception $e) {
61
            $this->logger->error('Error on PayPal::refreshToken = ' . $e->getMessage());
62
            return null;
63
        }
64
        return $tokenInfo;
65
    }
66
67
    /**
68
     * @param OpenIdTokeninfo $tokenInfo
69
     * @return OpenIdUserinfo|null
70
     */
71
    public function getUserInfo(OpenIdTokeninfo $tokenInfo) : ?OpenIdUserinfo
72
    {
73
        try {
74
            $params = ['access_token' => $tokenInfo->getAccessToken()];
75
            $userInfo = OpenIdUserinfo::getUserinfo($params, $this->apiContext);
76
        } catch (Exception $e) {
77
            $this->logger->error('Error on PayPal::getUserInfo = ' . $e->getMessage());
78
            return null;
79
        }
80
        return $userInfo;
81
    }
82
83
    /**
84
     * @param string $refreshToken
85
     * @return OpenIdUserinfo|null
86
     */
87
    public function getUserInfoFromRefreshToken(string $refreshToken) : ?OpenIdUserinfo
88
    {
89
        try {
90
            $tokenInfo = $this->refreshToken($refreshToken);
91
            if ($tokenInfo) {
92
                $userInfo = $this->getUserInfo($tokenInfo);
93
            }
94
        } catch (Exception $e) {
95
            $this->logger->error('Error on PayPal::getUserInfoFromRefreshToken = ' . $e->getMessage());
96
            return null;
97
        }
98
        return $userInfo ?? null;
99
    }
100
}
101