1 | <?php |
||
17 | class HttpGetRequest |
||
18 | { |
||
19 | public $origin; |
||
20 | public $scheme = 'http'; |
||
21 | public $host = 'example.com'; |
||
22 | public $port = 80; |
||
23 | public $path = '/'; |
||
24 | |||
25 | public $query = array(); |
||
26 | public $headers = array(); |
||
27 | |||
28 | public $curlOpts = array(); |
||
29 | |||
30 | public $username = null; |
||
31 | public $password = null; |
||
32 | |||
33 | public $maybePublic = false; |
||
34 | public $verbose = false; |
||
35 | |||
36 | /** @var CConfig */ |
||
37 | protected $config; |
||
38 | |||
39 | /** @internal */ |
||
40 | const TOKEN_LABEL = 'access_token'; |
||
41 | |||
42 | /** |
||
43 | * normalize url and authentication info |
||
44 | * @param string $origin domain text |
||
45 | * @param string $url |
||
46 | * @param IO\IOInterface $io |
||
47 | */ |
||
48 | 35 | public function __construct($origin, $url, IO\IOInterface $io) |
|
49 | { |
||
50 | 35 | $this->origin = $origin; |
|
51 | 35 | $this->importURL($url); |
|
52 | |||
53 | 35 | if ($this->username && $this->password) { |
|
54 | 3 | $io->setAuthentication($origin, $this->username, $this->password); |
|
55 | 35 | } elseif ($io->hasAuthentication($origin)) { |
|
56 | 2 | $auth = $io->getAuthentication($origin); |
|
57 | 2 | $this->username = $auth['username']; |
|
58 | 2 | $this->password = $auth['password']; |
|
59 | 2 | } |
|
60 | 35 | } |
|
61 | |||
62 | /** |
||
63 | * @param string $url |
||
64 | */ |
||
65 | 35 | public function importURL($url) |
|
66 | { |
||
67 | 35 | $struct = parse_url($url); |
|
68 | // @codeCoverageIgnoreStart |
||
69 | if (!$struct) { |
||
70 | throw new \InvalidArgumentException("$url is not valid URL"); |
||
71 | } |
||
72 | // @codeCoverageIgnoreEnd |
||
73 | |||
74 | 35 | $this->scheme = self::setOr($struct, 'scheme'); |
|
75 | 35 | $this->host = self::setOr($struct, 'host'); |
|
76 | 35 | $this->port = self::setOr($struct, 'port'); |
|
77 | 35 | $this->path = self::setOr($struct, 'path'); |
|
78 | 35 | $this->username = self::setOr($struct, 'user'); |
|
79 | 35 | $this->password = self::setOr($struct, 'pass'); |
|
80 | |||
81 | 35 | if (!empty($struct['query'])) { |
|
82 | 9 | parse_str($struct['query'], $this->query); |
|
83 | 9 | } |
|
84 | 35 | } |
|
85 | |||
86 | |||
87 | /** |
||
88 | * @param array $struct |
||
89 | * @param string $key |
||
90 | * @param string $default |
||
91 | * @return mixed |
||
92 | */ |
||
93 | 35 | private static function setOr(array $struct, $key, $default = null) |
|
101 | |||
102 | /** |
||
103 | * process option for RemortFileSystem |
||
104 | * @param array $options |
||
105 | * @return void |
||
106 | */ |
||
107 | 8 | public function processRFSOption(array $options) |
|
113 | |||
114 | /** |
||
115 | * @return array |
||
116 | */ |
||
117 | 10 | public function getCurlOpts() |
|
143 | |||
144 | 18 | public function getURL() |
|
164 | |||
165 | 5 | public function setConfig(CConfig $config) |
|
169 | |||
170 | 6 | public function promptAuth(HttpGetResponse $res, IO\IOInterface $io) |
|
195 | |||
196 | /** |
||
197 | * @internal |
||
198 | * @param int $privateCode 404|403 |
||
199 | * @param Composer\Util\GitHub|Composer\Util\GitLab $util |
||
200 | * @param HttpGetResponse $res |
||
201 | * @param IO\IOInterface $io |
||
202 | * @throws Composer\Downloader\TransportException |
||
203 | * @return bool |
||
204 | */ |
||
205 | 2 | public function promptAuthWithUtil($privateCode, $util, HttpGetResponse $res, IO\IOInterface $io) |
|
224 | |||
225 | /** |
||
226 | * @return string |
||
227 | */ |
||
228 | 10 | public static function genUA() |
|
244 | } |
||
245 |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.