PageRenderTime 26ms CodeModel.GetById 14ms app.highlight 6ms RepoModel.GetById 2ms app.codeStats 0ms

/wp-includes/Requests/Response/Headers.php

https://bitbucket.org/skyarch-iijima/wordpress
PHP | 98 lines | 36 code | 11 blank | 51 comment | 5 complexity | 1ad7c382d2b68f19412da7f43e63a960 MD5 | raw file
 1<?php
 2/**
 3 * Case-insensitive dictionary, suitable for HTTP headers
 4 *
 5 * @package Requests
 6 */
 7
 8/**
 9 * Case-insensitive dictionary, suitable for HTTP headers
10 *
11 * @package Requests
12 */
13class Requests_Response_Headers extends Requests_Utility_CaseInsensitiveDictionary {
14	/**
15	 * Get the given header
16	 *
17	 * Unlike {@see self::getValues()}, this returns a string. If there are
18	 * multiple values, it concatenates them with a comma as per RFC2616.
19	 *
20	 * Avoid using this where commas may be used unquoted in values, such as
21	 * Set-Cookie headers.
22	 *
23	 * @param string $key
24	 * @return string Header value
25	 */
26	public function offsetGet($key) {
27		$key = strtolower($key);
28		if (!isset($this->data[$key])) {
29			return null;
30		}
31
32		return $this->flatten($this->data[$key]);
33	}
34
35	/**
36	 * Set the given item
37	 *
38	 * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
39	 *
40	 * @param string $key Item name
41	 * @param string $value Item value
42	 */
43	public function offsetSet($key, $value) {
44		if ($key === null) {
45			throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
46		}
47
48		$key = strtolower($key);
49
50		if (!isset($this->data[$key])) {
51			$this->data[$key] = array();
52		}
53
54		$this->data[$key][] = $value;
55	}
56
57	/**
58	 * Get all values for a given header
59	 *
60	 * @param string $key
61	 * @return array Header values
62	 */
63	public function getValues($key) {
64		$key = strtolower($key);
65		if (!isset($this->data[$key])) {
66			return null;
67		}
68
69		return $this->data[$key];
70	}
71
72	/**
73	 * Flattens a value into a string
74	 *
75	 * Converts an array into a string by imploding values with a comma, as per
76	 * RFC2616's rules for folding headers.
77	 *
78	 * @param string|array $value Value to flatten
79	 * @return string Flattened value
80	 */
81	public function flatten($value) {
82		if (is_array($value)) {
83			$value = implode(',', $value);
84		}
85
86		return $value;
87	}
88
89	/**
90	 * Get an iterator for the data
91	 *
92	 * Converts the internal
93	 * @return ArrayIterator
94	 */
95	public function getIterator() {
96		return new Requests_Utility_FilteredIterator($this->data, array($this, 'flatten'));
97	}
98}