Return-Path: X-Original-To: apmail-couchdb-commits-archive@www.apache.org Delivered-To: apmail-couchdb-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C060DE406 for ; Thu, 7 Feb 2013 22:49:14 +0000 (UTC) Received: (qmail 90753 invoked by uid 500); 7 Feb 2013 22:49:14 -0000 Delivered-To: apmail-couchdb-commits-archive@couchdb.apache.org Received: (qmail 90702 invoked by uid 500); 7 Feb 2013 22:49:14 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 90616 invoked by uid 99); 7 Feb 2013 22:49:14 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 Feb 2013 22:49:14 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 2A3BD24FA8; Thu, 7 Feb 2013 22:49:14 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: rnewson@apache.org To: commits@couchdb.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [2/2] git commit: support JSONP in externals Message-Id: <20130207224914.2A3BD24FA8@tyr.zones.apache.org> Date: Thu, 7 Feb 2013 22:49:14 +0000 (UTC) Updated Branches: refs/heads/1.3.x 8848b5ddb -> 357395267 refs/heads/master 9116560e4 -> 3b103eb10 support JSONP in externals COUCHDB-1313 Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/3b103eb1 Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/3b103eb1 Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/3b103eb1 Branch: refs/heads/master Commit: 3b103eb10b115b4b6a8f0c6e31dc92292c0aeb71 Parents: 9116560 Author: Robert Newson Authored: Thu Oct 20 16:17:22 2011 +0100 Committer: Robert Newson Committed: Thu Feb 7 22:44:44 2013 +0000 ---------------------------------------------------------------------- src/couchdb/couch_db.hrl | 3 ++- src/couchdb/couch_httpd_external.erl | 18 +++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb/blob/3b103eb1/src/couchdb/couch_db.hrl ---------------------------------------------------------------------- diff --git a/src/couchdb/couch_db.hrl b/src/couchdb/couch_db.hrl index 42f10ac..8d7d020 100644 --- a/src/couchdb/couch_db.hrl +++ b/src/couchdb/couch_db.hrl @@ -241,7 +241,8 @@ stop = false, data = <<>>, ctype = "application/json", - headers = [] + headers = [], + json = nil }). -record(index_header, http://git-wip-us.apache.org/repos/asf/couchdb/blob/3b103eb1/src/couchdb/couch_httpd_external.erl ---------------------------------------------------------------------- diff --git a/src/couchdb/couch_httpd_external.erl b/src/couchdb/couch_httpd_external.erl index bfe77a3..2036d25 100644 --- a/src/couchdb/couch_httpd_external.erl +++ b/src/couchdb/couch_httpd_external.erl @@ -120,17 +120,21 @@ json_query_keys([{<<"key">>, Value} | Rest], Acc) -> json_query_keys([Term | Rest], Acc) -> json_query_keys(Rest, [Term|Acc]). -send_external_response(#httpd{mochi_req=MochiReq}=Req, Response) -> +send_external_response(Req, Response) -> #extern_resp_args{ code = Code, data = Data, ctype = CType, - headers = Headers + headers = Headers, + json = Json } = parse_external_response(Response), - couch_httpd:log_request(Req, Code), - Resp = MochiReq:respond({Code, - default_or_content_type(CType, Headers ++ couch_httpd:server_header()), Data}), - {ok, Resp}. + Headers1 = default_or_content_type(CType, Headers), + case Json of + nil -> + couch_httpd:send_response(Req, Code, Headers1, Data); + Json -> + couch_httpd:send_json(Req, Code, Headers1, Json) + end. parse_external_response({Response}) -> lists:foldl(fun({Key,Value}, Args) -> @@ -143,7 +147,7 @@ parse_external_response({Response}) -> Args#extern_resp_args{stop=true}; {<<"json">>, Value} -> Args#extern_resp_args{ - data=?JSON_ENCODE(Value), + json=Value, ctype="application/json"}; {<<"body">>, Value} -> Args#extern_resp_args{data=Value, ctype="text/html; charset=utf-8"};