1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* This file is part of tenside/core. |
5
|
|
|
* |
6
|
|
|
* (c) Christian Schiffler <[email protected]> |
7
|
|
|
* |
8
|
|
|
* For the full copyright and license information, please view the LICENSE |
9
|
|
|
* file that was distributed with this source code. |
10
|
|
|
* |
11
|
|
|
* This project is provided in good faith and hope to be usable by anyone. |
12
|
|
|
* |
13
|
|
|
* @package tenside/core |
14
|
|
|
* @author Christian Schiffler <[email protected]> |
15
|
|
|
* @copyright 2015 Christian Schiffler <[email protected]> |
16
|
|
|
* @license https://github.com/tenside/core/blob/master/LICENSE MIT |
17
|
|
|
* @link https://github.com/tenside/core |
18
|
|
|
* @filesource |
19
|
|
|
*/ |
20
|
|
|
|
21
|
|
|
namespace Tenside\Core\Composer; |
22
|
|
|
|
23
|
|
|
use Tenside\Core\Util\JsonFile; |
24
|
|
|
|
25
|
|
|
/** |
26
|
|
|
* This class abstracts the auth.json file manipulation. |
27
|
|
|
*/ |
28
|
|
|
class AuthJson extends JsonFile |
29
|
|
|
{ |
30
|
|
|
/** |
31
|
|
|
* Const for github oauth tokens. |
32
|
|
|
*/ |
33
|
|
|
const GITHUB_OAUTH_KEY = 'github-oauth'; |
34
|
|
|
|
35
|
|
|
/** |
36
|
|
|
* Const for gitlab oauth tokens. |
37
|
|
|
*/ |
38
|
|
|
const GITLAB_OAUTH_KEY = 'gitlab-oauth'; |
39
|
|
|
|
40
|
|
|
/** |
41
|
|
|
* Const for gitlab private tokens. |
42
|
|
|
*/ |
43
|
|
|
const GITLAB_PRIVATE_KEY = 'gitlab-token'; |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* Const for bitbucket tokens. |
47
|
|
|
*/ |
48
|
|
|
const BITBUCKET_OAUTH_KEY = 'bitbucket-oauth'; |
49
|
|
|
|
50
|
|
|
/** |
51
|
|
|
* Const for htt-basic auth. |
52
|
|
|
*/ |
53
|
|
|
const HTTP_BASIC_KEY = 'http-basic'; |
54
|
|
|
|
55
|
|
|
/** |
56
|
|
|
* Set a github OAuth token. |
57
|
|
|
* |
58
|
|
|
* @param string $token The token. |
59
|
|
|
* |
60
|
|
|
* @param string $domain The domain. |
61
|
|
|
* |
62
|
|
|
* @return AuthJson |
63
|
|
|
*/ |
64
|
|
|
public function setGithubOAuthToken($token, $domain = 'github.com') |
65
|
|
|
{ |
66
|
|
|
$this->set(self::GITHUB_OAUTH_KEY . '/' . $this->escape($domain), $token); |
67
|
|
|
|
68
|
|
|
return $this; |
69
|
|
|
} |
70
|
|
|
|
71
|
|
|
/** |
72
|
|
|
* Get a github OAuth token. |
73
|
|
|
* |
74
|
|
|
* @param string $domain The domain. |
75
|
|
|
* |
76
|
|
|
* @return string|null |
|
|
|
|
77
|
|
|
*/ |
78
|
|
|
public function getGithubOAuthToken($domain = 'github.com') |
79
|
|
|
{ |
80
|
|
|
return $this->get(self::GITHUB_OAUTH_KEY . '/' . $this->escape($domain)); |
81
|
|
|
} |
82
|
|
|
|
83
|
|
|
/** |
84
|
|
|
* Unset a github OAuth token. |
85
|
|
|
* |
86
|
|
|
* @param string $domain The domain. |
87
|
|
|
* |
88
|
|
|
* @return AuthJson |
89
|
|
|
*/ |
90
|
|
|
public function removeGithubOAuthToken($domain = 'github.com') |
91
|
|
|
{ |
92
|
|
|
$this->remove(self::GITHUB_OAUTH_KEY . '/' . $this->escape($domain)); |
93
|
|
|
|
94
|
|
|
return $this; |
95
|
|
|
} |
96
|
|
|
|
97
|
|
|
/** |
98
|
|
|
* Set a gitlab OAuth token. |
99
|
|
|
* |
100
|
|
|
* @param string $token The token. |
101
|
|
|
* |
102
|
|
|
* @param string $domain The domain. |
103
|
|
|
* |
104
|
|
|
* @return AuthJson |
105
|
|
|
*/ |
106
|
|
|
public function setGitlabOAuthToken($token, $domain = 'gitlab.com') |
107
|
|
|
{ |
108
|
|
|
$this->set(self::GITLAB_OAUTH_KEY . '/' . $this->escape($domain), $token); |
109
|
|
|
|
110
|
|
|
return $this; |
111
|
|
|
} |
112
|
|
|
|
113
|
|
|
/** |
114
|
|
|
* Get a gitlab OAuth token. |
115
|
|
|
* |
116
|
|
|
* @param string $domain The domain. |
117
|
|
|
* |
118
|
|
|
* @return string|null |
|
|
|
|
119
|
|
|
*/ |
120
|
|
|
public function getGitlabOAuthToken($domain = 'gitlab.com') |
121
|
|
|
{ |
122
|
|
|
return $this->get(self::GITLAB_OAUTH_KEY . '/' . $this->escape($domain)); |
123
|
|
|
} |
124
|
|
|
|
125
|
|
|
/** |
126
|
|
|
* Unset a gitlab OAuth token. |
127
|
|
|
* |
128
|
|
|
* @param string $domain The domain. |
129
|
|
|
* |
130
|
|
|
* @return AuthJson |
131
|
|
|
*/ |
132
|
|
|
public function removeGitlabOAuthToken($domain = 'gitlab.com') |
133
|
|
|
{ |
134
|
|
|
$this->remove(self::GITLAB_OAUTH_KEY . '/' . $this->escape($domain)); |
135
|
|
|
|
136
|
|
|
return $this; |
137
|
|
|
} |
138
|
|
|
|
139
|
|
|
/** |
140
|
|
|
* Set a gitlab private token. |
141
|
|
|
* |
142
|
|
|
* @param string $token The token. |
143
|
|
|
* |
144
|
|
|
* @param string $domain The domain. |
145
|
|
|
* |
146
|
|
|
* @return AuthJson |
147
|
|
|
*/ |
148
|
|
|
public function setGitlabPrivateToken($token, $domain = 'gitlab.com') |
149
|
|
|
{ |
150
|
|
|
$this->set(self::GITLAB_PRIVATE_KEY . '/' . $this->escape($domain), $token); |
151
|
|
|
|
152
|
|
|
return $this; |
153
|
|
|
} |
154
|
|
|
|
155
|
|
|
/** |
156
|
|
|
* Get a gitlab private token. |
157
|
|
|
* |
158
|
|
|
* @param string $domain The domain. |
159
|
|
|
* |
160
|
|
|
* @return string|null |
|
|
|
|
161
|
|
|
*/ |
162
|
|
|
public function getGitlabPrivateToken($domain = 'gitlab.com') |
163
|
|
|
{ |
164
|
|
|
return $this->get(self::GITLAB_PRIVATE_KEY . '/' . $this->escape($domain)); |
165
|
|
|
} |
166
|
|
|
|
167
|
|
|
/** |
168
|
|
|
* Unset a gitlab private token. |
169
|
|
|
* |
170
|
|
|
* @param string $domain The domain. |
171
|
|
|
* |
172
|
|
|
* @return AuthJson |
173
|
|
|
*/ |
174
|
|
|
public function removeGitlabPrivateToken($domain = 'gitlab.com') |
175
|
|
|
{ |
176
|
|
|
$this->remove(self::GITLAB_PRIVATE_KEY . '/' . $this->escape($domain)); |
177
|
|
|
|
178
|
|
|
return $this; |
179
|
|
|
} |
180
|
|
|
|
181
|
|
|
/** |
182
|
|
|
* Set Bitbucket OAuth. |
183
|
|
|
* |
184
|
|
|
* @param string $key The consumer key. |
185
|
|
|
* |
186
|
|
|
* @param string $secret The consumer secret. |
187
|
|
|
* |
188
|
|
|
* @param string $domain The domain. |
189
|
|
|
* |
190
|
|
|
* @return AuthJson |
191
|
|
|
*/ |
192
|
|
|
public function setBitbucketOAuth($key, $secret, $domain = 'bitbucket.org') |
193
|
|
|
{ |
194
|
|
|
$this->set( |
195
|
|
|
self::BITBUCKET_OAUTH_KEY . '/' . $this->escape($domain), |
196
|
|
|
['consumer-key' => $key, 'consumer-secret' => $secret] |
197
|
|
|
); |
198
|
|
|
|
199
|
|
|
return $this; |
200
|
|
|
} |
201
|
|
|
|
202
|
|
|
/** |
203
|
|
|
* Get Bitbucket OAuth key. |
204
|
|
|
* |
205
|
|
|
* @param string $domain The domain. |
206
|
|
|
* |
207
|
|
|
* @return string|null |
|
|
|
|
208
|
|
|
*/ |
209
|
|
|
public function getBitbucketOAuthKey($domain = 'bitbucket.org') |
210
|
|
|
{ |
211
|
|
|
return $this->get(self::BITBUCKET_OAUTH_KEY . '/' . $this->escape($domain) . '/consumer-key'); |
212
|
|
|
} |
213
|
|
|
|
214
|
|
|
/** |
215
|
|
|
* Get Bitbucket OAuth secret. |
216
|
|
|
* |
217
|
|
|
* @param string $domain The domain. |
218
|
|
|
* |
219
|
|
|
* @return string|null |
|
|
|
|
220
|
|
|
*/ |
221
|
|
|
public function getBitbucketOAuthSecret($domain = 'bitbucket.org') |
222
|
|
|
{ |
223
|
|
|
return $this->get(self::BITBUCKET_OAUTH_KEY . '/' . $this->escape($domain) . '/consumer-secret'); |
224
|
|
|
} |
225
|
|
|
|
226
|
|
|
/** |
227
|
|
|
* Unset a Bitbucket token. |
228
|
|
|
* |
229
|
|
|
* @param string $domain The domain. |
230
|
|
|
* |
231
|
|
|
* @return AuthJson |
232
|
|
|
*/ |
233
|
|
|
public function removeBitbucketOAuth($domain = 'bitbucket.org') |
234
|
|
|
{ |
235
|
|
|
$this->remove(self::BITBUCKET_OAUTH_KEY . '/' . $this->escape($domain)); |
236
|
|
|
|
237
|
|
|
return $this; |
238
|
|
|
} |
239
|
|
|
|
240
|
|
|
/** |
241
|
|
|
* Set http-basic auth. |
242
|
|
|
* |
243
|
|
|
* @param string $username The consumer key. |
244
|
|
|
* |
245
|
|
|
* @param string $password The consumer secret. |
246
|
|
|
* |
247
|
|
|
* @param string $domain The domain. |
248
|
|
|
* |
249
|
|
|
* @return AuthJson |
250
|
|
|
*/ |
251
|
|
|
public function setHttpBasic($username, $password, $domain) |
252
|
|
|
{ |
253
|
|
|
$this->set( |
254
|
|
|
self::HTTP_BASIC_KEY . '/' . $this->escape($domain), |
255
|
|
|
['username' => $username, 'password' => $password] |
256
|
|
|
); |
257
|
|
|
|
258
|
|
|
return $this; |
259
|
|
|
} |
260
|
|
|
|
261
|
|
|
/** |
262
|
|
|
* Get http-basic auth user name. |
263
|
|
|
* |
264
|
|
|
* @param string $domain The domain. |
265
|
|
|
* |
266
|
|
|
* @return string|null |
|
|
|
|
267
|
|
|
*/ |
268
|
|
|
public function getHttpBasicUser($domain) |
269
|
|
|
{ |
270
|
|
|
return $this->get(self::HTTP_BASIC_KEY . '/' . $this->escape($domain) . '/username'); |
271
|
|
|
} |
272
|
|
|
|
273
|
|
|
/** |
274
|
|
|
* Get http-basic auth password. |
275
|
|
|
* |
276
|
|
|
* @param string $domain The domain. |
277
|
|
|
* |
278
|
|
|
* @return string|null |
|
|
|
|
279
|
|
|
*/ |
280
|
|
|
public function getHttpBasicPassword($domain) |
281
|
|
|
{ |
282
|
|
|
return $this->get(self::HTTP_BASIC_KEY . '/' . $this->escape($domain) . '/password'); |
283
|
|
|
} |
284
|
|
|
|
285
|
|
|
/** |
286
|
|
|
* Unset http-basic auth. |
287
|
|
|
* |
288
|
|
|
* @param string $domain The domain. |
289
|
|
|
* |
290
|
|
|
* @return AuthJson |
291
|
|
|
*/ |
292
|
|
|
public function removeHttpBasic($domain) |
293
|
|
|
{ |
294
|
|
|
$this->remove(self::HTTP_BASIC_KEY . '/' . $this->escape($domain)); |
295
|
|
|
|
296
|
|
|
return $this; |
297
|
|
|
} |
298
|
|
|
} |
299
|
|
|
|
This check compares the return type specified in the
@return
annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.If the return type contains the type array, this check recommends the use of a more specific type like
String[]
orarray<String>
.