lib/php/libsdk/SDK/Build/Dependency/Fetcher.php (46 lines of code) (raw):

<?php namespace SDK\Build\Dependency; use SDK\{Exception, FileOps}; class Fetcher { use FileOps; protected $host; protected $port; protected $stability; protected $arch; protected $series; protected $scheme; public function __construct(string $host, int $port, string $scheme = "https", string $arch = NULL, string $stability = NULL, Series $series = NULL) {/*{{{*/ $this->stability = $stability; $this->arch = $arch; $this->host = $host; $this->port = $port; $this->scheme = $scheme; $this->series = $series; }/*}}}*/ public function getSeries() : Series {/*{{{*/ return $this->series; }/*}}}*/ public function setSeries(Series $series) : void {/*{{{*/ $this->series = $series; }/*}}}*/ /* TODO more robust implementation. */ /* TODO implement indicator. */ public function getByUri(string $uri, int $retries = 3) : string {/*{{{*/ $url = "{$this->scheme}://{$this->host}:{$this->port}$uri"; $ret = false; retry: try { $ret = $this->download($url); } catch (Exception $e) { if ($retries > 0) { sleep(1); $retries--; goto retry; } } return $ret; }/*}}}*/ /*protected function fetch($uri) : string { $fp = @fsockopen($this->host, $this->port); if (!$fp) { throw new Exception("Couldn't connect to windows.php.net"); } $hdrs = "GET $uri HTTP/1.0\r\nHost: {$this->host}\r\nConnection: close\r\n\r\n"; $r = fwrite($fp, $hdrs); if (false === $r || $r != strlen($hdrs)) { fclose($fp); throw new Exception("Request to windows.php.net failed"); } $r = ''; while (!feof($fp)) { $r .= fread($fp, 32768); } if (preg_match(',HTTP/\d\.\d 200 .*,', $r) < 1) { var_dump($r); fclose($fp); throw new Exception("Invalid response from {$this->host}:{$this->port} while fetching '$uri'"); } fclose($fp); $ret = substr($r, strpos($r, "\r\n")); return trim($ret); }*/ } /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */