From 1a2a82b75d44c2c7b34e1adb47934b3e51aa782c Mon Sep 17 00:00:00 2001 From: Adam McElwee Date: Wed, 12 Oct 2016 13:53:19 -0500 Subject: [PATCH] URL encode any strings that are used as path components --- fastly/__init__.py | 86 +++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/fastly/__init__.py b/fastly/__init__.py index 032b693..144e543 100755 --- a/fastly/__init__.py +++ b/fastly/__init__.py @@ -169,20 +169,20 @@ def create_backend(self, def get_backend(self, service_id, version_number, name): """Get the backend for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/backend/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/backend/%s" % (service_id, version_number, urllib.quote(name))) return FastlyBackend(self, content) def update_backend(self, service_id, version_number, name_key, **kwargs): """Update the backend for a particular service and version.""" body = self._formdata(kwargs, FastlyBackend.FIELDS) - content = self._fetch("/service/%s/version/%d/backend/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/backend/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyBackend(self, content) def delete_backend(self, service_id, version_number, name): """Delete the backend for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/backend/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/backend/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -221,20 +221,20 @@ def create_cache_settings(self, def get_cache_settings(self, service_id, version_number, name): """Get a specific cache settings object.""" - content = self._fetch("/service/%s/version/%d/cache_settings/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/cache_settings/%s" % (service_id, version_number, urllib.quote(name))) return FastlyCacheSettings(self, content) def update_cache_settings(self, service_id, version_number, name_key, **kwargs): """Update a specific cache settings object.""" body = self._formdata(kwargs, FastlyCacheSettings.FIELDS) - content = self._fetch("/service/%s/version/%d/cache_settings/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/cache_settings/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyCacheSettings(self, content) def delete_cache_settings(self, service_id, version_number, name): """Delete a specific cache settings object.""" - content = self._fetch("/service/%s/version/%d/cache_settings/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/cache_settings/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -266,20 +266,20 @@ def create_condition(self, def get_condition(self, service_id, version_number, name): """Gets a specified condition.""" - content = self._fetch("/service/%s/version/%d/condition/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/condition/%s" % (service_id, version_number, urllib.quote(name))) return FastlyCondition(self, content) def update_condition(self, service_id, version_number, name_key, **kwargs): """Updates the specified condition.""" body = self._formdata(kwargs, FastlyCondition.FIELDS) - content = self._fetch("/service/%s/version/%d/condition/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/condition/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyCondition(self, content) def delete_condition(self, service_id, version_number, name): """Deletes the specified condition.""" - content = self._fetch("/service/%s/version/%d/condition/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/condition/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -358,38 +358,38 @@ def create_director(self, service_id, version_number, def get_director(self, service_id, version_number, name): """Get the director for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/director/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/director/%s" % (service_id, version_number, urllib.quote(name))) return FastlyDirector(self, content) def update_director(self, service_id, version_number, name_key, **kwargs): """Update the director for a particular service and version.""" body = self._formdata(kwargs, FastlyDirector.FIELDS) - content = self._fetch("/service/%s/version/%d/director/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/director/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyDirector(self, content) def delete_director(self, service_id, version_number, name): """Delete the director for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/director/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/director/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) def get_director_backend(self, service_id, version_number, director_name, backend_name): """Returns the relationship between a Backend and a Director. If the Backend has been associated with the Director, it returns a simple record indicating this. Otherwise, returns a 404.""" - content = self._fetch("/service/%s/version/%d/director/%s/backend/%s" % (service_id, version_number, director_name, backend_name), method="GET") + content = self._fetch("/service/%s/version/%d/director/%s/backend/%s" % (service_id, version_number, director_name, urllib.quote(backend_name)), method="GET") return FastlyDirectorBackend(self, content) def create_director_backend(self, service_id, version_number, director_name, backend_name): """Establishes a relationship between a Backend and a Director. The Backend is then considered a member of the Director and can be used to balance traffic onto.""" - content = self._fetch("/service/%s/version/%d/director/%s/backend/%s" % (service_id, version_number, director_name, backend_name), method="POST") + content = self._fetch("/service/%s/version/%d/director/%s/backend/%s" % (service_id, version_number, director_name, urllib.quote(backend_name)), method="POST") return FastlyDirectorBackend(self, content) def delete_director_backend(self, service_id, version_number, director_name, backend_name): """Deletes the relationship between a Backend and a Director. The Backend is no longer considered a member of the Director and thus will not have traffic balanced onto it from this Director.""" - content = self._fetch("/service/%s/version/%d/director/%s/backend/%s" % (service_id, version_number, director_name, backend_name), method="DELETE") + content = self._fetch("/service/%s/version/%d/director/%s/backend/%s" % (service_id, version_number, director_name, urllib.quote(backend_name)), method="DELETE") return self._status(content) @@ -416,26 +416,26 @@ def create_domain(self, def get_domain(self, service_id, version_number, name): """Get the domain for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/domain/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/domain/%s" % (service_id, version_number, urllib.quote(name))) return FastlyDomain(self, content) def update_domain(self, service_id, version_number, name_key, **kwargs): """Update the domain for a particular service and version.""" body = self._formdata(kwargs, FastlyDomain.FIELDS) - content = self._fetch("/service/%s/version/%d/domain/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/domain/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyDomain(self, content) def delete_domain(self, service_id, version_number, name): """Delete the domain for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/domain/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/domain/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(self, content) def check_domain(self, service_id, version_number, name): """Checks the status of a domain's DNS record. Returns an array of 3 items. The first is the details for the domain. The second is the current CNAME of the domain. The third is a boolean indicating whether or not it has been properly setup to use Fastly.""" - content = self._fetch("/service/%s/version/%d/domain/%s/check" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/domain/%s/check" % (service_id, version_number, urllib.quote(name))) return FastlyDomainCheck(self, content) @@ -479,20 +479,20 @@ def create_header(self, service_id, version_number, name, destination, source, _ def get_header(self, service_id, version_number, name): """Retrieves a Header object by name.""" - content = self._fetch("/service/%s/version/%d/header/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/header/%s" % (service_id, version_number, urllib.quote(name))) return FastlyHeader(self, content) def update_header(self, service_id, version_number, name_key, **kwargs): """Modifies an existing Header object by name.""" body = self._formdata(kwargs, FastlyHeader.FIELDS) - content = self._fetch("/service/%s/version/%d/header/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/header/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyHeader(self, content) def delete_header(self, service_id, version_number, name): """Deletes a Header object by name.""" - content = self._fetch("/service/%s/version/%d/header/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/header/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -536,20 +536,20 @@ def create_healthcheck(self, def get_healthcheck(self, service_id, version_number, name): """Get the healthcheck for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/healthcheck/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/healthcheck/%s" % (service_id, version_number, urllib.quote(name))) return FastlyHealthCheck(self, content) def update_healthcheck(self, service_id, version_number, name_key, **kwargs): """Update the healthcheck for a particular service and version.""" body = self._formdata(kwargs, FastlyHealthCheck.FIELDS) - content = self._fetch("/service/%s/version/%d/healthcheck/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/healthcheck/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyHealthCheck(self, content) def delete_healthcheck(self, service_id, version_number, name): """Delete the healthcheck for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/healthcheck/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/healthcheck/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -607,20 +607,20 @@ def create_request_setting(self, def get_request_setting(self, service_id, version_number, name): """Gets the specified Request Settings object.""" - content = self._fetch("/service/%s/version/%d/request_settings/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/request_settings/%s" % (service_id, version_number, urllib.quote(name))) return FastlyRequestSetting(self, content) def update_request_setting(self, service_id, version_number, name_key, **kwargs): """Updates the specified Request Settings object.""" body = self._formdata(kwargs, FastlyHealthCheck.FIELDS) - content = self._fetch("/service/%s/version/%d/request_settings/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/request_settings/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyRequestSetting(self, content) def delete_request_setting(self, service_id, version_number, name): """Removes the specfied Request Settings object.""" - content = self._fetch("/service/%s/version/%d/request_settings/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/request_settings/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -646,20 +646,20 @@ def create_response_object(self, service_id, version_number, name, status="200", def get_response_object(self, service_id, version_number, name): """Gets the specified Response Object.""" - content = self._fetch("/service/%s/version/%d/response_object/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/response_object/%s" % (service_id, version_number, urllib.quote(name))) return FastlyResponseObject(self, content) def update_response_object(self, service_id, version_number, name_key, **kwargs): """Updates the specified Response Object.""" body = self._formdata(kwargs, FastlyResponseObject.FIELDS) - content = self._fetch("/service/%s/version/%d/response_object/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/response_object/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyResponseObject(self, content) def delete_response_object(self, service_id, version_number, name): """Deletes the specified Response Object.""" - content = self._fetch("/service/%s/version/%d/response_object/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/response_object/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -695,7 +695,7 @@ def get_service_details(self, service_id): def get_service_by_name(self, service_name): """Get a specific service by name.""" - content = self._fetch("/service/search?name=%s" % service_name) + content = self._fetch("/service/search?name=%s" % urllib.quote(service_name)) return FastlyService(self, content) @@ -783,20 +783,20 @@ def create_syslog(self, def get_syslog(self, service_id, version_number, name): """Get the Syslog for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/syslog/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/syslog/%s" % (service_id, version_number, urllib.quote(name))) return FastlySyslog(self, content) def update_syslog(self, service_id, version_number, name_key, **kwargs): """Update the Syslog for a particular service and version.""" body = self._formdata(kwargs, FastlySyslog.FIELDS) - content = self._fetch("/service/%s/version/%d/syslog/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/syslog/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlySyslog(self, content) def delete_syslog(self, service_id, version_number, name): """Delete the Syslog for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/syslog/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/syslog/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -881,13 +881,13 @@ def download_vcl(self, service_id, version_number, name): def get_vcl(self, service_id, version_number, name, include_content=True): """Get the uploaded VCL for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/vcl/%s?include_content=%d" % (service_id, version_number, name, int(include_content))) + content = self._fetch("/service/%s/version/%d/vcl/%s?include_content=%d" % (service_id, version_number, urllib.quote(name), int(include_content))) return FastlyVCL(self, content) def get_vcl_html(self, service_id, version_number, name): """Get the uploaded VCL for a particular service and version with HTML syntax highlighting.""" - content = self._fetch("/service/%s/version/%d/vcl/%s/content" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/vcl/%s/content" % (service_id, version_number, urllib.quote(name))) return content.get("content", None) @@ -905,20 +905,20 @@ def get_generated_vcl_html(self, service_id, version_number): def set_main_vcl(self, service_id, version_number, name): """Set the specified VCL as the main.""" - content = self._fetch("/service/%s/version/%d/vcl/%s/main" % (service_id, version_number, name), method="PUT") + content = self._fetch("/service/%s/version/%d/vcl/%s/main" % (service_id, version_number, urllib.quote(name)), method="PUT") return FastlyVCL(self, content) def update_vcl(self, service_id, version_number, name_key, **kwargs): """Update the uploaded VCL for a particular service and version.""" body = self._formdata(kwargs, FastlyVCL.FIELDS) - content = self._fetch("/service/%s/version/%d/vcl/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/vcl/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyVCL(self, content) def delete_vcl(self, service_id, version_number, name): """Delete the uploaded VCL for a particular service and version.""" - content = self._fetch("/service/%s/version/%d/vcl/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/vcl/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) @@ -1004,20 +1004,20 @@ def create_wordpress(self, def get_wordpress(self, service_id, version_number, name): """Get information on a specific wordpress.""" - content = self._fetch("/service/%s/version/%d/wordpress/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/wordpress/%s" % (service_id, version_number, urllib.quote(name))) return FastlyWordpress(self, content) def update_wordpress(self, service_id, version_number, name_key, **kwargs): """Update a specified wordpress.""" body = self._formdata(kwargs, FastlyWordpress.FIELDS) - content = self._fetch("/service/%s/version/%d/wordpress/%s" % (service_id, version_number, name_key), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/wordpress/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyWordpress(self, content) def delete_wordpress(self, service_id, version_number, name): """Delete a specified wordpress.""" - content = self._fetch("/service/%s/version/%d/wordpress/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/wordpress/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content)