.=< { Star Gans Tq } >=.

  • Home

  • Killme
  • Download
  • Current Path : /home/m/e/h/meharicl/www/phpBB3/vendor/s9e/text-formatter/src/Utils/Http/Clients/
    Upload File
    @Command ~ $  
    Current File : /home/m/e/h/meharicl/www/phpBB3/vendor/s9e/text-formatter/src/Utils/Http/Clients/Native.php

    <?php
    
    /**
    * @package   s9e\TextFormatter
    * @copyright Copyright (c) 2010-2020 The s9e authors
    * @license   http://www.opensource.org/licenses/mit-license.php The MIT License
    */
    namespace s9e\TextFormatter\Utils\Http\Clients;
    
    use s9e\TextFormatter\Utils\Http\Client;
    
    class Native extends Client
    {
    	/**
    	* @var bool Whether to use gzip encoding
    	*/
    	public $gzipEnabled;
    
    	/**
    	* Constructor
    	*/
    	public function __construct()
    	{
    		$this->gzipEnabled = extension_loaded('zlib');
    	}
    
    	/**
    	* {@inheritdoc}
    	*/
    	public function get($url, array $options = [])
    	{
    		return $this->request('GET', $url, $options);
    	}
    
    	/**
    	* {@inheritdoc}
    	*/
    	public function post($url, array $options = [], $body = '')
    	{
    		return $this->request('POST', $url, $options, $body);
    	}
    
    	/**
    	* Create a stream context for given request
    	*
    	* @param  string   $method  Request method
    	* @param  array    $options Request options
    	* @param  string   $body    Request body
    	* @return resource
    	*/
    	protected function createContext($method, array $options, $body)
    	{
    		$contextOptions = [
    			'ssl'  => ['verify_peer' => $this->sslVerifyPeer],
    			'http' => [
    				'method'  => $method,
    				'timeout' => $this->timeout,
    				'header'  => $this->generateHeaders($options, $body),
    				'content' => $body
    			]
    		];
    
    		return stream_context_create($contextOptions);
    	}
    
    	/**
    	* Decompress given page if applicable
    	*
    	* @param  string $content Response body, potentially compressed
    	* @return string          Response body, uncompressed
    	*/
    	protected function decompress($content)
    	{
    		if ($this->gzipEnabled && substr($content, 0, 2) === "\x1f\x8b")
    		{
    			return gzdecode($content);
    		}
    
    		return $content;
    	}
    
    	/**
    	* Generate a list of headers for given request
    	*
    	* @param  array    $options Request options
    	* @param  string   $body    Request body
    	* @return string[]
    	*/
    	protected function generateHeaders(array $options, $body)
    	{
    		$options += ['headers' => []];
    		if ($this->gzipEnabled)
    		{
    			$options['headers'][] = 'Accept-Encoding: gzip';
    		}
    		$options['headers'][] = 'Content-Length: ' . strlen($body);
    
    		return $options['headers'];
    	}
    
    	/**
    	* Execute an HTTP request
    	*
    	* @param  string      $method  Request method
    	* @param  string      $url     Request URL
    	* @param  array       $options Request options
    	* @param  string      $body    Request body
    	* @return string|bool          Response body or FALSE
    	*/
    	protected function request($method, $url, array $options, $body = '')
    	{
    		$response = @file_get_contents($url, false, $this->createContext($method, $options, $body));
    		if ($response === false)
    		{
    			return false;
    		}
    
    		$response = $this->decompress($response);
    		if (!empty($options['returnHeaders']))
    		{
    			$response = implode("\r\n", $http_response_header) . "\r\n\r\n" . $response;
    		}
    
    		return $response;
    	}
    }