From 58e040359fa8d175b9eecec49f58e3dd00c78d1e Mon Sep 17 00:00:00 2001 From: John Christopher Anderson Date: Sun, 8 Feb 2009 20:29:51 +0000 Subject: extract method couch_httpd:send_redirect(Req, Path) git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@742158 13f79535-47bb-0310-9956-ffa450edef68 --- src/couchdb/couch_httpd.erl | 6 ++++-- src/couchdb/couch_httpd_db.erl | 5 ++--- src/couchdb/couch_httpd_misc_handlers.erl | 3 +-- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/couchdb') diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl index 56f651d8..767b91d4 100644 --- a/src/couchdb/couch_httpd.erl +++ b/src/couchdb/couch_httpd.erl @@ -21,7 +21,7 @@ -export([primary_header_value/2,partition/1,serve_file/3]). -export([start_chunked_response/3,send_chunk/2]). -export([start_json_response/2, start_json_response/3, end_json_response/1]). --export([send_response/4,send_method_not_allowed/2,send_error/4]). +-export([send_response/4,send_method_not_allowed/2,send_error/4, send_redirect/2]). -export([send_json/2,send_json/3,send_json/4]). -export([default_authentication_handler/1,special_test_authentication_handler/1]). @@ -424,7 +424,9 @@ send_error(Req, Code, Error, <<>>) -> send_error(Req, Code, Error, Msg) -> send_json(Req, Code, {[{<<"error">>, Error}, {<<"reason">>, Msg}]}). - +send_redirect(Req, Path) -> + Headers = [{"Location", couch_httpd:absolute_uri(Req, Path)}], + send_response(Req, 301, Headers, <<>>). negotiate_content_type(#httpd{mochi_req=MochiReq}) -> %% Determine the appropriate Content-Type header for a JSON response diff --git a/src/couchdb/couch_httpd_db.erl b/src/couchdb/couch_httpd_db.erl index 7d744d91..ae925123 100644 --- a/src/couchdb/couch_httpd_db.erl +++ b/src/couchdb/couch_httpd_db.erl @@ -263,9 +263,8 @@ db_req(#httpd{method='GET',mochi_req=MochiReq, path_parts=[DbName,<<"_design/",_ PathFront = "/" ++ couch_httpd:quote(binary_to_list(DbName)) ++ "/", RawSplit = regexp:split(MochiReq:get(raw_path),"_design%2F"), {ok, [PathFront|PathTail]} = RawSplit, - RedirectTo = couch_httpd:absolute_uri(Req, PathFront ++ "_design/" ++ - mochiweb_util:join(PathTail, "%2F")), - couch_httpd:send_response(Req, 301, [{"Location", RedirectTo}], <<>>); + couch_httpd:send_redirect(Req, PathFront ++ "_design/" ++ + mochiweb_util:join(PathTail, "_design%2F")); db_req(#httpd{path_parts=[_DbName,<<"_design">>,Name]}=Req, Db) -> db_doc_req(Req, Db, <<"_design/",Name/binary>>); diff --git a/src/couchdb/couch_httpd_misc_handlers.erl b/src/couchdb/couch_httpd_misc_handlers.erl index 2ba8ef64..71a0e9ae 100644 --- a/src/couchdb/couch_httpd_misc_handlers.erl +++ b/src/couchdb/couch_httpd_misc_handlers.erl @@ -50,8 +50,7 @@ handle_utils_dir_req(#httpd{method='GET'}=Req, DocumentRoot) -> couch_httpd:serve_file(Req, RelativePath, DocumentRoot); {_ActionKey, "", _RelativePath} -> % GET /_utils - Headers = [{"Location", couch_httpd:absolute_uri(Req, "/_utils/")}], - couch_httpd:send_response(Req, 301, Headers, <<>>) + couch_httpd:send_redirect(Req, "/_utils/") end; handle_utils_dir_req(Req, _) -> send_method_not_allowed(Req, "GET,HEAD"). -- cgit v1.2.3