<?php 
namespace GuzzleHttp; 
 
use GuzzleHttp\Promise\PromiseInterface; 
use GuzzleHttp\Exception\GuzzleException; 
use Psr\Http\Message\RequestInterface; 
use Psr\Http\Message\ResponseInterface; 
use Psr\Http\Message\UriInterface; 
 
/** 
 * Client interface for sending HTTP requests. 
 */ 
interface ClientInterface 
{ 
    const VERSION = '6.1.1'; 
 
    /** 
     * Send an HTTP request. 
     * 
     * @param RequestInterface $request Request to send 
     * @param array            $options Request options to apply to the given 
     *                                  request and to the transfer. 
     * 
     * @return ResponseInterface 
     * @throws GuzzleException 
     */ 
    public function send(RequestInterface $request, array $options = []); 
 
    /** 
     * Asynchronously send an HTTP request. 
     * 
     * @param RequestInterface $request Request to send 
     * @param array            $options Request options to apply to the given 
     *                                  request and to the transfer. 
     * 
     * @return PromiseInterface 
     */ 
    public function sendAsync(RequestInterface $request, array $options = []); 
 
    /** 
     * Create and send an HTTP request. 
     * 
     * Use an absolute path to override the base path of the client, or a 
     * relative path to append to the base path of the client. The URL can 
     * contain the query string as well. 
     * 
     * @param string              $method  HTTP method 
     * @param string|UriInterface $uri     URI object or string. 
     * @param array               $options Request options to apply. 
     * 
     * @return ResponseInterface 
     * @throws GuzzleException 
     */ 
    public function request($method, $uri, array $options = []); 
 
    /** 
     * Create and send an asynchronous HTTP request. 
     * 
     * Use an absolute path to override the base path of the client, or a 
     * relative path to append to the base path of the client. The URL can 
     * contain the query string as well. Use an array to provide a URL 
     * template and additional variables to use in the URL template expansion. 
     * 
     * @param string              $method  HTTP method 
     * @param string|UriInterface $uri     URI object or string. 
     * @param array               $options Request options to apply. 
     * 
     * @return PromiseInterface 
     */ 
    public function requestAsync($method, $uri, array $options = []); 
 
    /** 
     * Get a client configuration option. 
     * 
     * These options include default request options of the client, a "handler" 
     * (if utilized by the concrete client), and a "base_uri" if utilized by 
     * the concrete client. 
     * 
     * @param string|null $option The config option to retrieve. 
     * 
     * @return mixed 
     */ 
    public function getConfig($option = null); 
} 
 
 |