From 30a26d099f7945eaca4832e4f76bda901cd8ec32 Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Fri, 24 Jan 2014 15:01:40 -0500 Subject: [PATCH] Have the index use the same abort method --- endpoints/index.py | 4 +++- endpoints/registry.py | 26 ++------------------------ util/http.py | 27 +++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 25 deletions(-) create mode 100644 util/http.py diff --git a/endpoints/index.py b/endpoints/index.py index 122036c7a..9cb6f61f5 100644 --- a/endpoints/index.py +++ b/endpoints/index.py @@ -2,7 +2,7 @@ import json import logging import urlparse -from flask import request, make_response, jsonify, abort, session, Blueprint +from flask import request, make_response, jsonify, abort as flask_abort, session, Blueprint from functools import wraps from data import model @@ -16,6 +16,8 @@ from auth.permissions import (ModifyRepositoryPermission, UserPermission, ReadRepositoryPermission, CreateRepositoryPermission) +from util.http import abort + logger = logging.getLogger(__name__) index = Blueprint('index', __name__) diff --git a/endpoints/registry.py b/endpoints/registry.py index 5ec1e02fa..3218e38bf 100644 --- a/endpoints/registry.py +++ b/endpoints/registry.py @@ -10,8 +10,9 @@ from time import time from data.queue import image_diff_queue from app import app -from auth.auth import process_auth, extract_namespace_repo_from_session, get_authenticated_user, get_validated_token +from auth.auth import process_auth, extract_namespace_repo_from_session from util import checksums, changes +from util.http import abort from auth.permissions import (ReadRepositoryPermission, ModifyRepositoryPermission) from data import model @@ -21,10 +22,6 @@ registry = Blueprint('registry', __name__) store = app.config['STORAGE'] logger = logging.getLogger(__name__) -DEFAULT_MESSAGE = {} -DEFAULT_MESSAGE[400] = 'Invalid Request' -DEFAULT_MESSAGE[403] = 'Forbidden' -DEFAULT_MESSAGE[404] = 'Not Found' @registry.errorhandler(404) def fallback_not_found(e): @@ -38,25 +35,6 @@ def fallback_forbidden(e): def fallback_invalid_request(e): return make_response('Invalid Request', 400) -def abort(status_code, message=None, **kwargs): - if status_code == 403 and not message: - # Create a default error message for auth failure. - message = 'Forbidden. ' - auth_user = get_authenticated_user() - auth_token = get_validated_token() - if auth_user: - message = message + 'Current user: ' + auth_user - elif auth_token: - message = message + 'Current token: ' + auth_token - - message = message % kwargs if message else DEFAULT_MESSAGE[status_code] - - # Log the abort. - log.error('Error %s: %s. Arguments: %s' % (status_code, message, request.view_args)) - - # Report the abort to the user. - flask_abort(make_response(HTTPException(message), status_code, headers)) - class SocketReader(object): def __init__(self, fp): diff --git a/util/http.py b/util/http.py new file mode 100644 index 000000000..fe2f09172 --- /dev/null +++ b/util/http.py @@ -0,0 +1,27 @@ +from flask import request, abort as flask_abort +from auth.auth import process_auth, extract_namespace_repo_from_session, get_authenticated_user, get_validated_token + +DEFAULT_MESSAGE = {} +DEFAULT_MESSAGE[400] = 'Invalid Request' +DEFAULT_MESSAGE[403] = 'Forbidden' +DEFAULT_MESSAGE[404] = 'Not Found' + +def abort(status_code, message=None, **kwargs): + if status_code == 403 and not message: + # Create a default error message for auth failure. + message = 'Forbidden. ' + auth_user = get_authenticated_user() + auth_token = get_validated_token() + if auth_user: + message = message + 'Current user: ' + auth_user + elif auth_token: + message = message + 'Current token: ' + auth_token + + message = message % kwargs if message else DEFAULT_MESSAGE[status_code] + + # Log the abort. + log.error('Error %s: %s. Arguments: %s' % (status_code, message, request.view_args)) + + # Report the abort to the user. + flask_abort(make_response(HTTPException(message), status_code, headers)) +