summaryrefslogtreecommitdiff
path: root/vendor/guzzle/guzzle/docs/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/guzzle/guzzle/docs/plugins')
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/async-plugin.rst18
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/backoff-plugin.rst22
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/cache-plugin.rst169
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/cookie-plugin.rst33
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/creating-plugins.rst93
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst32
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/history-plugin.rst24
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/log-plugin.rst69
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst29
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/mock-plugin.rst27
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/oauth-plugin.rst30
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/plugins-list.rst.inc9
-rw-r--r--vendor/guzzle/guzzle/docs/plugins/plugins-overview.rst59
13 files changed, 614 insertions, 0 deletions
diff --git a/vendor/guzzle/guzzle/docs/plugins/async-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/async-plugin.rst
new file mode 100644
index 0000000..9bd8f42
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/async-plugin.rst
@@ -0,0 +1,18 @@
+============
+Async plugin
+============
+
+The AsyncPlugin allows you to send requests that do not wait on a response. This is handled through cURL by utilizing
+the progress event. When a request has sent all of its data to the remote server, Guzzle adds a 1ms timeout on the
+request and instructs cURL to not download the body of the response. The async plugin then catches the exception and
+adds a mock response to the request, along with an X-Guzzle-Async header to let you know that the response was not
+fully downloaded.
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\Async\AsyncPlugin;
+
+ $client = new Client('http://www.example.com');
+ $client->addSubscriber(new AsyncPlugin());
+ $response = $client->get()->send();
diff --git a/vendor/guzzle/guzzle/docs/plugins/backoff-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/backoff-plugin.rst
new file mode 100644
index 0000000..5a76941
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/backoff-plugin.rst
@@ -0,0 +1,22 @@
+====================
+Backoff retry plugin
+====================
+
+The ``Guzzle\Plugin\Backoff\BackoffPlugin`` automatically retries failed HTTP requests using custom backoff strategies:
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\Backoff\BackoffPlugin;
+
+ $client = new Client('http://www.test.com/');
+ // Use a static factory method to get a backoff plugin using the exponential backoff strategy
+ $backoffPlugin = BackoffPlugin::getExponentialBackoff();
+
+ // Add the backoff plugin to the client object
+ $client->addSubscriber($backoffPlugin);
+
+The BackoffPlugin's constructor accepts a ``Guzzle\Plugin\Backoff\BackoffStrategyInterface`` object that is used to
+determine when a retry should be issued and how long to delay between retries. The above code example shows how to
+attach a BackoffPlugin to a client that is pre-configured to retry failed 500 and 503 responses using truncated
+exponential backoff (emulating the behavior of Guzzle 2's ExponentialBackoffPlugin).
diff --git a/vendor/guzzle/guzzle/docs/plugins/cache-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/cache-plugin.rst
new file mode 100644
index 0000000..d2fd5df
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/cache-plugin.rst
@@ -0,0 +1,169 @@
+=================
+HTTP Cache plugin
+=================
+
+Guzzle can leverage HTTP's caching specifications using the ``Guzzle\Plugin\Cache\CachePlugin``. The CachePlugin
+provides a private transparent proxy cache that caches HTTP responses. The caching logic, based on
+`RFC 2616 <http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html>`_, uses HTTP headers to control caching behavior,
+cache lifetime, and supports Vary, ETag, and Last-Modified based revalidation:
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Doctrine\Common\Cache\FilesystemCache;
+ use Guzzle\Cache\DoctrineCacheAdapter;
+ use Guzzle\Plugin\Cache\CachePlugin;
+ use Guzzle\Plugin\Cache\DefaultCacheStorage;
+
+ $client = new Client('http://www.test.com/');
+
+ $cachePlugin = new CachePlugin(array(
+ 'storage' => new DefaultCacheStorage(
+ new DoctrineCacheAdapter(
+ new FilesystemCache('/path/to/cache/files')
+ )
+ )
+ ));
+
+ // Add the cache plugin to the client object
+ $client->addSubscriber($cachePlugin);
+ $client->get('http://www.wikipedia.org/')->send();
+
+ // The next request will revalidate against the origin server to see if it
+ // has been modified. If a 304 response is received the response will be
+ // served from cache
+ $client->get('http://www.wikipedia.org/')->send();
+
+The cache plugin intercepts GET and HEAD requests before they are actually transferred to the origin server. The cache
+plugin then generates a hash key based on the request method and URL, and checks to see if a response exists in the cache. If
+a response exists in the cache, the cache adapter then checks to make sure that the caching rules associated with the response
+satisfy the request, and ensures that response still fresh. If the response is acceptable for the request any required
+revalidation, then the cached response is served instead of contacting the origin server.
+
+Vary
+----
+
+Cache keys are derived from a request method and a request URL. Multiple responses can map to the same cache key and
+stored in Guzzle's underlying cache storage object. You should use the ``Vary`` HTTP header to tell the cache storage
+object that the cache response must have been cached for a request that matches the headers specified in the Vary header
+of the request. This allows you to have specific cache entries for the same request URL but variations in a request's
+headers determine which cache entry is served. Please see the http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44
+for more information.
+
+Cache options
+-------------
+
+There are several options you can add to requests or clients to modify the behavior of the cache plugin.
+
+Override cache TTL
+~~~~~~~~~~~~~~~~~~
+
+You can override the number of seconds a cacheable response is stored in the cache by setting the
+``cache.override_ttl`` parameter on the params object of a request:
+
+.. code-block:: php
+
+ // If the response to the request is cacheable, then the response will be cached for 100 seconds
+ $request->getParams()->set('cache.override_ttl', 100);
+
+If a response doesn't specify any freshness policy, it will be kept in cache for 3600 seconds by default.
+
+Custom caching decision
+~~~~~~~~~~~~~~~~~~~~~~~
+
+If the service you are interacting with does not return caching headers or returns responses that are normally
+something that would not be cached, you can set a custom ``can_cache`` object on the constructor of the CachePlugin
+and provide a ``Guzzle\Plugin\Cache\CanCacheInterface`` object. You can use the
+``Guzzle\Plugin\Cache\CallbackCanCacheStrategy`` to easily make a caching decision based on an HTTP request and
+response.
+
+Revalidation options
+~~~~~~~~~~~~~~~~~~~~
+
+You can change the revalidation behavior of a request using the ``cache.revalidate`` parameter. Setting this
+parameter to ``never`` will ensure that a revalidation request is never sent, and the response is always served from
+the origin server. Setting this parameter to ``skip`` will never revalidate and uses the response stored in the cache.
+
+Normalizing requests for caching
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Use the ``cache.key_filter`` parameter if you wish to strip certain query string parameters from your
+request before creating a unique hash for the request. This parameter can be useful if your requests have query
+string values that cause each request URL to be unique (thus preventing a cache hit). The ``cache.key_filter``
+format is simply a comma separated list of query string values to remove from the URL when creating a cache key.
+For example, here we are saying that the ``a`` and ``q`` query string variables should be ignored when generating a
+cache key for the request:
+
+.. code-block:: php
+
+ $request->getParams()->set('cache.key_filter', 'a, q');
+
+Other options
+~~~~~~~~~~~~~
+
+There are many other options available to the CachePlugin that can meet almost any caching requirement, including
+custom revalidation implementations, custom cache key generators, custom caching decision strategies, and custom
+cache storage objects. Take a look the constructor of ``Guzzle\Plugin\Cache\CachePlugin`` for more information.
+
+Setting Client-wide cache settings
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You can specify cache settings for every request created by a client by adding cache settings to the configuration
+options of a client.
+
+.. code-block:: php
+
+ $client = new Guzzle\Http\Client('http://www.test.com', array(
+ 'request.params' => array(
+ 'cache.override_ttl' => 3600,
+ 'params.cache.revalidate' => 'never'
+ )
+ ));
+
+ echo $client->get('/')->getParams()->get('cache.override_ttl');
+ // >>> 3600
+
+ echo $client->get('/')->getParams()->get('cache.revalidate');
+ // >>> never
+
+Cache revalidation
+------------------
+
+If the cache plugin determines that a response to a GET request needs revalidation, a conditional GET is transferred
+to the origin server. If the origin server returns a 304 response, then a response containing the merged headers of
+the cached response with the new response and the entity body of the cached response is returned. Custom revalidation
+strategies can be injected into a CachePlugin if needed.
+
+Cache adapters
+--------------
+
+Guzzle doesn't try to reinvent the wheel when it comes to caching or logging. Plenty of other frameworks have
+excellent solutions in place that you are probably already using in your applications. Guzzle uses adapters for
+caching and logging. The cache plugin requires a cache adapter so that is can store responses in a cache. Guzzle
+currently supports cache adapters for `Doctrine 2.0 <http://www.doctrine-project.org/>`_ and the
+`Zend Framework <http://framework.zend.com>`_.
+
+Doctrine cache adapter
+~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: php
+
+ use Doctrine\Common\Cache\ArrayCache;
+ use Guzzle\Cache\DoctrineCacheAdapter;
+ use Guzzle\Plugin\Cache\CachePlugin;
+
+ $backend = new ArrayCache();
+ $adapter = new DoctrineCacheAdapter($backend);
+ $cache = new CachePlugin($adapter);
+
+Zend Framework cache adapter
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: php
+
+ use Guzzle\Cache\ZendCacheAdapter;
+ use Zend\Cache\Backend\TestBackend;
+
+ $backend = new TestBackend();
+ $adapter = new ZendCacheAdapter($backend);
+ $cache = new CachePlugin($adapter);
diff --git a/vendor/guzzle/guzzle/docs/plugins/cookie-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/cookie-plugin.rst
new file mode 100644
index 0000000..a6cc7d9
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/cookie-plugin.rst
@@ -0,0 +1,33 @@
+=============
+Cookie plugin
+=============
+
+Some web services require a Cookie in order to maintain a session. The ``Guzzle\Plugin\Cookie\CookiePlugin`` will add
+cookies to requests and parse cookies from responses using a CookieJar object:
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\Cookie\CookiePlugin;
+ use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
+
+ $cookiePlugin = new CookiePlugin(new ArrayCookieJar());
+
+ // Add the cookie plugin to a client
+ $client = new Client('http://www.test.com/');
+ $client->addSubscriber($cookiePlugin);
+
+ // Send the request with no cookies and parse the returned cookies
+ $client->get('http://www.yahoo.com/')->send();
+
+ // Send the request again, noticing that cookies are being sent
+ $request = $client->get('http://www.yahoo.com/');
+ $request->send();
+
+ echo $request;
+
+You can disable cookies per-request by setting the ``cookies.disable`` value to true on a request's params object.
+
+.. code-block:: php
+
+ $request->getParams()->set('cookies.disable', true);
diff --git a/vendor/guzzle/guzzle/docs/plugins/creating-plugins.rst b/vendor/guzzle/guzzle/docs/plugins/creating-plugins.rst
new file mode 100644
index 0000000..0870155
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/creating-plugins.rst
@@ -0,0 +1,93 @@
+================
+Creating plugins
+================
+
+.. highlight:: php
+
+Guzzle is extremely extensible because of the behavioral modifications that can be added to requests, clients, and
+commands using an event system. Before and after the majority of actions are taken in the library, an event is emitted
+with the name of the event and context surrounding the event. Observers can subscribe to a subject and modify the
+subject based on the events received. Guzzle's event system utilizes the Symfony2 EventDispatcher and is the backbone
+of its plugin architecture.
+
+Overview
+--------
+
+Plugins must implement the ``Symfony\Component\EventDispatcher\EventSubscriberInterface`` interface. The
+``EventSubscriberInterface`` requires that your class implements a static method, ``getSubscribedEvents()``, that
+returns an associative array mapping events to methods on the object. See the
+`Symfony2 documentation <http://symfony.com/doc/2.0/book/internals.html#the-event-dispatcher>`_ for more information.
+
+Plugins can be attached to any subject, or object in Guzzle that implements that
+``Guzzle\Common\HasDispatcherInterface``.
+
+Subscribing to a subject
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+You can subscribe an instantiated observer to an event by calling ``addSubscriber`` on a subject.
+
+.. code-block:: php
+
+ $testPlugin = new TestPlugin();
+ $client->addSubscriber($testPlugin);
+
+You can also subscribe to only specific events using a closure::
+
+ $client->getEventDispatcher()->addListener('request.create', function(Event $event) {
+ echo $event->getName();
+ echo $event['request'];
+ });
+
+``Guzzle\Common\Event`` objects are passed to notified functions. The Event object has a ``getName()`` method which
+return the name of the emitted event and may contain contextual information that can be accessed like an array.
+
+Knowing what events to listen to
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Any class that implements the ``Guzzle\Common\HasDispatcherInterface`` must implement a static method,
+``getAllEvents()``, that returns an array of the events that are emitted from the object. You can browse the source
+to see each event, or you can call the static method directly in your code to get a list of available events.
+
+Event hooks
+-----------
+
+* :ref:`client-events`
+* :ref:`service-client-events`
+* :ref:`request-events`
+* ``Guzzle\Http\Curl\CurlMulti``:
+* :ref:`service-builder-events`
+
+Examples of the event system
+----------------------------
+
+Simple Echo plugin
+~~~~~~~~~~~~~~~~~~
+
+This simple plugin prints a string containing the request that is about to be sent by listening to the
+``request.before_send`` event::
+
+ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+ class EchoPlugin implements EventSubscriberInterface
+ {
+ public static function getSubscribedEvents()
+ {
+ return array('request.before_send' => 'onBeforeSend');
+ }
+
+ public function onBeforeSend(Guzzle\Common\Event $event)
+ {
+ echo 'About to send a request: ' . $event['request'] . "\n";
+ }
+ }
+
+ $client = new Guzzle\Service\Client('http://www.test.com/');
+
+ // Create the plugin and add it as an event subscriber
+ $plugin = new EchoPlugin();
+ $client->addSubscriber($plugin);
+
+ // Send a request and notice that the request is printed to the screen
+ $client->get('/')->send();
+
+Running the above code will print a string containing the HTTP request that is about to be sent.
diff --git a/vendor/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst
new file mode 100644
index 0000000..66d4a01
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/curl-auth-plugin.rst
@@ -0,0 +1,32 @@
+==========================
+cURL authentication plugin
+==========================
+
+.. warning::
+
+ The CurlAuthPlugin is deprecated. You should use the `auth` parameter of a client to add authorization headers to
+ every request created by a client.
+
+ .. code-block:: php
+
+ $client->setDefaultOption('auth', array('username', 'password', 'Basic|Digest|NTLM|Any'));
+
+If your web service client requires basic authorization, then you can use the CurlAuthPlugin to easily add an
+Authorization header to each request sent by the client.
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\CurlAuth\CurlAuthPlugin;
+
+ $client = new Client('http://www.test.com/');
+
+ // Add the auth plugin to the client object
+ $authPlugin = new CurlAuthPlugin('username', 'password');
+ $client->addSubscriber($authPlugin);
+
+ $response = $client->get('projects/1/people')->send();
+ $xml = new SimpleXMLElement($response->getBody(true));
+ foreach ($xml->person as $person) {
+ echo $person->email . "\n";
+ }
diff --git a/vendor/guzzle/guzzle/docs/plugins/history-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/history-plugin.rst
new file mode 100644
index 0000000..b96befe
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/history-plugin.rst
@@ -0,0 +1,24 @@
+==============
+History plugin
+==============
+
+The history plugin tracks all of the requests and responses sent through a request or client. This plugin can be
+useful for crawling or unit testing. By default, the history plugin stores up to 10 requests and responses.
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\History\HistoryPlugin;
+
+ $client = new Client('http://www.test.com/');
+
+ // Add the history plugin to the client object
+ $history = new HistoryPlugin();
+ $history->setLimit(5);
+ $client->addSubscriber($history);
+
+ $client->get('http://www.yahoo.com/')->send();
+
+ echo $history->getLastRequest();
+ echo $history->getLastResponse();
+ echo count($history);
diff --git a/vendor/guzzle/guzzle/docs/plugins/log-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/log-plugin.rst
new file mode 100644
index 0000000..3e2b229
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/log-plugin.rst
@@ -0,0 +1,69 @@
+==========
+Log plugin
+==========
+
+Use the ``Guzzle\Plugin\Log\LogPlugin`` to view all data sent over the wire, including entity bodies and redirects.
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Log\Zf1LogAdapter;
+ use Guzzle\Plugin\Log\LogPlugin;
+ use Guzzle\Log\MessageFormatter;
+
+ $client = new Client('http://www.test.com/');
+
+ $adapter = new Zf1LogAdapter(
+ new \Zend_Log(new \Zend_Log_Writer_Stream('php://output'))
+ );
+ $logPlugin = new LogPlugin($adapter, MessageFormatter::DEBUG_FORMAT);
+
+ // Attach the plugin to the client, which will in turn be attached to all
+ // requests generated by the client
+ $client->addSubscriber($logPlugin);
+
+ $response = $client->get('http://google.com')->send();
+
+The code sample above wraps a ``Zend_Log`` object using a ``Guzzle\Log\Zf1LogAdapter``. After attaching the plugin to
+the client, all data sent over the wire will be logged to stdout.
+
+The first argument of the LogPlugin's constructor accepts a ``Guzzle\Log\LogAdapterInterface`` object. This object is
+an adapter that allows you to use the logging capabilities of your favorite log implementation. The second argument of
+the constructor accepts a ``Guzzle\Log\MessageFormatter`` or a log messaged format string. The format string uses
+variable substitution and allows you to define the log data that is important to your application. The different
+variables that can be injected are as follows:
+
+================== ====================================================================================
+Variable Substitution
+================== ====================================================================================
+{request} Full HTTP request message
+{response} Full HTTP response message
+{ts} Timestamp
+{host} Host of the request
+{method} Method of the request
+{url} URL of the request
+{host} Host of the request
+{protocol} Request protocol
+{version} Protocol version
+{resource} Resource of the request (path + query + fragment)
+{port} Port of the request
+{hostname} Hostname of the machine that sent the request
+{code} Status code of the response (if available)
+{phrase} Reason phrase of the response (if available)
+{curl_error} Curl error message (if available)
+{curl_code} Curl error code (if available)
+{curl_stderr} Curl standard error (if available)
+{connect_time} Time in seconds it took to establish the connection (if available)
+{total_time} Total transaction time in seconds for last transfer (if available)
+{req_header_*} Replace `*` with the lowercased name of a request header to add to the message
+{res_header_*} Replace `*` with the lowercased name of a response header to add to the message
+{req_body} Request body
+{res_body} Response body
+================== ====================================================================================
+
+The LogPlugin has a helper method that can be used when debugging that will output the full HTTP request and
+response of a transaction:
+
+.. code-block:: php
+
+ $client->addSubscriber(LogPlugin::getDebugPlugin());
diff --git a/vendor/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst
new file mode 100644
index 0000000..1b1cfa8
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/md5-validator-plugin.rst
@@ -0,0 +1,29 @@
+====================
+MD5 validator plugin
+====================
+
+Entity bodies can sometimes be modified over the wire due to a faulty TCP transport or misbehaving proxy. If an HTTP
+response contains a Content-MD5 header, then a MD5 hash of the entity body of a response can be compared against the
+Content-MD5 header of the response to determine if the response was delivered intact. The
+``Guzzle\Plugin\Md5\Md5ValidatorPlugin`` will throw an ``UnexpectedValueException`` if the calculated MD5 hash does
+not match the Content-MD5 header value:
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\Md5\Md5ValidatorPlugin;
+
+ $client = new Client('http://www.test.com/');
+
+ $md5Plugin = new Md5ValidatorPlugin();
+
+ // Add the md5 plugin to the client object
+ $client->addSubscriber($md5Plugin);
+
+ $request = $client->get('http://www.yahoo.com/');
+ $request->send();
+
+Calculating the MD5 hash of a large entity body or an entity body that was transferred using a Content-Encoding is an
+expensive operation. When working in high performance applications, you might consider skipping the MD5 hash
+validation for entity bodies bigger than a certain size or Content-Encoded entity bodies
+(see ``Guzzle\Plugin\Md5\Md5ValidatorPlugin`` for more information).
diff --git a/vendor/guzzle/guzzle/docs/plugins/mock-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/mock-plugin.rst
new file mode 100644
index 0000000..4900cb5
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/mock-plugin.rst
@@ -0,0 +1,27 @@
+===========
+Mock plugin
+===========
+
+The mock plugin is useful for testing Guzzle clients. The mock plugin allows you to queue an array of responses that
+will satisfy requests sent from a client by consuming the request queue in FIFO order.
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\Mock\MockPlugin;
+ use Guzzle\Http\Message\Response;
+
+ $client = new Client('http://www.test.com/');
+
+ $mock = new MockPlugin();
+ $mock->addResponse(new Response(200))
+ ->addResponse(new Response(404));
+
+ // Add the mock plugin to the client object
+ $client->addSubscriber($mock);
+
+ // The following request will receive a 200 response from the plugin
+ $client->get('http://www.example.com/')->send();
+
+ // The following request will receive a 404 response from the plugin
+ $client->get('http://www.test.com/')->send();
diff --git a/vendor/guzzle/guzzle/docs/plugins/oauth-plugin.rst b/vendor/guzzle/guzzle/docs/plugins/oauth-plugin.rst
new file mode 100644
index 0000000..e67eaba
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/oauth-plugin.rst
@@ -0,0 +1,30 @@
+============
+OAuth plugin
+============
+
+Guzzle ships with an OAuth 1.0 plugin that can sign requests using a consumer key, consumer secret, OAuth token,
+and OAuth secret. Here's an example showing how to send an authenticated request to the Twitter REST API:
+
+.. code-block:: php
+
+ use Guzzle\Http\Client;
+ use Guzzle\Plugin\Oauth\OauthPlugin;
+
+ $client = new Client('http://api.twitter.com/1');
+ $oauth = new OauthPlugin(array(
+ 'consumer_key' => 'my_key',
+ 'consumer_secret' => 'my_secret',
+ 'token' => 'my_token',
+ 'token_secret' => 'my_token_secret'
+ ));
+ $client->addSubscriber($oauth);
+
+ $response = $client->get('statuses/public_timeline.json')->send();
+
+If you need to use a custom signing method, you can pass a ``signature_method`` configuration option in the
+constructor of the OAuth plugin. The ``signature_method`` option must be a callable variable that accepts a string to
+sign and signing key and returns a signed string.
+
+.. note::
+
+ You can omit the ``token`` and ``token_secret`` options to use two-legged OAuth.
diff --git a/vendor/guzzle/guzzle/docs/plugins/plugins-list.rst.inc b/vendor/guzzle/guzzle/docs/plugins/plugins-list.rst.inc
new file mode 100644
index 0000000..8d6d09b
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/plugins-list.rst.inc
@@ -0,0 +1,9 @@
+* :doc:`/plugins/async-plugin`
+* :doc:`/plugins/backoff-plugin`
+* :doc:`/plugins/cache-plugin`
+* :doc:`/plugins/cookie-plugin`
+* :doc:`/plugins/history-plugin`
+* :doc:`/plugins/log-plugin`
+* :doc:`/plugins/md5-validator-plugin`
+* :doc:`/plugins/mock-plugin`
+* :doc:`/plugins/oauth-plugin`
diff --git a/vendor/guzzle/guzzle/docs/plugins/plugins-overview.rst b/vendor/guzzle/guzzle/docs/plugins/plugins-overview.rst
new file mode 100644
index 0000000..19ae57e
--- /dev/null
+++ b/vendor/guzzle/guzzle/docs/plugins/plugins-overview.rst
@@ -0,0 +1,59 @@
+======================
+Plugin system overview
+======================
+
+The workflow of sending a request and parsing a response is driven by Guzzle's event system, which is powered by the
+`Symfony2 Event Dispatcher component <http://symfony.com/doc/current/components/event_dispatcher/introduction.html>`_.
+
+Any object in Guzzle that emits events will implement the ``Guzzle\Common\HasEventDispatcher`` interface. You can add
+event subscribers directly to these objects using the ``addSubscriber()`` method, or you can grab the
+``Symfony\Component\EventDispatcher\EventDispatcher`` object owned by the object using ``getEventDispatcher()`` and
+add a listener or event subscriber.
+
+Adding event subscribers to clients
+-----------------------------------
+
+Any event subscriber or event listener attached to the EventDispatcher of a ``Guzzle\Http\Client`` or
+``Guzzle\Service\Client`` object will automatically be attached to all request objects created by the client. This
+allows you to attach, for example, a HistoryPlugin to a client object, and from that point on, every request sent
+through that client will utilize the HistoryPlugin.
+
+.. code-block:: php
+
+ use Guzzle\Plugin\History\HistoryPlugin;
+ use Guzzle\Service\Client;
+
+ $client = new Client();
+
+ // Create a history plugin and attach it to the client
+ $history = new HistoryPlugin();
+ $client->addSubscriber($history);
+
+ // Create and send a request. This request will also utilize the HistoryPlugin
+ $client->get('http://httpbin.org')->send();
+
+ // Echo out the last sent request by the client
+ echo $history->getLastRequest();
+
+.. tip::
+
+ :doc:`Create event subscribers <creating-plugins>`, or *plugins*, to implement reusable logic that can be
+ shared across clients. Event subscribers are also easier to test than anonymous functions.
+
+Pre-Built plugins
+-----------------
+
+Guzzle provides easy to use request plugins that add behavior to requests based on signal slot event notifications
+powered by the Symfony2 Event Dispatcher component.
+
+* :doc:`async-plugin`
+* :doc:`backoff-plugin`
+* :doc:`cache-plugin`
+* :doc:`cookie-plugin`
+* :doc:`curl-auth-plugin`
+* :doc:`history-plugin`
+* :doc:`log-plugin`
+* :doc:`md5-validator-plugin`
+* :doc:`mock-plugin`
+* :doc:`oauth-plugin`
+