You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2009/07/11 19:00:43 UTC
svn commit: r793205 - in /couchdb/trunk:
share/www/script/test/attachments.js src/couchdb/couch_httpd_db.erl
Author: jan
Date: Sat Jul 11 17:00:42 2009
New Revision: 793205
URL: http://svn.apache.org/viewvc?rev=793205&view=rev
Log:
send Location header for new or updated attachments
Modified:
couchdb/trunk/share/www/script/test/attachments.js
couchdb/trunk/src/couchdb/couch_httpd_db.erl
Modified: couchdb/trunk/share/www/script/test/attachments.js
URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/attachments.js?rev=793205&r1=793204&r2=793205&view=diff
==============================================================================
--- couchdb/trunk/share/www/script/test/attachments.js (original)
+++ couchdb/trunk/share/www/script/test/attachments.js Sat Jul 11 17:00:42 2009
@@ -58,6 +58,10 @@
headers:{"Content-Type": "text/plain;charset=utf-8"}
});
T(xhr.status == 201);
+ TEquals("/bin_doc2/foo2.txt",
+ xhr.getResponseHeader("Location").substr(-18),
+ "should return Location header to newly created or updated attachment");
+
var rev = JSON.parse(xhr.responseText).rev;
binAttDoc2 = db.open("bin_doc2");
@@ -78,7 +82,8 @@
// test with rev, should not fail
var xhr = CouchDB.request("DELETE", "/test_suite_db/bin_doc2/foo2.txt?rev=" + rev);
T(xhr.status == 200);
-
+ TEquals(null, xhr.getResponseHeader("Location"),
+ "should not return Location header on DELETE request");
// test binary data
var bin_data = "JHAPDO*AU£PN ){(3u[d 93DQ9¡â¬])} ææøo'âÆæâ¤Ã§Ã¦ÏÏâ¢Â¥â«Â¶Â®#â ϶®¥Ïâ¬ÂªÂ®ËÏ8np";
Modified: couchdb/trunk/src/couchdb/couch_httpd_db.erl
URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_httpd_db.erl?rev=793205&r1=793204&r2=793205&view=diff
==============================================================================
--- couchdb/trunk/src/couchdb/couch_httpd_db.erl (original)
+++ couchdb/trunk/src/couchdb/couch_httpd_db.erl Sat Jul 11 17:00:42 2009
@@ -842,7 +842,19 @@
attachments = NewAttachment ++ proplists:delete(FileName, Attachments)
},
{ok, UpdatedRev} = couch_db:update_doc(Db, DocEdited, []),
- send_json(Req, case Method of 'DELETE' -> 200; _ -> 201 end, {[
+ #db{name=DbName} = Db,
+
+ {Status, Headers} = case Method of
+ 'DELETE' ->
+ {200, []};
+ _ ->
+ {201, [{"Location", absolute_uri(Req, "/" ++
+ binary_to_list(DbName) ++ "/" ++
+ binary_to_list(DocId) ++ "/" ++
+ binary_to_list(FileName)
+ )}]}
+ end,
+ send_json(Req,Status, Headers, {[
{ok, true},
{id, DocId},
{rev, couch_doc:rev_to_str(UpdatedRev)}