| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 | <?phpnamespace Aws\EndpointV2\Ruleset;use Aws\Exception\UnresolvedEndpointException;/** * Houses properties of an individual parameter definition. */class RulesetParameter{    /** @var string */    private $name;    /** @var string */    private $type;    /** @var string */    private $builtIn;    /** @var string */    private $default;    /** @var array */    private $required;    /** @var string */    private $documentation;    /** @var boolean */    private $deprecated;    public function __construct($name, array $definition)    {        $type = ucfirst($definition['type']);        if ($this->isValidType($type)) {            $this->type = $type;        } else {            throw new UnresolvedEndpointException(                'Unknown parameter type ' . "`{$type}`" .                '. Parameters must be of type `String` or `Boolean`.'            );        }        $this->name = $name;        $this->builtIn = isset($definition['builtIn']) ? $definition['builtIn'] : null;        $this->default = isset($definition['default']) ? $definition['default'] : null;        $this->required =  isset($definition['required']) ?            $definition['required'] : false;        $this->documentation =  isset($definition['documentation']) ?            $definition['documentation'] : null;        $this->deprecated =  isset($definition['deprecated']) ?            $definition['deprecated'] : false;    }    /**     * @return mixed     */    public function getName()    {        return $this->name;    }    /**     * @return mixed     */    public function getType()    {        return $this->type;    }    /**     * @return mixed     */    public function getBuiltIn()    {        return $this->builtIn;    }    /**     * @return mixed     */    public function getDefault()    {        return $this->default;    }    /**     * @return boolean     */    public function getRequired()    {        return $this->required;    }    /**     * @return string     */    public function getDocumentation()    {        return $this->documentation;    }    /**     * @return boolean     */    public function getDeprecated()    {        return $this->deprecated;    }    /**     * Validates that an input parameter matches the type provided in its definition.     *     * @return void     * @throws InvalidArgumentException     */    public function validateInputParam($inputParam)    {        $typeMap = [            'String' => 'is_string',            'Boolean' => 'is_bool'        ];        if ($typeMap[$this->type]($inputParam) === false) {            throw new UnresolvedEndpointException(                "Input parameter `{$this->name}` is the wrong type. Must be a {$this->type}."            );        }        if ($this->deprecated) {            $deprecated = $this->deprecated;            $deprecationString = "{$this->name} has been deprecated ";            $msg = isset($deprecated['message']) ? $deprecated['message'] : null;            $since = isset($deprecated['since']) ? $deprecated['since'] : null;            if (!is_null($since)) $deprecationString = $deprecationString                . 'since '. $since . '. ';            if (!is_null($msg)) $deprecationString = $deprecationString . $msg;            trigger_error($deprecationString, E_USER_WARNING);        }    }    private function isValidType($type)    {        return in_array($type, ['String', 'Boolean']);    }}
 |