method = $definition['method']; $this->path = $definition['path']; if (isset($definition['jsonKey'])) { $this->jsonKey = $definition['jsonKey']; } $this->params = self::toParamArray($definition['params']); } /** * @return string */ public function getPath() { return $this->path; } /** * @return string */ public function getMethod() { return $this->method; } /** * Indicates whether this operation supports a parameter. * * @param $key The name of a parameter * * @return bool */ public function hasParam($key) { return isset($this->params[$key]); } /** * @param $name * * @return Parameter */ public function getParam($name) { return isset($this->params[$name]) ? $this->params[$name] : null; } /** * @return string */ public function getJsonKey() { return $this->jsonKey; } /** * A convenience method that will take a generic array of data and convert it into an array of * {@see Parameter} objects. * * @param array $data A generic data array * * @return array */ public static function toParamArray(array $data) { $params = []; foreach ($data as $name => $param) { $params[$name] = new Parameter($param + ['name' => $name]); } return $params; } /** * This method will validate all of the user-provided values and throw an exception if any * failures are detected. This is useful for basic sanity-checking before a request is * serialized and sent to the API. * * @param array $userValues The user-defined values * * @return bool TRUE if validation passes * @throws \Exception If validate fails */ public function validate(array $userValues) { foreach ($this->params as $paramName => $param) { if (array_key_exists($paramName, $userValues)) { $param->validate($userValues[$paramName]); } elseif ($param->isRequired()) { throw new \Exception(sprintf('"%s" is a required option, but it was not provided', $paramName)); } } return true; } }