def test_is_supported_version(self): self.assertTrue(api_version.is_supported_version("2.0"), "2.0 is a supported version") self.assertTrue(api_version.is_supported_version("v2.0"), "v2.0 is a supported version") self.assertTrue(api_version.is_supported_version("1.0"), "1.0 is a supported version") self.assertTrue(api_version.is_supported_version("v1.0"), "v1.0 is a supported version") self.assertFalse(api_version.is_supported_version("0"), "0 is not a supported version") self.assertFalse(api_version.is_supported_version("v0"), "v0 is not a supported version") self.assertFalse(api_version.is_supported_version("10.0"), "10.0 is not a supported version") self.assertFalse(api_version.is_supported_version("vader"), "vader is not a supported version")
def validate_api_version(handler, version, logger): if not version or not keylime_api_version.is_supported_version(version): echo_json_response(handler, 400, "API Version not supported") return False if keylime_api_version.is_deprecated_version(version): logger.warning( "Client request to API version %s is deprecated and will be removed in future versions.", version) return True
def get_restful_params(urlstring): """Returns a dictionary of paired RESTful URI parameters""" parsed_path = urllib.parse.urlsplit(urlstring.strip("/")) query_params = urllib.parse.parse_qsl(parsed_path.query) path_tokens = parsed_path.path.split('/') # If first token looks like an API version, validate it and make sure it's supported api_version = 0 if path_tokens[0] and len(path_tokens[0]) >= 0 and re.match(r"^v?[0-9]+(\.[0-9]+)?", path_tokens[0]): version = keylime_api_version.normalize_version(path_tokens[0]) if keylime_api_version.is_supported_version(version): api_version = version path_tokens.pop(0) path_params = _list_to_dict(path_tokens) path_params["api_version"] = api_version path_params.update(query_params) return path_params