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.

Code Duplication    Length = 100-102 lines in 2 locations

src/Authentication/AdnxStrategy.php 1 location

@@ 12-111 (lines=100) @@
9
/**
10
 * Class AdnxStrategy
11
 */
12
class AdnxStrategy implements AuthStrategyInterface
13
{
14
15
    const NAME = 'adnx_auth_strategy';
16
17
    const BASE_URL = 'https://api.demdex.com/oauth/token';
18
19
    const CACHE_NAMESPACE = 'adnx_auth_token';
20
    const TOKEN_EXPIRATION = 110;
21
22
    /** @var Cache */
23
    protected $cache;
24
25
    /**
26
     * AdnxStrategy constructor.
27
     *
28
     * @param ClientInterface $clientInterface
29
     * @param Cache|null $cache
30
     */
31
    public function __construct(ClientInterface $clientInterface, Cache $cache)
32
    {
33
        $this->cache = $cache;
34
        $this->client = $clientInterface;
35
    }
36
37
    /**
38
     * @param string $username
39
     * @param string $password
40
     * @param bool $cache
41
     * @param bool $refresh
42
     * @return mixed
43
     * @throws AuthException
44
     */
45
    public function authenticate($clientId, $secretKey, $username, $password, $cache = true, $refresh = false)
46
    {
47
        $cacheKey = self::CACHE_NAMESPACE . sha1($username . $password . self::BASE_URL);
48
49
        if ($cache) {
50
            if ($this->cache->contains($cacheKey)) {
51
                return $this->cache->fetch($cacheKey);
52
            }
53
        }
54
55
        $headerAuth = base64_encode(
56
            sprintf(
57
                '%s:%s',
58
                $clientId,
59
                $secretKey
60
            )
61
        );
62
63
        $response = $this->client->request(
64
            'POST',
65
            self::BASE_URL,
66
            [
67
                'headers' =>
68
                    [
69
                        'Authorization' => 'Basic ' . $headerAuth
70
                    ],
71
                    'form_params' =>
72
                    [
73
                        'grant_type' => $refresh ? 'refresh_token' : 'password',
74
                        'username' => $username,
75
                        'password' => $password,
76
                    ]
77
            ]
78
        );
79
80
81
        $content = $response->getBody()->getContents();
82
        $response->getBody()->rewind();
83
84
        $contentArray = json_decode($content, true);
85
86
        if (!isset($contentArray["access_token"])) {
87
            throw new \Exception(AuthException::authFailed('No field access token available in json response'));
88
        }
89
90
        $token = $contentArray["access_token"];
91
92
        if ($cache) {
93
            $this->cache->save($cacheKey, $token, self::TOKEN_EXPIRATION);
94
        }
95
96
        return $token;
97
    }
98
99
    /**
100
     * @return string
101
     */
102
    public function getSlug()
103
    {
104
        return self::NAME;
105
    }
106
107
    public function authenticateJwtToken($clientId, $clientSecret, $jwtToken, $cache = true)
108
    {
109
        // TODO: Implement authenticateJwtToken() method.
110
    }
111
}
112

src/Authentication/SandboxStrategy.php 1 location

@@ 13-114 (lines=102) @@
10
/**
11
 * Class SandboxStrategy
12
 */
13
class SandboxStrategy implements AuthStrategyInterface
14
{
15
16
    const NAME = 'adnx_auth_strategy';
17
18
    const BASE_URL = 'https://api-beta.demdex.com/oauth/token';
19
20
    const CACHE_NAMESPACE = 'adnx_auth_token';
21
    const TOKEN_EXPIRATION = 110;
22
23
    /** @var Cache */
24
    protected $cache;
25
26
    /**
27
     * AdnxStrategy constructor.
28
     *
29
     * @param ClientInterface $clientInterface
30
     * @param Cache|null $cache
31
     */
32
    public function __construct(ClientInterface $clientInterface, Cache $cache)
33
    {
34
        $this->cache = $cache;
35
        $this->client = $clientInterface;
36
    }
37
38
    /**
39
     * @param string $clientId
40
     * @param string $secretKey
41
     * @param string $username
42
     * @param $password
43
     * @param bool $cache
44
     * @param bool $refresh
45
     * @return mixed
46
     * @throws AuthException
47
     */
48
    public function authenticate($clientId, $secretKey, $username, $password, $cache = true, $refresh = false)
49
    {
50
51
        $cacheKey = self::CACHE_NAMESPACE . sha1($username . $password . self::BASE_URL);
52
53
        if ($cache) {
54
            if ($this->cache->contains($cacheKey)) {
55
                return $this->cache->fetch($cacheKey);
56
            }
57
        }
58
59
        $headerAuth = base64_encode(
60
            sprintf(
61
                '%s:%s',
62
                $clientId,
63
                $secretKey
64
            )
65
        );
66
67
        $response = $this->client->request(
68
            'POST',
69
            self::BASE_URL,
70
            [
71
                'headers' =>
72
                    [
73
                        'Authorization' => 'Basic ' . $headerAuth
74
                    ],
75
                    'form_params' =>
76
                    [
77
                        'grant_type' => $refresh ? 'refresh_token' : 'password',
78
                        'username' => $username,
79
                        'password' => $password,
80
                    ]
81
            ]
82
        );
83
84
        $content = $response->getBody()->getContents();
85
        $response->getBody()->rewind();
86
87
        $contentArray = json_decode($content, true);
88
89
        if (!isset($contentArray["access_token"])) {
90
            throw new \Exception(AuthException::authFailed('No field access token available in json response'));
91
        }
92
93
        $token = $contentArray["access_token"];
94
95
        if ($cache) {
96
            $this->cache->save($cacheKey, $token, self::TOKEN_EXPIRATION);
97
        }
98
99
        return $token;
100
    }
101
102
    /**
103
     * @return string
104
     */
105
    public function getSlug()
106
    {
107
        return self::NAME;
108
    }
109
110
    public function authenticateJwtToken($clientId, $clientSecret, $jwtToken, $cache = true)
111
    {
112
        // TODO: Implement authenticateJwtToken() method.
113
    }
114
}
115