Test Failed
Push — master ( 3dd85e...34f16b )
by Devin
04:34 queued 10s
created

OAuth::authorizeUrl()   A

Complexity

Conditions 5
Paths 16

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
nc 16
nop 2
dl 0
loc 14
rs 9.4888
c 0
b 0
f 0
1
<?php
2
3
namespace Stripe;
4
5
abstract class OAuth
6
{
7
    /**
8
     * Generates a URL to Stripe's OAuth form.
9
     *
10
     * @param array|null $params
11
     * @param array|null $opts
12
     *
13
     * @return string The URL to Stripe's OAuth form.
14
     */
15
    public static function authorizeUrl($params = null, $opts = null)
16
    {
17
        $params = $params ?: [];
18
19
        $base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
20
21
        $params['client_id'] = self::_getClientId($params);
22
        if (!array_key_exists('response_type', $params)) {
23
            $params['response_type'] = 'code';
24
        }
25
        $query = Util\Util::encodeParameters($params);
26
27
        return $base . '/oauth/authorize?' . $query;
28
    }
29
30
    /**
31
     * Use an authoriztion code to connect an account to your platform and
32
     * fetch the user's credentials.
33
     *
34
     * @param array|null $params
35
     * @param array|null $opts
36
     *
37
     * @return StripeObject Object containing the response from the API.
38
     */
39
    public static function token($params = null, $opts = null)
40
    {
41
        $base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
42
        $requestor = new ApiRequestor(null, $base);
43
        list($response, $apiKey) = $requestor->request(
0 ignored issues
show
Unused Code introduced by
The assignment to $apiKey is unused. Consider omitting it like so list($first,,$third).

This checks looks for assignemnts to variables using the list(...) function, where not all assigned variables are subsequently used.

Consider the following code example.

<?php

function returnThreeValues() {
    return array('a', 'b', 'c');
}

list($a, $b, $c) = returnThreeValues();

print $a . " - " . $c;

Only the variables $a and $c are used. There was no need to assign $b.

Instead, the list call could have been.

list($a,, $c) = returnThreeValues();
Loading history...
44
            'post',
45
            '/oauth/token',
46
            $params,
47
            null
48
        );
49
        return Util\Util::convertToStripeObject($response->json, $opts);
0 ignored issues
show
Bug introduced by
It seems like $opts defined by parameter $opts on line 39 can also be of type null; however, Stripe\Util\Util::convertToStripeObject() does only seem to accept array, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
50
    }
51
52
    /**
53
     * Disconnects an account from your platform.
54
     *
55
     * @param array|null $params
56
     * @param array|null $opts
57
     *
58
     * @return StripeObject Object containing the response from the API.
59
     */
60
    public static function deauthorize($params = null, $opts = null)
61
    {
62
        $params = $params ?: [];
63
        $base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
64
        $requestor = new ApiRequestor(null, $base);
65
        $params['client_id'] = self::_getClientId($params);
66
        list($response, $apiKey) = $requestor->request(
0 ignored issues
show
Unused Code introduced by
The assignment to $apiKey is unused. Consider omitting it like so list($first,,$third).

This checks looks for assignemnts to variables using the list(...) function, where not all assigned variables are subsequently used.

Consider the following code example.

<?php

function returnThreeValues() {
    return array('a', 'b', 'c');
}

list($a, $b, $c) = returnThreeValues();

print $a . " - " . $c;

Only the variables $a and $c are used. There was no need to assign $b.

Instead, the list call could have been.

list($a,, $c) = returnThreeValues();
Loading history...
67
            'post',
68
            '/oauth/deauthorize',
69
            $params,
70
            null
71
        );
72
        return Util\Util::convertToStripeObject($response->json, $opts);
0 ignored issues
show
Bug introduced by
It seems like $opts defined by parameter $opts on line 60 can also be of type null; however, Stripe\Util\Util::convertToStripeObject() does only seem to accept array, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
73
    }
74
75
    private static function _getClientId($params = null)
76
    {
77
        $clientId = ($params && array_key_exists('client_id', $params)) ? $params['client_id'] : null;
78
        if ($clientId === null) {
79
            $clientId = Stripe::getClientId();
80
        }
81
        if ($clientId === null) {
82
            $msg = 'No client_id provided.  (HINT: set your client_id using '
83
              . '"Stripe::setClientId(<CLIENT-ID>)".  You can find your client_ids '
84
              . 'in your Stripe dashboard at '
85
              . 'https://dashboard.stripe.com/account/applications/settings, '
86
              . 'after registering your account as a platform. See '
87
              . 'https://stripe.com/docs/connect/standard-accounts for details, '
88
              . 'or email [email protected] if you have any questions.';
89
            throw new Error\Authentication($msg);
90
        }
91
        return $clientId;
92
    }
93
}
94