~canonical-sysadmins/wordpress/4.8.1

« back to all changes in this revision

Viewing changes to wp-includes/Requests/Response/Headers.php

  • Committer: Barry Price
  • Date: 2016-08-17 04:50:12 UTC
  • mfrom: (1.1.18 upstream)
  • Revision ID: barry.price@canonical.com-20160817045012-qfui81zhqnqv2ba9
Merge WP4.6 from upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 */
 
13
class 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
}