~canonical-sysadmins/wordpress/4.8.1

« back to all changes in this revision

Viewing changes to wp-includes/Requests/Utility/CaseInsensitiveDictionary.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
 * @subpackage Utilities
 
7
 */
 
8
 
 
9
/**
 
10
 * Case-insensitive dictionary, suitable for HTTP headers
 
11
 *
 
12
 * @package Requests
 
13
 * @subpackage Utilities
 
14
 */
 
15
class Requests_Utility_CaseInsensitiveDictionary implements ArrayAccess, IteratorAggregate {
 
16
        /**
 
17
         * Actual item data
 
18
         *
 
19
         * @var array
 
20
         */
 
21
        protected $data = array();
 
22
 
 
23
        /**
 
24
         * Creates a case insensitive dictionary.
 
25
         *
 
26
         * @param array $data Dictionary/map to convert to case-insensitive
 
27
         */
 
28
        public function __construct(array $data = array()) {
 
29
                foreach ($data as $key => $value) {
 
30
                        $this->offsetSet($key, $value);
 
31
                }
 
32
        }
 
33
 
 
34
        /**
 
35
         * Check if the given item exists
 
36
         *
 
37
         * @param string $key Item key
 
38
         * @return boolean Does the item exist?
 
39
         */
 
40
        public function offsetExists($key) {
 
41
                $key = strtolower($key);
 
42
                return isset($this->data[$key]);
 
43
        }
 
44
 
 
45
        /**
 
46
         * Get the value for the item
 
47
         *
 
48
         * @param string $key Item key
 
49
         * @return string Item value
 
50
         */
 
51
        public function offsetGet($key) {
 
52
                $key = strtolower($key);
 
53
                if (!isset($this->data[$key])) {
 
54
                        return null;
 
55
                }
 
56
 
 
57
                return $this->data[$key];
 
58
        }
 
59
 
 
60
        /**
 
61
         * Set the given item
 
62
         *
 
63
         * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
 
64
         *
 
65
         * @param string $key Item name
 
66
         * @param string $value Item value
 
67
         */
 
68
        public function offsetSet($key, $value) {
 
69
                if ($key === null) {
 
70
                        throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
 
71
                }
 
72
 
 
73
                $key = strtolower($key);
 
74
                $this->data[$key] = $value;
 
75
        }
 
76
 
 
77
        /**
 
78
         * Unset the given header
 
79
         *
 
80
         * @param string $key
 
81
         */
 
82
        public function offsetUnset($key) {
 
83
                unset($this->data[strtolower($key)]);
 
84
        }
 
85
 
 
86
        /**
 
87
         * Get an iterator for the data
 
88
         *
 
89
         * @return ArrayIterator
 
90
         */
 
91
        public function getIterator() {
 
92
                return new ArrayIterator($this->data);
 
93
        }
 
94
 
 
95
        /**
 
96
         * Get the headers as an array
 
97
         *
 
98
         * @return array Header data
 
99
         */
 
100
        public function getAll() {
 
101
                return $this->data;
 
102
        }
 
103
}