0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Introduce cowboy_http_req:body/1 to read the full request body.

This commit is contained in:
Loïc Hoguin 2011-03-21 21:28:24 +01:00
parent e9781e77f1
commit 7cacb88fec
2 changed files with 15 additions and 13 deletions

View file

@ -167,17 +167,8 @@ handler_terminate(HandlerState, Req, State=#state{handler={Handler, _Opts}}) ->
ensure_body_processed(#http_req{body_state=done}) ->
ok;
ensure_body_processed(Req=#http_req{body_state=waiting}) ->
{Length, Req2} = cowboy_http_req:header('Content-Length', Req),
case Length of
"" -> ok;
_Any ->
Length2 = list_to_integer(Length),
skip_body(Length2, Req2)
end.
-spec skip_body(Length::non_neg_integer(), Req::#http_req{}) -> ok | close.
skip_body(Length, Req) ->
case cowboy_http_req:body(Length, Req) of
case cowboy_http_req:body(Req) of
{error, badarg} -> ok; %% No body.
{error, _Reason} -> close;
_Any -> ok
end.

View file

@ -25,7 +25,7 @@
]). %% Request API.
-export([
body/2
body/1, body/2
]). %% Request Body API.
-export([
@ -137,8 +137,19 @@ headers(Req) ->
%% Request Body API.
%% @todo We probably want to configure the timeout.
%% @todo We probably want to allow a max length.
-spec body(Req::#http_req{})
-> {Body::binary(), Req::#http_req{}} | {error, Reason::posix()}.
body(Req) ->
{Length, Req2} = cowboy_http_req:header('Content-Length', Req),
case Length of
"" -> {error, badarg};
_Any ->
Length2 = list_to_integer(Length),
body(Length2, Req2)
end.
%% @todo We probably want to configure the timeout.
-spec body(Length::non_neg_integer(), Req::#http_req{})
-> {Body::binary(), Req::#http_req{}} | {error, Reason::posix()}.
body(Length, Req=#http_req{socket=Socket, transport=Transport, body_state=waiting}) ->