mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
The onresponse hook now receives 4 arguments, including the body
We do not always provide the body however. It is not available when using chunked replies, or when using set_resp_body_fun.
This commit is contained in:
parent
7367f07ca0
commit
76cd1e40c9
3 changed files with 5 additions and 5 deletions
|
@ -34,7 +34,7 @@
|
||||||
%% any dispatching is done. Host info, path info and bindings are thus
|
%% any dispatching is done. Host info, path info and bindings are thus
|
||||||
%% not available at this point.</dd>
|
%% not available at this point.</dd>
|
||||||
%% <dt>onresponse</dt><dd>Optional fun that allows replacing a response
|
%% <dt>onresponse</dt><dd>Optional fun that allows replacing a response
|
||||||
%% sent by the application based on its status code or headers.</dd>
|
%% sent by the application.</dd>
|
||||||
%% <dt>timeout</dt><dd>Time in milliseconds before an idle
|
%% <dt>timeout</dt><dd>Time in milliseconds before an idle
|
||||||
%% connection is closed. Defaults to 5000 milliseconds.</dd>
|
%% connection is closed. Defaults to 5000 milliseconds.</dd>
|
||||||
%% </dl>
|
%% </dl>
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
|
|
||||||
-type onrequest_fun() :: fun((Req) -> Req).
|
-type onrequest_fun() :: fun((Req) -> Req).
|
||||||
-type onresponse_fun() ::
|
-type onresponse_fun() ::
|
||||||
fun((cowboy_http:status(), cowboy_http:headers(), Req) -> Req).
|
fun((cowboy_http:status(), cowboy_http:headers(), iodata(), Req) -> Req).
|
||||||
|
|
||||||
-export_type([onrequest_fun/0]).
|
-export_type([onrequest_fun/0]).
|
||||||
-export_type([onresponse_fun/0]).
|
-export_type([onresponse_fun/0]).
|
||||||
|
|
|
@ -1108,7 +1108,7 @@ response(Status, Headers, RespHeaders, DefaultHeaders, Body, Req=#http_req{
|
||||||
FullHeaders = response_merge_headers(Headers, RespHeaders, DefaultHeaders),
|
FullHeaders = response_merge_headers(Headers, RespHeaders, DefaultHeaders),
|
||||||
Req2 = case OnResponse of
|
Req2 = case OnResponse of
|
||||||
undefined -> Req;
|
undefined -> Req;
|
||||||
OnResponse -> OnResponse(Status, FullHeaders,
|
OnResponse -> OnResponse(Status, FullHeaders, Body,
|
||||||
%% Don't call 'onresponse' from the hook itself.
|
%% Don't call 'onresponse' from the hook itself.
|
||||||
Req#http_req{resp_headers=[], resp_body= <<>>,
|
Req#http_req{resp_headers=[], resp_body= <<>>,
|
||||||
onresponse=undefined})
|
onresponse=undefined})
|
||||||
|
|
|
@ -188,7 +188,7 @@ init_per_group(onresponse, Config) ->
|
||||||
{ok, _} = cowboy:start_http(onresponse, 100, [{port, Port}], [
|
{ok, _} = cowboy:start_http(onresponse, 100, [{port, Port}], [
|
||||||
{dispatch, init_dispatch(Config)},
|
{dispatch, init_dispatch(Config)},
|
||||||
{max_keepalive, 50},
|
{max_keepalive, 50},
|
||||||
{onresponse, fun onresponse_hook/3},
|
{onresponse, fun onresponse_hook/4},
|
||||||
{timeout, 500}
|
{timeout, 500}
|
||||||
]),
|
]),
|
||||||
{ok, Client} = cowboy_client:init([]),
|
{ok, Client} = cowboy_client:init([]),
|
||||||
|
@ -623,7 +623,7 @@ onresponse_reply(Config) ->
|
||||||
{error, closed} = cowboy_client:response_body(Client3).
|
{error, closed} = cowboy_client:response_body(Client3).
|
||||||
|
|
||||||
%% Hook for the above onresponse tests.
|
%% Hook for the above onresponse tests.
|
||||||
onresponse_hook(_, Headers, Req) ->
|
onresponse_hook(_, Headers, _, Req) ->
|
||||||
{ok, Req2} = cowboy_req:reply(
|
{ok, Req2} = cowboy_req:reply(
|
||||||
<<"777 Lucky">>, [{<<"x-hook">>, <<"onresponse">>}|Headers], Req),
|
<<"777 Lucky">>, [{<<"x-hook">>, <<"onresponse">>}|Headers], Req),
|
||||||
Req2.
|
Req2.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue