/** * Add a cookie to the request. If the client has no Cookie Jar, the cookies * will be added directly to the headers array as "Cookie" headers. * * @param Zend_Http_Cookie|string $cookie * @param string|null $value If "cookie" is a string, this is the cookie value. * @return Zend_Http_Client * @throws Zend_Http_Client_Exception */ public function setCookie($cookie, $value = null) { if (is_array($cookie)) { foreach ($cookie as $c => $v) { if (is_string($c)) { $this->setCookie($c, $v); } else { $this->setCookie($v); } } return $this; } if ($value !== null) { $value = urlencode($value); } if (isset($this->cookiejar)) { if ($cookie instanceof Sabel_Http_Cookie) { $this->cookiejar->addCookie($cookie); } elseif (is_string($cookie) && $value !== null) { $cookie = Sabel_Http_Cookie::fromString("{$cookie}={$value}", $this->uri); $this->cookiejar->addCookie($cookie); } } else { if ($cookie instanceof Sabel_Http_Cookie) { $name = $cookie->getName(); $value = $cookie->getValue(); $cookie = $name; } if (preg_match("/[=,; \t\r\n\v\f]/", $cookie)) { $message = __METHOD__ . "() Cookie name cannot contain these characters: =,; \t\r\n\v\f ({$cookie})"; throw new Sabel_Exception_Runtime($message); } $value = addslashes($value); if (!isset($this->headers["cookie"])) { $this->headers["cookie"] = array("Cookie", ""); } $this->headers["cookie"][1] .= $cookie . "=" . $value . "; "; } return $this; }
/** * Return a subset of a domain-matching cookies that also match a specified path * * @param array $dom_array * @param string $path * @return array */ protected function _matchPath($domains, $path) { $ret = array(); foreach ($domains as $dom => $paths_array) { foreach (array_keys($paths_array) as $cpath) { if (Sabel_Http_Cookie::matchCookiePath($cpath, $path)) { if (!isset($ret[$dom])) { $ret[$dom] = array(); } $ret[$dom][$cpath] = $paths_array[$cpath]; } } } return $ret; }