def _validate_params(self, param_value, kwarg, value, required_params): if not param_value: # is a valid param but not necessarily required message = '{} is not a valid parameter for {}'.format(param_value, kwarg) raise errors.OctokitParameterError(message) if param_value.get('enum') and value not in param_value.get('enum'): # is a valid option of the enum message = '{} is not a valid option for {}; must be one of {}'.format(value, kwarg, param_value.get('enum')) raise errors.OctokitParameterError(message) if kwarg in required_params and not value: # required param has a value message = '{} must have a value'.format(kwarg) raise errors.OctokitParameterError(message)
def validate_enum(self, parameter, value, properties): if properties.get(parameter).get( "enum") and value not in properties.get(parameter).get("enum"): message = "{} is not a valid option for {}; must be one of {}".format( value, parameter, properties.get(parameter).get("enum")) raise errors.OctokitParameterError(message)
def _validate_required_params(self, required_params, cached_kwargs): for p in required_params: if '.' in p: utils.walk_path(cached_kwargs, p.split('.')) continue if p not in cached_kwargs: # has all required message = '{} is a required parameter'.format(p) raise errors.OctokitParameterError(message)
def validate_other_parameters(self, parameters, valid_parameters, properties): for parameter, value in parameters.items(): try: assert parameter in valid_parameters except AssertionError: message = "{} is not a valid parameter".format(parameter) raise errors.OctokitParameterError(message) if properties.get(parameter): self.validate_enum(parameter, value, properties)
def _validate(self, kwargs, params): cached_kwargs = dict(ChainMap(kwargs, self._attribute_cache['url'])) required_params = [k for k, v in params.items() if v.get('required')] for p in required_params: if p not in cached_kwargs: # has all required message = '{} is a required parameter'.format(p) raise errors.OctokitParameterError(message) for kwarg, value in kwargs.items(): param_value = params.get(kwarg) self._validate_params(param_value, kwarg, value, required_params)
def type_match(self, symbol, expected_type): types = {"array": list, "object": dict, "string": str} if not isinstance(symbol, types.get(expected_type)): name = symbol.__class__.__name__ message = f"{name} type does not match the schema type of {expected_type} for the data of {symbol}" raise errors.OctokitParameterError(message)
def validate_list(self, parameters, schema): if not parameters and schema.get("items").get("required"): message = "property is missing required items" raise errors.OctokitParameterError(message) for parameter in parameters: self.validate_schema(parameter, schema.get("items", schema))
def _raise_must_have_value(self, required_parameter): message = "{} must have a value".format(required_parameter) raise errors.OctokitParameterError(message)
def _raise_required_parameter(self, param): message = "{} is a required parameter".format(param) raise errors.OctokitParameterError(message)