1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?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'));
- }
- }
|