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.

ClientTrait::get()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 6
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 11
ccs 6
cts 6
cp 1
crap 2
rs 10
1
<?php
2
3
namespace AlibabaCloud\Client\Traits;
4
5
use AlibabaCloud\Client\SDK;
6
use AlibabaCloud\Client\AlibabaCloud;
7
use AlibabaCloud\Client\Clients\Client;
8
use AlibabaCloud\Client\Clients\StsClient;
9
use AlibabaCloud\Client\Filter\ClientFilter;
10
use AlibabaCloud\Client\Clients\AccessKeyClient;
11
use AlibabaCloud\Client\Clients\EcsRamRoleClient;
12
use AlibabaCloud\Client\Clients\RamRoleArnClient;
13
use AlibabaCloud\Client\Clients\RsaKeyPairClient;
14
use AlibabaCloud\Client\Clients\BearerTokenClient;
15
use AlibabaCloud\Client\Exception\ClientException;
16
use AlibabaCloud\Client\Signature\SignatureInterface;
17
use AlibabaCloud\Client\Credentials\Ini\IniCredential;
18
use AlibabaCloud\Client\Credentials\CredentialsInterface;
19
use AlibabaCloud\Client\Credentials\Providers\CredentialsProvider;
20
21
/**
22
 * Trait of the manage clients.
23
 *
24
 * @package   AlibabaCloud\Client\Traits
25
 *
26
 * @mixin     AlibabaCloud
27
 */
28
trait ClientTrait
29
{
30
    /**
31
     * @var array Containers of Clients
32
     */
33
    protected static $clients = [];
34
35
    /**
36
     * @param string $clientName
37
     * @param Client $client
38
     *
39
     * @return Client
40
     * @throws ClientException
41
     */
42 130
    public static function set($clientName, Client $client)
43
    {
44 130
        ClientFilter::clientName($clientName);
45
46 128
        return self::$clients[\strtolower($clientName)] = $client;
47
    }
48
49
    /**
50
     * Get all clients.
51
     *
52
     * @return array
53
     */
54 108
    public static function all()
55
    {
56 108
        return self::$clients;
57
    }
58
59
    /**
60
     * Delete the client by specifying name.
61
     *
62
     * @param string $clientName
63
     *
64
     * @throws ClientException
65
     */
66 40
    public static function del($clientName)
67
    {
68 40
        ClientFilter::clientName($clientName);
69
70 38
        unset(self::$clients[\strtolower($clientName)]);
71 38
    }
72
73
    /**
74
     * Delete all clients.
75
     *
76
     * @return void
77
     */
78 25
    public static function flush()
79
    {
80 25
        self::$clients         = [];
81 25
        self::$defaultRegionId = null;
0 ignored issues
show
Bug Best Practice introduced by
The property defaultRegionId does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
82 25
    }
83
84
    /**
85
     * @codeCoverageIgnore
86
     * @throws ClientException
87
     * @deprecated
88
     */
89
    public static function getGlobalClient()
90
    {
91
        return self::getDefaultClient();
92
    }
93
94
    /**
95
     * Get the default client.
96
     *
97
     * @return Client
98
     * @throws ClientException
99
     */
100 6
    public static function getDefaultClient()
101
    {
102 6
        return self::get(CredentialsProvider::getDefaultName());
103
    }
104
105
    /**
106
     * Get the Client instance by name.
107
     *
108
     * @param string $clientName
109
     *
110
     * @return Client
111
     * @throws ClientException
112
     */
113 117
    public static function get($clientName)
114
    {
115 117
        ClientFilter::clientName($clientName);
116
117 115
        if (self::has($clientName)) {
118 110
            return self::$clients[\strtolower($clientName)];
119
        }
120
121 6
        throw new ClientException(
122 6
            "Client '$clientName' not found",
123
            SDK::CLIENT_NOT_FOUND
124 6
        );
125
    }
126
127
    /**
128
     * Determine whether there is a client.
129
     *
130
     * @param string $clientName
131
     *
132
     * @return bool
133
     * @throws ClientException
134
     */
135 132
    public static function has($clientName)
136
    {
137 132
        ClientFilter::clientName($clientName);
138
139 130
        return isset(self::$clients[\strtolower($clientName)]);
140
    }
141
142
    /**
143
     * A list of additional files to load.
144
     *
145
     * @return array
146
     * @throws ClientException when a file has a syntax error or does not exist or is not readable
147
     */
148 31
    public static function load()
149
    {
150 31
        if (\func_get_args() === []) {
151 1
            return (new IniCredential())->load();
152
        }
153 30
        $list = [];
154 30
        foreach (\func_get_args() as $filename) {
155 30
            $list[$filename] = (new IniCredential($filename))->load();
156 14
        }
157
158 14
        return $list;
159
    }
160
161
    /**
162
     * Custom Client.
163
     *
164
     * @param CredentialsInterface $credentials
165
     * @param SignatureInterface   $signature
166
     *
167
     * @return Client
168
     */
169 6
    public static function client(CredentialsInterface $credentials, SignatureInterface $signature)
170
    {
171 6
        return new Client($credentials, $signature);
172
    }
173
174
    /**
175
     * Use the AccessKey to complete the authentication.
176
     *
177
     * @param string $accessKeyId
178
     * @param string $accessKeySecret
179
     *
180
     * @return AccessKeyClient
181
     * @throws ClientException
182
     */
183 92
    public static function accessKeyClient($accessKeyId, $accessKeySecret)
184
    {
185 92
        if (null === $accessKeyId || strpos($accessKeyId, ' ') !== false) {
186
            throw new ClientException(
187
                'AccessKey ID format is invalid',
188
                SDK::INVALID_ARGUMENT
189
            );
190
        }
191
192 92
        if (null === $accessKeySecret || strpos($accessKeySecret, ' ') !== false) {
193
            throw new ClientException(
194
                'AccessKey Secret format is invalid',
195
                SDK::INVALID_ARGUMENT
196
            );
197
        }
198
199 92
        return new AccessKeyClient($accessKeyId, $accessKeySecret);
200
    }
201
202
    /**
203
     * Use the AssumeRole of the RAM account to complete  the authentication.
204
     *
205
     * @param string       $accessKeyId
206
     * @param string       $accessKeySecret
207
     * @param string       $roleArn
208
     * @param string       $roleSessionName
209
     * @param string|array $policy
210
     *
211
     * @return RamRoleArnClient
212
     * @throws ClientException
213
     */
214 9
    public static function ramRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy = '')
