From 092e236694ae6354b9b6c0be6f38187a1fa0d081 Mon Sep 17 00:00:00 2001 From: jakedt Date: Fri, 14 Mar 2014 18:39:31 -0400 Subject: [PATCH] Write a flask-restful version of cache-control. Remove the comments to add back in post methods. --- endpoints/api/image.py | 4 ++-- endpoints/api/permission.py | 4 ++-- endpoints/api/team.py | 2 +- util/cache.py | 13 +++++++++++++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/endpoints/api/image.py b/endpoints/api/image.py index 4aff05e93..f52e4544f 100644 --- a/endpoints/api/image.py +++ b/endpoints/api/image.py @@ -6,7 +6,7 @@ from flask.ext.restful import abort from app import app from endpoints.api import resource, nickname, require_repo_read, RepositoryParamResource from data import model -from util.cache import cache_control +from util.cache import cache_control_flask_restful store = app.config['STORAGE'] @@ -72,7 +72,7 @@ class RepositoryImage(RepositoryParamResource): class RepositoryImageChanges(RepositoryParamResource): """ Resource for handling repository image change lists. """ - @cache_control(max_age=60*60) # Cache for one hour + @cache_control_flask_restful(max_age=60*60) # Cache for one hour @require_repo_read @nickname('getImageChanges') def get(self, namespace, repository, image_id): diff --git a/endpoints/api/permission.py b/endpoints/api/permission.py index ea329da21..417e7eed8 100644 --- a/endpoints/api/permission.py +++ b/endpoints/api/permission.py @@ -151,7 +151,7 @@ class RepositoryUserPermission(RepositoryParamResource): 'role': new_permission['role']}, repo=model.get_repository(namespace, repository)) - return perm_view, 200 # 201 for post + return perm_view, 200 @require_repo_admin @nickname('deleteUserPermissions') @@ -220,7 +220,7 @@ class RepositoryTeamPermission(RepositoryParamResource): 'role': new_permission['role']}, repo=model.get_repository(namespace, repository)) - return role_view(perm), 200 # Should be 201 for post + return role_view(perm), 200 @require_repo_admin @nickname('deleteTeamPermissions') diff --git a/endpoints/api/team.py b/endpoints/api/team.py index 8892e68e8..6b342e596 100644 --- a/endpoints/api/team.py +++ b/endpoints/api/team.py @@ -93,7 +93,7 @@ class OrganizationTeam(ApiResource): get_authenticated_user().username) log_action('org_set_team_role', orgname, {'team': teamname, 'role': details['role']}) - return team_view(orgname, team), 200 # 201 for post + return team_view(orgname, team), 200 abort(403) diff --git a/util/cache.py b/util/cache.py index 5ba0a7a34..ade76781f 100644 --- a/util/cache.py +++ b/util/cache.py @@ -1,4 +1,5 @@ from functools import wraps +from flask.ext.restful.utils import unpack def cache_control(max_age=55): @@ -12,6 +13,18 @@ def cache_control(max_age=55): return wrap +def cache_control_flask_restful(max_age=55): + def wrap(f): + @wraps(f) + def add_max_age(*args, **kwargs): + response = f(*args, **kwargs) + body, status_code, headers = unpack(response) + headers['Cache-Control'] = 'max-age=%d' % max_age + return body, status_code, headers + return add_max_age + return wrap + + def no_cache(f): @wraps(f) def add_no_cache(*args, **kwargs):