| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace GuzzleHttp\Command\Guzzle\RequestLocation;
- use GuzzleHttp\Command\CommandInterface;
- use GuzzleHttp\Command\Guzzle\Operation;
- use GuzzleHttp\Command\Guzzle\Parameter;
- use Psr\Http\Message\RequestInterface;
- abstract class AbstractLocation implements RequestLocationInterface
- {
- /** @var string */
- protected $locationName;
- /**
- * Set the name of the location
- *
- * @param $locationName
- */
- public function __construct($locationName)
- {
- $this->locationName = $locationName;
- }
- /**
- * @param CommandInterface $command
- * @param RequestInterface $request
- * @param Parameter $param
- * @return RequestInterface
- */
- public function visit(
- CommandInterface $command,
- RequestInterface $request,
- Parameter $param
- ) {
- return $request;
- }
- /**
- * @param CommandInterface $command
- * @param RequestInterface $request
- * @param Operation $operation
- * @return RequestInterface
- */
- public function after(
- CommandInterface $command,
- RequestInterface $request,
- Operation $operation
- ) {
- return $request;
- }
- /**
- * Prepare (filter and set desired name for request item) the value for
- * request.
- *
- * @param mixed $value
- * @param Parameter $param
- *
- * @return array|mixed
- */
- protected function prepareValue($value, Parameter $param)
- {
- return is_array($value)
- ? $this->resolveRecursively($value, $param)
- : $param->filter($value);
- }
- /**
- * Recursively prepare and filter nested values.
- *
- * @param array $value Value to map
- * @param Parameter $param Parameter related to the current key.
- *
- * @return array Returns the mapped array
- */
- protected function resolveRecursively(array $value, Parameter $param)
- {
- foreach ($value as $name => &$v) {
- switch ($param->getType()) {
- case 'object':
- if ($subParam = $param->getProperty($name)) {
- $key = $subParam->getWireName();
- $value[$key] = $this->prepareValue($v, $subParam);
- if ($name != $key) {
- unset($value[$name]);
- }
- } elseif ($param->getAdditionalProperties() instanceof Parameter) {
- $v = $this->prepareValue($v, $param->getAdditionalProperties());
- }
- break;
- case 'array':
- if ($items = $param->getItems()) {
- $v = $this->prepareValue($v, $items);
- }
- break;
- }
- }
- return $param->filter($value);
- }
- }
|