aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-04-26 13:45:47 +0200
committerLoïc Hoguin <[email protected]>2013-04-26 13:45:47 +0200
commite73780975c3082381ac71ef119776b0678776d26 (patch)
tree2f203ca8829f06c10ab608e273390eee87edf101 /src
parent61b3157ad14ae49da3ac6b33643a876eb18bbf2a (diff)
parent72a9ccacdd5fead8f9c45a8a38327382be8534d8 (diff)
downloadcowboy-e73780975c3082381ac71ef119776b0678776d26.tar.gz
cowboy-e73780975c3082381ac71ef119776b0678776d26.tar.bz2
cowboy-e73780975c3082381ac71ef119776b0678776d26.zip
Merge branch 'pr-381-fix' of git://github.com/seletskiy/cowboy
Diffstat (limited to 'src')
-rw-r--r--src/cowboy_rest.erl20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/cowboy_rest.erl b/src/cowboy_rest.erl
index c28b627..4ba2b47 100644
--- a/src/cowboy_rest.erl
+++ b/src/cowboy_rest.erl
@@ -219,13 +219,25 @@ options(Req, State) ->
content_types_provided(Req, State) ->
case call(Req, State, content_types_provided) of
no_call ->
- not_acceptable(Req, State);
+ State2 = State#state{
+ content_types_p=[{{<<"text">>, <<"html">>, '*'}, to_html}]},
+ case cowboy_req:parse_header(<<"accept">>, Req) of
+ {error, badarg} ->
+ respond(Req, State2, 400);
+ {ok, undefined, Req2} ->
+ languages_provided(
+ cowboy_req:set_meta(media_type, {<<"text">>, <<"html">>, []}, Req2),
+ State2#state{content_type_a={{<<"text">>, <<"html">>, []}, to_html}});
+ {ok, Accept, Req2} ->
+ Accept2 = prioritize_accept(Accept),
+ choose_media_type(Req2, State2, Accept2)
+ end;
{halt, Req2, HandlerState} ->
terminate(Req2, State#state{handler_state=HandlerState});
{[], Req2, HandlerState} ->
not_acceptable(Req2, State#state{handler_state=HandlerState});
{CTP, Req2, HandlerState} ->
- CTP2 = [normalize_content_types(P) || P <- CTP],
+ CTP2 = [normalize_content_types(P) || P <- CTP],
State2 = State#state{
handler_state=HandlerState, content_types_p=CTP2},
case cowboy_req:parse_header(<<"accept">>, Req2) of
@@ -244,7 +256,7 @@ content_types_provided(Req, State) ->
normalize_content_types({ContentType, Callback})
when is_binary(ContentType) ->
- {cowboy_http:content_type(ContentType), Callback};
+ {cowboy_http:content_type(ContentType), Callback};
normalize_content_types(Normalized) ->
Normalized.
@@ -779,7 +791,7 @@ accept_resource(Req, State) ->
{halt, Req2, HandlerState} ->
terminate(Req2, State#state{handler_state=HandlerState});
{CTA, Req2, HandlerState} ->
- CTA2 = [normalize_content_types(P) || P <- CTA],
+ CTA2 = [normalize_content_types(P) || P <- CTA],
State2 = State#state{handler_state=HandlerState},
case cowboy_req:parse_header(<<"content-type">>, Req2) of
{ok, ContentType, Req3} ->