Server IP : 172.67.158.161 / Your IP : 18.188.242.160 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/thread-self/root/home/giankuin/sieuthiweb.com.vn/wp-content/plugins/duplicator-pro/aws/Guzzle/Service/Command/LocationVisitor/Response/ |
Upload File : |
<?php namespace DuplicatorPro\Guzzle\Service\Command\LocationVisitor\Response; use DuplicatorPro\Guzzle\Http\Message\Response; use DuplicatorPro\Guzzle\Service\Description\Parameter; use DuplicatorPro\Guzzle\Service\Command\CommandInterface; /** * Location visitor used to marshal JSON response data into a formatted array. * * Allows top level JSON parameters to be inserted into the result of a command. The top level attributes are grabbed * from the response's JSON data using the name value by default. Filters can be applied to parameters as they are * traversed. This allows data to be normalized before returning it to users (for example converting timestamps to * DateTime objects). */ class JsonVisitor extends AbstractResponseVisitor { public function before(CommandInterface $command, array &$result) { // Ensure that the result of the command is always rooted with the parsed JSON data $result = $command->getResponse()->json(); } public function visit( CommandInterface $command, Response $response, Parameter $param, &$value, $context = null ) { $name = $param->getName(); $key = $param->getWireName(); if (isset($value[$key])) { $this->recursiveProcess($param, $value[$key]); if ($key != $name) { $value[$name] = $value[$key]; unset($value[$key]); } } } /** * Recursively process a parameter while applying filters * * @param Parameter $param API parameter being validated * @param mixed $value Value to validate and process. The value may change during this process. */ protected function recursiveProcess(Parameter $param, &$value) { if ($value === null) { return; } if (is_array($value)) { $type = $param->getType(); if ($type == 'array') { foreach ($value as &$item) { $this->recursiveProcess($param->getItems(), $item); } } elseif ($type == 'object' && !isset($value[0])) { // On the above line, we ensure that the array is associative and not numerically indexed $knownProperties = array(); if ($properties = $param->getProperties()) { foreach ($properties as $property) { $name = $property->getName(); $key = $property->getWireName(); $knownProperties[$name] = 1; if (isset($value[$key])) { $this->recursiveProcess($property, $value[$key]); if ($key != $name) { $value[$name] = $value[$key]; unset($value[$key]); } } } } // Remove any unknown and potentially unsafe properties if ($param->getAdditionalProperties() === false) { $value = array_intersect_key($value, $knownProperties); } elseif (($additional = $param->getAdditionalProperties()) !== true) { // Validate and filter additional properties foreach ($value as &$v) { $this->recursiveProcess($additional, $v); } } } } $value = $param->filter($value); } }