diff options
Diffstat (limited to 'vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator')
4 files changed, 91 insertions, 0 deletions
diff --git a/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php new file mode 100644 index 0000000..4b4e49d --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/CommaAggregator.php @@ -0,0 +1,20 @@ +<?php + +namespace Guzzle\Http\QueryAggregator; + +use Guzzle\Http\QueryString; + +/** + * Aggregates nested query string variables using commas + */ +class CommaAggregator implements QueryAggregatorInterface +{ + public function aggregate($key, $value, QueryString $query) + { + if ($query->isUrlEncoding()) { + return array($query->encodeValue($key) => implode(',', array_map(array($query, 'encodeValue'), $value))); + } else { + return array($key => implode(',', $value)); + } + } +} diff --git a/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php new file mode 100644 index 0000000..1bf1730 --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/DuplicateAggregator.php @@ -0,0 +1,22 @@ +<?php + +namespace Guzzle\Http\QueryAggregator; + +use Guzzle\Http\QueryString; + +/** + * Does not aggregate nested query string values and allows duplicates in the resulting array + * + * Example: http://test.com?q=1&q=2 + */ +class DuplicateAggregator implements QueryAggregatorInterface +{ + public function aggregate($key, $value, QueryString $query) + { + if ($query->isUrlEncoding()) { + return array($query->encodeValue($key) => array_map(array($query, 'encodeValue'), $value)); + } else { + return array($key => $value); + } + } +} diff --git a/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php new file mode 100644 index 0000000..133ea2b --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/PhpAggregator.php @@ -0,0 +1,27 @@ +<?php + +namespace Guzzle\Http\QueryAggregator; + +use Guzzle\Http\QueryString; + +/** + * Aggregates nested query string variables using PHP style [] + */ +class PhpAggregator implements QueryAggregatorInterface +{ + public function aggregate($key, $value, QueryString $query) + { + $ret = array(); + + foreach ($value as $k => $v) { + $k = "{$key}[{$k}]"; + if (is_array($v)) { + $ret = array_merge($ret, self::aggregate($k, $v, $query)); + } else { + $ret[$query->encodeValue($k)] = $query->encodeValue($v); + } + } + + return $ret; + } +} diff --git a/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php new file mode 100644 index 0000000..72bee62 --- /dev/null +++ b/vendor/guzzle/guzzle/src/Guzzle/Http/QueryAggregator/QueryAggregatorInterface.php @@ -0,0 +1,22 @@ +<?php + +namespace Guzzle\Http\QueryAggregator; + +use Guzzle\Http\QueryString; + +/** + * Interface used for aggregating nested query string variables into a flattened array of key value pairs + */ +interface QueryAggregatorInterface +{ + /** + * Aggregate multi-valued parameters into a flattened associative array + * + * @param string $key The name of the query string parameter + * @param array $value The values of the parameter + * @param QueryString $query The query string that is being aggregated + * + * @return array Returns an array of the combined values + */ + public function aggregate($key, $value, QueryString $query); +} |