| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
							- <?php
 
- namespace Aws;
 
- use Aws\Api\Service;
 
- /**
 
-  * Validates the required input parameters of commands are non empty
 
-  *
 
-  * @internal
 
-  */
 
- class InputValidationMiddleware
 
- {
 
-     /** @var callable */
 
-     private $nextHandler;
 
-     /** @var array */
 
-     private $mandatoryAttributeList;
 
-     /** @var Service */
 
-     private $service;
 
-     /**
 
-      * Create a middleware wrapper function.
 
-      *
 
-      * @param Service $service
 
-      * @param array $mandatoryAttributeList
 
-      * @return callable     */
 
-     public static function wrap(Service $service, $mandatoryAttributeList) {
 
-         if (!is_array($mandatoryAttributeList) ||
 
-             array_filter($mandatoryAttributeList, 'is_string') !== $mandatoryAttributeList
 
-         ) {
 
-             throw new \InvalidArgumentException(
 
-                 "The mandatory attribute list must be an array of strings"
 
-             );
 
-         }
 
-         return function (callable $handler) use ($service, $mandatoryAttributeList) {
 
-             return new self($handler, $service, $mandatoryAttributeList);
 
-         };
 
-     }
 
-     public function __construct(
 
-         callable $nextHandler,
 
-         Service $service,
 
-         $mandatoryAttributeList
 
-     ) {
 
-         $this->service = $service;
 
-         $this->nextHandler = $nextHandler;
 
-         $this->mandatoryAttributeList = $mandatoryAttributeList;
 
-     }
 
-     public function __invoke(CommandInterface $cmd) {
 
-         $nextHandler = $this->nextHandler;
 
-         $op = $this->service->getOperation($cmd->getName())->toArray();
 
-         if (!empty($op['input']['shape'])) {
 
-             $service = $this->service->toArray();
 
-             if (!empty($input = $service['shapes'][$op['input']['shape']])) {
 
-                 if (!empty($input['required'])) {
 
-                     foreach ($input['required'] as $key => $member) {
 
-                         if (in_array($member, $this->mandatoryAttributeList)) {
 
-                             $argument = is_string($cmd[$member]) ?  trim($cmd[$member]) : $cmd[$member];
 
-                             if ($argument === '' || $argument === null) {
 
-                                 $commandName = $cmd->getName();
 
-                                 throw new \InvalidArgumentException(
 
-                                     "The {$commandName} operation requires non-empty parameter: {$member}"
 
-                                 );
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         return $nextHandler($cmd);
 
-     }
 
- }
 
 
  |