123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607 |
- <?php
- namespace Aws;
- use GuzzleHttp\Client;
- use Psr\Http\Message\RequestInterface;
- use GuzzleHttp\ClientInterface;
- use GuzzleHttp\Promise\FulfilledPromise;
- function constantly($value)
- {
- return function () use ($value) {
- return $value;
- };
- }
- function filter($iterable, callable $pred)
- {
- foreach ($iterable as $value) {
- if ($pred($value)) {
- yield $value;
- }
- }
- }
- function map($iterable, callable $f)
- {
- foreach ($iterable as $value) {
- yield $f($value);
- }
- }
- function flatmap($iterable, callable $f)
- {
- foreach (map($iterable, $f) as $outer) {
- foreach ($outer as $inner) {
- yield $inner;
- }
- }
- }
- function partition($iterable, $size)
- {
- $buffer = [];
- foreach ($iterable as $value) {
- $buffer[] = $value;
- if (count($buffer) === $size) {
- yield $buffer;
- $buffer = [];
- }
- }
- if ($buffer) {
- yield $buffer;
- }
- }
- function or_chain()
- {
- $fns = func_get_args();
- return function () use ($fns) {
- $args = func_get_args();
- foreach ($fns as $fn) {
- $result = $args ? call_user_func_array($fn, $args) : $fn();
- if ($result) {
- return $result;
- }
- }
- return null;
- };
- }
- function load_compiled_json($path)
- {
- static $compiledList = [];
- $compiledFilepath = "{$path}.php";
- if (!isset($compiledList[$compiledFilepath])) {
- if (is_readable($compiledFilepath)) {
- $compiledList[$compiledFilepath] = include($compiledFilepath);
- }
- }
- if (isset($compiledList[$compiledFilepath])) {
- return $compiledList[$compiledFilepath];
- }
- if (!file_exists($path)) {
- throw new \InvalidArgumentException(
- sprintf("File not found: %s", $path)
- );
- }
- return json_decode(file_get_contents($path), true);
- }
- function clear_compiled_json()
- {
-
- }
- function dir_iterator($path, $context = null)
- {
- $dh = $context ? opendir($path, $context) : opendir($path);
- if (!$dh) {
- throw new \InvalidArgumentException('File not found: ' . $path);
- }
- while (($file = readdir($dh)) !== false) {
- yield $file;
- }
- closedir($dh);
- }
- function recursive_dir_iterator($path, $context = null)
- {
- $invalid = ['.' => true, '..' => true];
- $pathLen = strlen($path) + 1;
- $iterator = dir_iterator($path, $context);
- $queue = [];
- do {
- while ($iterator->valid()) {
- $file = $iterator->current();
- $iterator->next();
- if (isset($invalid[basename($file)])) {
- continue;
- }
- $fullPath = "{$path}/{$file}";
- yield $fullPath;
- if (is_dir($fullPath)) {
- $queue[] = $iterator;
- $iterator = map(
- dir_iterator($fullPath, $context),
- function ($file) use ($fullPath, $pathLen) {
- return substr("{$fullPath}/{$file}", $pathLen);
- }
- );
- continue;
- }
- }
- $iterator = array_pop($queue);
- } while ($iterator);
- }
- function describe_type($input)
- {
- switch (gettype($input)) {
- case 'object':
- return 'object(' . get_class($input) . ')';
- case 'array':
- return 'array(' . count($input) . ')';
- default:
- ob_start();
- var_dump($input);
-
- return str_replace('double(', 'float(', rtrim(ob_get_clean()));
- }
- }
- function default_http_handler()
- {
- $version = guzzle_major_version();
-
- if ($version === 6 || $version === 7) {
- return new \Aws\Handler\GuzzleV6\GuzzleHandler();
- }
-
- if ($version === 5) {
- return new \Aws\Handler\GuzzleV5\GuzzleHandler();
- }
- throw new \RuntimeException('Unknown Guzzle version: ' . $version);
- }
- function default_user_agent()
- {
- $version = guzzle_major_version();
-
- if ($version === 6 || $version === 7) {
- return \GuzzleHttp\default_user_agent();
- }
-
- if ($version === 5) {
- return \GuzzleHttp\Client::getDefaultUserAgent();
- }
- throw new \RuntimeException('Unknown Guzzle version: ' . $version);
- }
- function guzzle_major_version()
- {
- static $cache = null;
- if (null !== $cache) {
- return $cache;
- }
- if (defined('\GuzzleHttp\ClientInterface::VERSION')) {
- $version = (string) ClientInterface::VERSION;
- if ($version[0] === '6') {
- return $cache = 6;
- }
- if ($version[0] === '5') {
- return $cache = 5;
- }
- } elseif (defined('\GuzzleHttp\ClientInterface::MAJOR_VERSION')) {
- return $cache = ClientInterface::MAJOR_VERSION;
- }
- throw new \RuntimeException('Unable to determine what Guzzle version is installed.');
- }
- function serialize(CommandInterface $command)
- {
- $request = null;
- $handlerList = $command->getHandlerList();
-
- $handlerList->setHandler(
- function (CommandInterface $_, RequestInterface $r) use (&$request) {
- $request = $r;
- return new FulfilledPromise(new Result([]));
- }
- );
- call_user_func($handlerList->resolve(), $command)->wait();
- if (!$request instanceof RequestInterface) {
- throw new \RuntimeException(
- 'Calling handler did not serialize request'
- );
- }
- return $request;
- }
- function manifest($service = null)
- {
-
- static $manifest = [];
- static $aliases = [];
- if (empty($manifest)) {
- $manifest = load_compiled_json(__DIR__ . '/data/manifest.json');
- foreach ($manifest as $endpoint => $info) {
- $alias = strtolower($info['namespace']);
- if ($alias !== $endpoint) {
- $aliases[$alias] = $endpoint;
- }
- }
- }
-
- if ($service === null) {
- return $manifest;
- }
-
- $service = strtolower($service);
- if (isset($manifest[$service])) {
- return $manifest[$service] + ['endpoint' => $service];
- }
- if (isset($aliases[$service])) {
- return manifest($aliases[$service]);
- }
- throw new \InvalidArgumentException(
- "The service \"{$service}\" is not provided by the AWS SDK for PHP."
- );
- }
- function is_valid_hostname($hostname)
- {
- return (
- preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*\.?$/i", $hostname)
- && preg_match("/^.{1,253}$/", $hostname)
- && preg_match("/^[^\.]{1,63}(\.[^\.]{0,63})*$/", $hostname)
- );
- }
- function is_valid_hostlabel($label)
- {
- return preg_match("/^(?!-)[a-zA-Z0-9-]{1,63}(?<!-)$/", $label);
- }
- function parse_ini_file(
- $filename,
- $process_sections = false,
- $scanner_mode = INI_SCANNER_NORMAL)
- {
- return parse_ini_string(
- preg_replace('/^#.*\\n/m', "", file_get_contents($filename)),
- $process_sections,
- $scanner_mode
- );
- }
- function boolean_value($input)
- {
- if (is_bool($input)) {
- return $input;
- }
- if ($input === 0) {
- return false;
- }
- if ($input === 1) {
- return true;
- }
- if (is_string($input)) {
- switch (strtolower($input)) {
- case "true":
- case "on":
- case "1":
- return true;
- break;
- case "false":
- case "off":
- case "0":
- return false;
- break;
- }
- }
- return null;
- }
- function parse_ini_section_with_subsections($filename, $section_name) {
- $config = [];
- $stream = fopen($filename, 'r');
- if (!$stream) {
- return $config;
- }
- $current_subsection = '';
- while (!feof($stream)) {
- $line = trim(fgets($stream));
- if (empty($line) || in_array($line[0], [';', '#'])) {
- continue;
- }
- if (preg_match('/^\[.*\]$/', $line)
- && trim($line, '[]') === $section_name)
- {
- while (!feof($stream)) {
- $line = trim(fgets($stream));
- if (empty($line) || in_array($line[0], [';', '#'])) {
- continue;
- }
- if (preg_match('/^\[.*\]$/', $line)
- && trim($line, '[]') === $section_name)
- {
- continue;
- } elseif (strpos($line, '[') === 0) {
- break;
- }
- if (strpos($line, ' = ') !== false) {
- list($key, $value) = explode(' = ', $line, 2);
- if (empty($current_subsection)) {
- $config[$key] = $value;
- } else {
- $config[$current_subsection][$key] = $value;
- }
- } else {
- $current_subsection = trim(str_replace('=', '', $line));
- $config[$current_subsection] = [];
- }
- }
- }
- }
- fclose($stream);
- return $config;
- }
- function is_valid_epoch($input)
- {
- if (is_string($input) || is_numeric($input)) {
- if (is_string($input) && !preg_match("/^-?[0-9]+\.?[0-9]*$/", $input)) {
- return false;
- }
- return true;
- }
- return false;
- }
- function is_fips_pseudo_region($region)
- {
- return strpos($region, 'fips-') !== false || strpos($region, '-fips') !== false;
- }
- function strip_fips_pseudo_regions($region)
- {
- return str_replace(['fips-', '-fips'], ['', ''], $region);
- }
|