Completed
Pull Request — master (#1)
by Alex
35:34
created

EloquaProvider::checkResponse()   B

Complexity

Conditions 4
Paths 3

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 4.0072

Importance

Changes 0
Metric Value
dl 0
loc 22
ccs 12
cts 13
cp 0.9231
rs 8.9197
c 0
b 0
f 0
cc 4
eloc 15
nc 3
nop 2
crap 4.0072
1
<?php
2
3
namespace Permiakov\OAuth2\Client\Provider;
4
5
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
6
use League\OAuth2\Client\Tool\BearerAuthorizationTrait;
7
use Psr\Http\Message\ResponseInterface;
8
use League\OAuth2\Client\Provider\AbstractProvider;
9
use League\OAuth2\Client\Token\AccessToken;
10
11
class EloquaProvider extends AbstractProvider
12
{
13
    use BearerAuthorizationTrait;
14
15
    /**
16
     * @return string
17
     */
18 1
    public function getBaseAuthorizationUrl()
19
    {
20 1
        return 'https://login.eloqua.com/auth/oauth2/authorize';
21
    }
22
23
    /**
24
     * @param array $params
25
     * @return string
26
     */
27 1
    public function getBaseAccessTokenUrl(array $params)
28
    {
29 1
        return 'https://login.eloqua.com/auth/oauth2/token';
30
    }
31
32
    /**
33
     * @param AccessToken $token
34
     * @return string
35
     */
36 1
    public function getResourceOwnerDetailsUrl(AccessToken $token)
37
    {
38 1
        return 'https://login.eloqua.com/id';
39
    }
40
41
    /**
42
     * @return array
43
     */
44 1
    protected function getDefaultScopes()
45
    {
46 1
        return array('full');
47
    }
48
49
    /**
50
     * Authorization and access tokens requests have to be signed with basic auth header
51
     * @return array
52
     */
53 1
    protected function getDefaultHeaders()
54
    {
55 1
        return array('Authorization' => 'Basic ' . base64_encode($this->clientId . ':' . $this->clientSecret));
56
    }
57
58
    /**
59
     * @param ResponseInterface $response
60
     * @param array|string $data
61
     * @throws IdentityProviderException
62
     */
63 1
    protected function checkResponse(ResponseInterface $response, $data)
64
    {
65 1
        $statusCode = $response->getStatusCode();
66 1
        if($statusCode < 200 || $statusCode >= 300){
67 1
            throw new IdentityProviderException(
68 1
                'Eloqua response error',
69 1
                $statusCode,
70 1
                $response->getBody()
71 1
            );
72 1
        }
73 1
        if (isset($data['error'])) {
74 1
            throw new IdentityProviderException(
75
                sprintf(
76
                    'Error: %s. Description: %s',
77
                    $data['error'],
78
                    $data['error_description']
79
                ),
80
                $statusCode,
81
                $response->getBody()
82
            );
83 1
        }
84
    }
85 1
86
    /**
87 1
     * @param array $response
88
     * @param AccessToken $token
89
     * @return EloquaResourceOwner
90
     */
91
    protected function createResourceOwner(array $response, AccessToken $token)
92
    {
93 1
        $owner = $this->getEloquaResourceOwnerPrototype();
94
95 1
        return $owner->exchangeArray($response);
96
    }
97
98
    /**
99
     * @return EloquaResourceOwner
100
     */
101
    protected function getEloquaResourceOwnerPrototype()
102
    {
103
        return new EloquaResourceOwner();
104
    }
105
}
106