diff options
Diffstat (limited to 'src/cowboy_rest.erl')
-rw-r--r-- | src/cowboy_rest.erl | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/cowboy_rest.erl b/src/cowboy_rest.erl index c28b627..9757b85 100644 --- a/src/cowboy_rest.erl +++ b/src/cowboy_rest.erl @@ -219,7 +219,19 @@ 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} -> |