From 7e5be1bf600d648ec416f10eb5a900f29d367f06 Mon Sep 17 00:00:00 2001 From: Adam McElwee Date: Sat, 8 Oct 2016 18:38:00 -0500 Subject: [PATCH 1/3] Add FastlyGzip and CRUD operations for it --- fastly/__init__.py | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/fastly/__init__.py b/fastly/__init__.py index 032b693..1843bfe 100755 --- a/fastly/__init__.py +++ b/fastly/__init__.py @@ -451,6 +451,43 @@ def get_event_log(self, object_id): return FastlyEventLog(self, content) + def list_gzip(self, service_id, version_number): + """List all gzip configurations for a particular service and version""" + content = self._fetch("/service/%s/version/%d/gzip" % (service_id, version_number)) + return map(lambda x: FastlyGzip(self, x), content) + + + def create_gzip(self, service_id, version_number, name, cache_condition=None, content_types=None, extensions=None): + body = self._formdata({ + "name": name, + "cache_condition": cache_condition, + "content_types": content_types, + "extensions": extensions + }, FastlyGzip.FIELDS) + """Creates a new Gzip object.""" + content = self._fetch("/service/%s/version/%d/gzip" % (service_id, version_number), method="POST", body=body) + return FastlyGzip(self, content) + + + def get_gzip(self, service_id, version_number, name): + """Retrieves a Header object by name.""" + content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, name)) + return FastlyGzip(self, content) + + + def update_gzip(self, service_id, version_number, name, **kwargs): + """Modifies an existing Gzip object by name.""" + body = self._formdata(kwargs, FastlyGzip.FIELDS) + content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, name), method="PUT", body=body) + return FastlyHeader(self, content) + + + def delete_gzip(self, service_id, version_number, name): + """Deletes a Gzip object by name.""" + content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, name), method="DELETE") + return self._status(content) + + def list_headers(self, service_id, version_number): """Retrieves all Header objects for a particular Version of a Service.""" content = self._fetch("/service/%s/version/%d/header" % (service_id, version_number)) @@ -1328,6 +1365,18 @@ class FastlyEventLog(FastlyObject): ] +class FastlyGzip(FastlyObject, IServiceVersionObject): + """Gzip configuration allows you to choose resources to automatically compress.""" + FIELDS = [ + "cache_condition", + "content_types", + "extensions", + "name", + "service_id", + "version" + ] + + class FastlyHeader(FastlyObject, IServiceVersionObject): """Header objects are used to add, modify, or delete headers from requests and responses. The header content can be simple strings or be derived from variables inside Varnish. Regular expressions can be used to customize the headers even further.""" FIELDS = [ From 0ab78c01b7fd24f3737fa3d29372718f8853026d Mon Sep 17 00:00:00 2001 From: Adam McElwee Date: Wed, 12 Oct 2016 14:11:07 -0500 Subject: [PATCH 2/3] urllib.quote for gzip ops --- fastly/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fastly/__init__.py b/fastly/__init__.py index 1843bfe..bae9fb7 100755 --- a/fastly/__init__.py +++ b/fastly/__init__.py @@ -471,20 +471,20 @@ def create_gzip(self, service_id, version_number, name, cache_condition=None, co def get_gzip(self, service_id, version_number, name): """Retrieves a Header object by name.""" - content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, name)) + content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, urllib.quote(name))) return FastlyGzip(self, content) - def update_gzip(self, service_id, version_number, name, **kwargs): + def update_gzip(self, service_id, version_number, name_key, **kwargs): """Modifies an existing Gzip object by name.""" body = self._formdata(kwargs, FastlyGzip.FIELDS) - content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, name), method="PUT", body=body) + content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) return FastlyHeader(self, content) def delete_gzip(self, service_id, version_number, name): """Deletes a Gzip object by name.""" - content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, name), method="DELETE") + content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, urllib.quote(name)), method="DELETE") return self._status(content) From c4eccb937d9c8e89e78025462216623d06b0ac49 Mon Sep 17 00:00:00 2001 From: Adam McElwee Date: Wed, 12 Oct 2016 14:13:50 -0500 Subject: [PATCH 3/3] Return correct type in update_gzip --- fastly/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastly/__init__.py b/fastly/__init__.py index bae9fb7..017e85f 100755 --- a/fastly/__init__.py +++ b/fastly/__init__.py @@ -479,7 +479,7 @@ def update_gzip(self, service_id, version_number, name_key, **kwargs): """Modifies an existing Gzip object by name.""" body = self._formdata(kwargs, FastlyGzip.FIELDS) content = self._fetch("/service/%s/version/%d/gzip/%s" % (service_id, version_number, urllib.quote(name_key)), method="PUT", body=body) - return FastlyHeader(self, content) + return FastlyGzip(self, content) def delete_gzip(self, service_id, version_number, name):