mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-15 04:30:25 +00:00
Add default CTP: "text/html" maps to to_html
This commit is contained in:
parent
97b8401c45
commit
f316b47d13
3 changed files with 39 additions and 1 deletions
|
@ -219,7 +219,19 @@ options(Req, State) ->
|
||||||
content_types_provided(Req, State) ->
|
content_types_provided(Req, State) ->
|
||||||
case call(Req, State, content_types_provided) of
|
case call(Req, State, content_types_provided) of
|
||||||
no_call ->
|
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} ->
|
{halt, Req2, HandlerState} ->
|
||||||
terminate(Req2, State#state{handler_state=HandlerState});
|
terminate(Req2, State#state{handler_state=HandlerState});
|
||||||
{[], Req2, HandlerState} ->
|
{[], Req2, HandlerState} ->
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
-export([rest_options_default/1]).
|
-export([rest_options_default/1]).
|
||||||
-export([rest_param_all/1]).
|
-export([rest_param_all/1]).
|
||||||
-export([rest_patch/1]).
|
-export([rest_patch/1]).
|
||||||
|
-export([rest_postonly/1]).
|
||||||
-export([rest_resource_etags/1]).
|
-export([rest_resource_etags/1]).
|
||||||
-export([rest_resource_etags_if_none_match/1]).
|
-export([rest_resource_etags_if_none_match/1]).
|
||||||
-export([set_env_dispatch/1]).
|
-export([set_env_dispatch/1]).
|
||||||
|
@ -135,6 +136,7 @@ groups() ->
|
||||||
rest_options_default,
|
rest_options_default,
|
||||||
rest_param_all,
|
rest_param_all,
|
||||||
rest_patch,
|
rest_patch,
|
||||||
|
rest_postonly,
|
||||||
rest_resource_etags,
|
rest_resource_etags,
|
||||||
rest_resource_etags_if_none_match,
|
rest_resource_etags_if_none_match,
|
||||||
set_resp_body,
|
set_resp_body,
|
||||||
|
@ -366,6 +368,7 @@ init_dispatch(Config) ->
|
||||||
{"/missing_get_callbacks", rest_missing_callbacks, []},
|
{"/missing_get_callbacks", rest_missing_callbacks, []},
|
||||||
{"/missing_put_callbacks", rest_missing_callbacks, []},
|
{"/missing_put_callbacks", rest_missing_callbacks, []},
|
||||||
{"/nodelete", rest_nodelete_resource, []},
|
{"/nodelete", rest_nodelete_resource, []},
|
||||||
|
{"/postonly", rest_postonly_resource, []},
|
||||||
{"/patch", rest_patch_resource, []},
|
{"/patch", rest_patch_resource, []},
|
||||||
{"/resetags", rest_resource_etags, []},
|
{"/resetags", rest_resource_etags, []},
|
||||||
{"/rest_expires", rest_expires, []},
|
{"/rest_expires", rest_expires, []},
|
||||||
|
@ -992,6 +995,15 @@ rest_patch(Config) ->
|
||||||
ok
|
ok
|
||||||
end || {Status, Headers, Body} <- Tests].
|
end || {Status, Headers, Body} <- Tests].
|
||||||
|
|
||||||
|
rest_postonly(Config) ->
|
||||||
|
Client = ?config(client, Config),
|
||||||
|
Headers = [
|
||||||
|
{<<"content-type">>, <<"text/plain">>}
|
||||||
|
],
|
||||||
|
{ok, Client2} = cowboy_client:request(<<"POST">>,
|
||||||
|
build_url("/postonly", Config), Headers, "12345", Client),
|
||||||
|
{ok, 204, _, _} = cowboy_client:response(Client2).
|
||||||
|
|
||||||
rest_resource_get_etag(Config, Type) ->
|
rest_resource_get_etag(Config, Type) ->
|
||||||
rest_resource_get_etag(Config, Type, []).
|
rest_resource_get_etag(Config, Type, []).
|
||||||
|
|
||||||
|
|
14
test/rest_postonly_resource.erl
Normal file
14
test/rest_postonly_resource.erl
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
-module(rest_postonly_resource).
|
||||||
|
-export([init/3, allowed_methods/2, content_types_accepted/2, from_text/2]).
|
||||||
|
|
||||||
|
init(_Transport, _Req, _Opts) ->
|
||||||
|
{upgrade, protocol, cowboy_rest}.
|
||||||
|
|
||||||
|
allowed_methods(Req, State) ->
|
||||||
|
{[<<"POST">>], Req, State}.
|
||||||
|
|
||||||
|
content_types_accepted(Req, State) ->
|
||||||
|
{[{{<<"text">>, <<"plain">>, '*'}, from_text}], Req, State}.
|
||||||
|
|
||||||
|
from_text(Req, State) ->
|
||||||
|
{true, Req, State}.
|
Loading…
Add table
Add a link
Reference in a new issue