diff options
Diffstat (limited to 'vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php')
-rw-r--r-- | vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php b/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php new file mode 100644 index 0000000..df3210e --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Plugin/Cookie/CookiePlugin.php @@ -0,0 +1,70 @@ +<?php + +namespace Guzzle\Plugin\Cookie; + +use Guzzle\Common\Event; +use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar; +use Guzzle\Plugin\Cookie\CookieJar\CookieJarInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * Adds, extracts, and persists cookies between HTTP requests + */ +class CookiePlugin implements EventSubscriberInterface +{ + /** @var CookieJarInterface Cookie cookieJar used to hold cookies */ + protected $cookieJar; + + /** + * @param CookieJarInterface $cookieJar Cookie jar used to hold cookies. Creates an ArrayCookieJar by default. + */ + public function __construct(CookieJarInterface $cookieJar = null) + { + $this->cookieJar = $cookieJar ?: new ArrayCookieJar(); + } + + public static function getSubscribedEvents() + { + return array( + 'request.before_send' => array('onRequestBeforeSend', 125), + 'request.sent' => array('onRequestSent', 125) + ); + } + + /** + * Get the cookie cookieJar + * + * @return CookieJarInterface + */ + public function getCookieJar() + { + return $this->cookieJar; + } + + /** + * Add cookies before a request is sent + * + * @param Event $event + */ + public function onRequestBeforeSend(Event $event) + { + $request = $event['request']; + if (!$request->getParams()->get('cookies.disable')) { + $request->removeHeader('Cookie'); + // Find cookies that match this request + foreach ($this->cookieJar->getMatchingCookies($request) as $cookie) { + $request->addCookie($cookie->getName(), $cookie->getValue()); + } + } + } + + /** + * Extract cookies from a sent request + * + * @param Event $event + */ + public function onRequestSent(Event $event) + { + $this->cookieJar->addCookiesFromResponse($event['response'], $event['request']); + } +} |