summaryrefslogtreecommitdiff
path: root/src/couchdb
diff options
context:
space:
mode:
Diffstat (limited to 'src/couchdb')
-rw-r--r--src/couchdb/couch_doc.erl2
-rw-r--r--src/couchdb/couch_httpd.erl34
-rw-r--r--src/couchdb/couch_view.erl2
3 files changed, 19 insertions, 19 deletions
diff --git a/src/couchdb/couch_doc.erl b/src/couchdb/couch_doc.erl
index 1ced93b3..cb70a576 100644
--- a/src/couchdb/couch_doc.erl
+++ b/src/couchdb/couch_doc.erl
@@ -172,7 +172,7 @@ bin_to_binary({Fd, Sp, Len}) ->
Bin.
get_view_functions(#doc{body={obj, Fields}}) ->
- Lang = proplists:get_value("language", Fields, "text/javascript"),
+ Lang = proplists:get_value("language", Fields, "javascript"),
{obj, Views} = proplists:get_value("views", Fields, {obj, []}),
{Lang, [{ViewName, Value} || {ViewName, Value} <- Views, is_list(Value)]};
get_view_functions(_Doc) ->
diff --git a/src/couchdb/couch_httpd.erl b/src/couchdb/couch_httpd.erl
index 67a7f13c..915889ff 100644
--- a/src/couchdb/couch_httpd.erl
+++ b/src/couchdb/couch_httpd.erl
@@ -397,30 +397,30 @@ handle_db_request(Req, 'POST', {DbName, _Db, ["_temp_view"]}) ->
end_docid = EndDocId
} = QueryArgs = parse_view_query(Req),
- ContentType = case Req:get_primary_header_value("content-type") of
- undefined ->
- "text/javascript";
- Else ->
- Else
+ case Req:get_primary_header_value("content-type") of
+ undefined -> ok;
+ "application/json" -> ok;
+ Else -> throw({incorrect_mime_type, Else})
end,
- case cjson:decode(Req:recv_body()) of
- {obj, Props} ->
- MapSrc = proplists:get_value("map",Props),
- RedSrc = proplists:get_value("reduce",Props),
- {ok, View} = couch_view:get_reduce_view(
- {temp, DbName, ContentType, MapSrc, RedSrc}),
- {ok, Value} = couch_view:reduce(View, {StartKey, StartDocId}, {EndKey, EndDocId}),
- send_json(Req, {obj, [{ok,true}, {result, Value}]});
- Src when is_list(Src) ->
-
- {ok, View} = couch_view:get_map_view({temp, DbName, ContentType, Src}),
+ {obj, Props} = cjson:decode(Req:recv_body()),
+ Language = proplists:get_value("language", Props, "javascript"),
+ MapSrc = proplists:get_value("map", Props),
+ case proplists:get_value("reduce", Props, null) of
+ null ->
+ {ok, View} = couch_view:get_map_view({temp, DbName, Language, MapSrc}),
Start = {StartKey, StartDocId},
{ok, TotalRows} = couch_view:get_row_count(View),
FoldlFun = make_view_fold_fun(Req, QueryArgs, TotalRows,
fun couch_view:reduce_to_count/1),
FoldAccInit = {Count, SkipCount, undefined, []},
FoldResult = couch_view:fold(View, Start, Dir, FoldlFun, FoldAccInit),
- finish_view_fold(Req, TotalRows, FoldResult)
+ finish_view_fold(Req, TotalRows, FoldResult);
+
+ RedSrc ->
+ {ok, View} = couch_view:get_reduce_view(
+ {temp, DbName, Language, MapSrc, RedSrc}),
+ {ok, Value} = couch_view:reduce(View, {StartKey, StartDocId}, {EndKey, EndDocId}),
+ send_json(Req, {obj, [{ok,true}, {result, Value}]})
end;
handle_db_request(_Req, _Method, {_DbName, _Db, ["_temp_view"]}) ->
diff --git a/src/couchdb/couch_view.erl b/src/couchdb/couch_view.erl
index 5a1ff2e4..4f6a2f47 100644
--- a/src/couchdb/couch_view.erl
+++ b/src/couchdb/couch_view.erl
@@ -153,7 +153,7 @@ reduce_to_count(Reductions) ->
design_doc_to_view_group(#doc{id=Id,body={obj, Fields}}) ->
- Language = proplists:get_value("language", Fields, "text/javascript"),
+ Language = proplists:get_value("language", Fields, "javascript"),
{obj, RawViews} = proplists:get_value("views", Fields, {obj, []}),
% extract the map/reduce views from the json fields and into lists