proxy; } public function parseFQDN(string $fqdn): void { $parsed = array_filter(parse_url($fqdn)); /** * Was not possible to parse the proxy's FQDN (@see https://en.wikipedia.org/wiki/Fully_qualified_domain_name) or it is not a HTTP scheme, so let's return it as-is. */ if (!$parsed || (isset($parsed['scheme']) && $parsed['scheme'] !== 'http' && $parsed['scheme'] !== 'https') ) { $this->proxy = $fqdn; return; } $this->auth = $this->parseAuth($parsed); $this->proxy = $this->parseHost($parsed); return; } public function parseAuth(array $parsed = []): ?string { if (!isset($parsed['user']) || !isset($parsed['pass'])) { return null; } return base64_encode("{$parsed['user']}:{$parsed['pass']}"); } public function parseHost(array $parsed = []): ?string { if (!isset($parsed['host']) || !isset($parsed['port'])) { return null; } return "tcp://{$parsed['host']}:{$parsed['port']}"; } public function getAuth(): ?string { return $this->auth; } public function getProxy(): ?string { return $this->proxy; } }