forked from lino/radar-wp
Initial import.
This commit is contained in:
commit
86383280c9
428 changed files with 68738 additions and 0 deletions
182
vendor/guzzle/http/Guzzle/Http/Message/Header.php
vendored
Normal file
182
vendor/guzzle/http/Guzzle/Http/Message/Header.php
vendored
Normal file
|
@ -0,0 +1,182 @@
|
|||
<?php
|
||||
|
||||
namespace Guzzle\Http\Message;
|
||||
|
||||
use Guzzle\Common\Version;
|
||||
use Guzzle\Http\Message\Header\HeaderInterface;
|
||||
|
||||
/**
|
||||
* Represents a header and all of the values stored by that header
|
||||
*/
|
||||
class Header implements HeaderInterface
|
||||
{
|
||||
protected $values = array();
|
||||
protected $header;
|
||||
protected $glue;
|
||||
|
||||
/**
|
||||
* @param string $header Name of the header
|
||||
* @param array|string $values Values of the header as an array or a scalar
|
||||
* @param string $glue Glue used to combine multiple values into a string
|
||||
*/
|
||||
public function __construct($header, $values = array(), $glue = ',')
|
||||
{
|
||||
$this->header = trim($header);
|
||||
$this->glue = $glue;
|
||||
|
||||
foreach ((array) $values as $value) {
|
||||
foreach ((array) $value as $v) {
|
||||
$this->values[] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return implode($this->glue . ' ', $this->toArray());
|
||||
}
|
||||
|
||||
public function add($value)
|
||||
{
|
||||
$this->values[] = $value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return $this->header;
|
||||
}
|
||||
|
||||
public function setName($name)
|
||||
{
|
||||
$this->header = $name;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setGlue($glue)
|
||||
{
|
||||
$this->glue = $glue;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getGlue()
|
||||
{
|
||||
return $this->glue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize the header to be a single header with an array of values.
|
||||
*
|
||||
* If any values of the header contains the glue string value (e.g. ","), then the value will be exploded into
|
||||
* multiple entries in the header.
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function normalize()
|
||||
{
|
||||
$values = $this->toArray();
|
||||
|
||||
for ($i = 0, $total = count($values); $i < $total; $i++) {
|
||||
if (strpos($values[$i], $this->glue) !== false) {
|
||||
// Explode on glue when the glue is not inside of a comma
|
||||
foreach (preg_split('/' . preg_quote($this->glue) . '(?=([^"]*"[^"]*")*[^"]*$)/', $values[$i]) as $v) {
|
||||
$values[] = trim($v);
|
||||
}
|
||||
unset($values[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->values = array_values($values);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function hasValue($searchValue)
|
||||
{
|
||||
return in_array($searchValue, $this->toArray());
|
||||
}
|
||||
|
||||
public function removeValue($searchValue)
|
||||
{
|
||||
$this->values = array_values(array_filter($this->values, function ($value) use ($searchValue) {
|
||||
return $value != $searchValue;
|
||||
}));
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function toArray()
|
||||
{
|
||||
return $this->values;
|
||||
}
|
||||
|
||||
public function count()
|
||||
{
|
||||
return count($this->toArray());
|
||||
}
|
||||
|
||||
public function getIterator()
|
||||
{
|
||||
return new \ArrayIterator($this->toArray());
|
||||
}
|
||||
|
||||
public function parseParams()
|
||||
{
|
||||
$params = $matches = array();
|
||||
$callback = array($this, 'trimHeader');
|
||||
|
||||
// Normalize the header into a single array and iterate over all values
|
||||
foreach ($this->normalize()->toArray() as $val) {
|
||||
$part = array();
|
||||
foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
|
||||
if (!preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
|
||||
continue;
|
||||
}
|
||||
$pieces = array_map($callback, $matches[0]);
|
||||
$part[$pieces[0]] = isset($pieces[1]) ? $pieces[1] : '';
|
||||
}
|
||||
if ($part) {
|
||||
$params[] = $part;
|
||||
}
|
||||
}
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function hasExactHeader($header)
|
||||
{
|
||||
Version::warn(__METHOD__ . ' is deprecated');
|
||||
return $this->header == $header;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function raw()
|
||||
{
|
||||
Version::warn(__METHOD__ . ' is deprecated. Use toArray()');
|
||||
return $this->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Trim a header by removing excess spaces and wrapping quotes
|
||||
*
|
||||
* @param $str
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function trimHeader($str)
|
||||
{
|
||||
static $trimmed = "\"' \n\t";
|
||||
|
||||
return trim($str, $trimmed);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue