blob: 5c966aa9c66112baae9c3d0e45c8ebe1ea4695fd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?php
namespace PayPalCheckoutSdk\Core;
use PayPalHttp\HttpRequest;
use PayPalHttp\Injector;
use PayPalHttp\HttpClient;
class AuthorizationInjector implements Injector
{
private $client;
private $environment;
private $refreshToken;
public $accessToken;
public function __construct(HttpClient $client, PayPalEnvironment $environment, $refreshToken)
{
$this->client = $client;
$this->environment = $environment;
$this->refreshToken = $refreshToken;
}
public function inject($request)
{
if (!$this->hasAuthHeader($request) && !$this->isAuthRequest($request))
{
if (is_null($this->accessToken) || $this->accessToken->isExpired())
{
$this->accessToken = $this->fetchAccessToken();
}
$request->headers['Authorization'] = 'Bearer ' . $this->accessToken->token;
}
}
private function fetchAccessToken()
{
$accessTokenResponse = $this->client->execute(new AccessTokenRequest($this->environment, $this->refreshToken));
$accessToken = $accessTokenResponse->result;
return new AccessToken($accessToken->access_token, $accessToken->token_type, $accessToken->expires_in);
}
private function isAuthRequest($request)
{
return $request instanceof AccessTokenRequest || $request instanceof RefreshTokenRequest;
}
private function hasAuthHeader(HttpRequest $request)
{
return array_key_exists("Authorization", $request->headers);
}
}
|