| 
<?php
 /**
 * This file is part of the PHP Generics package.
 *
 * @package Generics
 */
 namespace Generics\Client;
 
 use Generics\Socket\ClientSocket;
 use Generics\Socket\Url;
 use Generics\Streams\HttpStream;
 
 /**
 * This class implements a HttpStream as client
 *
 * @author Maik Greubel <[email protected]>
 */
 class HttpClient extends ClientSocket implements HttpStream
 {
 use HttpClientTrait;
 
 /**
 * Whether to use https instead of http
 *
 * @var boolean
 */
 private $secure;
 
 /**
 * Create a new http client
 *
 * @param Url $url
 *            The url for http request
 * @param string $proto
 *            The protocol to use (default = HTTP/1.1)
 * @param integer $timeout
 *            Optional timeout for request (default = 10 seconds)
 */
 public function __construct(Url $url, $proto = 'HTTP/1.1', $timeout = 10)
 {
 parent::__construct($url);
 
 $this->secure = $url->getScheme() == 'https';
 
 $this->setTimeout($timeout);
 $this->setPath($url->getPath());
 $this->setProtocol($proto);
 $this->setQueryString($url->getQueryString());
 $this->reset();
 $this->resetHeaders();
 }
 
 /**
 *
 * {@inheritdoc}
 * @see \Generics\Streams\HttpStream::request()
 */
 public function request(string $requestType)
 {
 if ($this->secure) {
 throw new HttpException("Secure connection using HTTPs is not supported!");
 }
 
 $this->requestImpl($requestType);
 }
 }
 
 |