215
    {
216 9
        return new RamRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy);
217
    }
218
219
    /**
220
     * Use the RAM role of an ECS instance to complete the authentication.
221
     *
222
     * @param string $roleName
223
     *
224
     * @return EcsRamRoleClient
225
     * @throws ClientException
226
     */
227 13
    public static function ecsRamRoleClient($roleName)
228
    {
229 13
        return new EcsRamRoleClient($roleName);
230
    }
231
232
    /**
233
     * Use the Bearer Token to complete the authentication.
234
     *
235
     * @param string $bearerToken
236
     *
237
     * @return BearerTokenClient
238
     * @throws ClientException
239
     */
240 17
    public static function bearerTokenClient($bearerToken)
241
    {
242 17
        return new BearerTokenClient($bearerToken);
243
    }
244
245
    /**
246
     * Use the STS Token to complete the authentication.
247
     *
248
     * @param string $accessKeyId     Access key ID
249
     * @param string $accessKeySecret Access Key Secret
250
     * @param string $securityToken   Security Token
251
     *
252
     * @return StsClient
253
     * @throws ClientException
254
     */
255 5
    public static function stsClient($accessKeyId, $accessKeySecret, $securityToken = '')
256
    {
257 5
        return new StsClient($accessKeyId, $accessKeySecret, $securityToken);
258
    }
259
260
    /**
261
     * Use the RSA key pair to complete the authentication (supported only on Japanese site)
262
     *
263
     * @param string $publicKeyId
264
     * @param string $privateKeyFile
265
     *
266
     * @return RsaKeyPairClient
267
     * @throws ClientException
268
     */
269 11
    public static function rsaKeyPairClient($publicKeyId, $privateKeyFile)
270
    {
271 11
        return new RsaKeyPairClient($publicKeyId, $privateKeyFile);
272
    }
273
}
274