Initial Commit
This commit is contained in:
85
dependencies/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php
vendored
Normal file
85
dependencies/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace WP_Ultimo\Dependencies\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);
|
||||
}
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function count()
|
||||
{
|
||||
return \count($this->container);
|
||||
}
|
||||
/**
|
||||
* @return \ArrayIterator
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function getIterator()
|
||||
{
|
||||
return new \ArrayIterator($this->container);
|
||||
}
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
$offset = self::maybeLowercase($offset);
|
||||
if (null === $offset) {
|
||||
$this->container[] = $value;
|
||||
} else {
|
||||
$this->container[$offset] = $value;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
$offset = self::maybeLowercase($offset);
|
||||
return isset($this->container[$offset]);
|
||||
}
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
$offset = self::maybeLowercase($offset);
|
||||
unset($this->container[$offset]);
|
||||
}
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
$offset = self::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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user