You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.1 KiB
98 lines
2.1 KiB
<?php |
|
/** |
|
* Case-insensitive dictionary, suitable for HTTP headers |
|
* |
|
* @package Requests |
|
*/ |
|
|
|
/** |
|
* Case-insensitive dictionary, suitable for HTTP headers |
|
* |
|
* @package Requests |
|
*/ |
|
class Requests_Response_Headers extends Requests_Utility_CaseInsensitiveDictionary { |
|
/** |
|
* Get the given header |
|
* |
|
* Unlike {@see self::getValues()}, this returns a string. If there are |
|
* multiple values, it concatenates them with a comma as per RFC2616. |
|
* |
|
* Avoid using this where commas may be used unquoted in values, such as |
|
* Set-Cookie headers. |
|
* |
|
* @param string $key |
|
* @return string Header value |
|
*/ |
|
public function offsetGet($key) { |
|
$key = strtolower($key); |
|
if (!isset($this->data[$key])) { |
|
return null; |
|
} |
|
|
|
return $this->flatten($this->data[$key]); |
|
} |
|
|
|
/** |
|
* Set the given item |
|
* |
|
* @throws Requests_Exception On attempting to use dictionary as list (`invalidset`) |
|
* |
|
* @param string $key Item name |
|
* @param string $value Item value |
|
*/ |
|
public function offsetSet($key, $value) { |
|
if ($key === null) { |
|
throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset'); |
|
} |
|
|
|
$key = strtolower($key); |
|
|
|
if (!isset($this->data[$key])) { |
|
$this->data[$key] = array(); |
|
} |
|
|
|
$this->data[$key][] = $value; |
|
} |
|
|
|
/** |
|
* Get all values for a given header |
|
* |
|
* @param string $key |
|
* @return array Header values |
|
*/ |
|
public function getValues($key) { |
|
$key = strtolower($key); |
|
if (!isset($this->data[$key])) { |
|
return null; |
|
} |
|
|
|
return $this->data[$key]; |
|
} |
|
|
|
/** |
|
* Flattens a value into a string |
|
* |
|
* Converts an array into a string by imploding values with a comma, as per |
|
* RFC2616's rules for folding headers. |
|
* |
|
* @param string|array $value Value to flatten |
|
* @return string Flattened value |
|
*/ |
|
public function flatten($value) { |
|
if (is_array($value)) { |
|
$value = implode(',', $value); |
|
} |
|
|
|
return $value; |
|
} |
|
|
|
/** |
|
* Get an iterator for the data |
|
* |
|
* Converts the internal |
|
* @return ArrayIterator |
|
*/ |
|
public function getIterator() { |
|
return new Requests_Utility_FilteredIterator($this->data, array($this, 'flatten')); |
|
} |
|
}
|
|
|