diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2022-01-11 12:35:47 +0100 |
commit | 19985dbb8c0aa66dc4bf7905abc1148de909097d (patch) | |
tree | 2cd5a5d20d7e80fc2a51adf60d838d8a2c40999e /vendor/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php | |
download | 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.gz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.bz2 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.lz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.xz 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.tar.zst 1ka-19985dbb8c0aa66dc4bf7905abc1148de909097d.zip |
Diffstat (limited to 'vendor/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php')
-rw-r--r-- | vendor/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/vendor/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php b/vendor/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php new file mode 100644 index 0000000..670ab0b --- /dev/null +++ b/vendor/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php @@ -0,0 +1,72 @@ +<?php + +namespace Stripe\Util; + +/** + * CaseInsensitiveArray is an array-like class that ignores case for keys. + * + * It is used to store HTTP headers. Per RFC 2616, section 4.2: + * Each header field consists of a name followed by a colon (":") and the field value. Field names + * are case-insensitive. + * + * In the context of stripe-php, this is useful because the API will return headers with different + * case depending on whether HTTP/2 is used or not (with HTTP/2, headers are always in lowercase). + */ +class CaseInsensitiveArray implements \ArrayAccess, \Countable, \IteratorAggregate +{ + private $container = []; + + public function __construct($initial_array = []) + { + $this->container = \array_change_key_case($initial_array, \CASE_LOWER); + } + + public function count() + { + return \count($this->container); + } + + public function getIterator() + { + return new \ArrayIterator($this->container); + } + + public function offsetSet($offset, $value) + { + $offset = static::maybeLowercase($offset); + if (null === $offset) { + $this->container[] = $value; + } else { + $this->container[$offset] = $value; + } + } + + public function offsetExists($offset) + { + $offset = static::maybeLowercase($offset); + + return isset($this->container[$offset]); + } + + public function offsetUnset($offset) + { + $offset = static::maybeLowercase($offset); + unset($this->container[$offset]); + } + + public function offsetGet($offset) + { + $offset = static::maybeLowercase($offset); + + return isset($this->container[$offset]) ? $this->container[$offset] : null; + } + + private static function maybeLowercase($v) + { + if (\is_string($v)) { + return \strtolower($v); + } + + return $v; + } +} |