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

Add cowboy_req:filter_cookies/2

This commit is contained in:
Loïc Hoguin 2019-10-05 11:23:57 +02:00
parent 5ffb4f98e0
commit 03dac1486d
No known key found for this signature in database
GPG key ID: 8A9DF795F6FED764
5 changed files with 126 additions and 0 deletions

View file

@ -92,6 +92,10 @@ echo(<<"match">>, Req, Opts) ->
Match
end,
{ok, cowboy_req:reply(200, #{}, value_to_iodata(Value), Req), Opts};
echo(<<"filter_then_parse_cookies">>, Req0, Opts) ->
Req = cowboy_req:filter_cookies([cake, color], Req0),
Value = cowboy_req:parse_cookies(Req),
{ok, cowboy_req:reply(200, #{}, value_to_iodata(Value), Req), Opts};
echo(What, Req, Opts) ->
Key = binary_to_atom(What, latin1),
Value = case cowboy_req:path(Req) of

View file

@ -286,6 +286,27 @@ parse_cookies(Config) ->
[{<<"cookie">>, "goodname=strawberry\tmilkshake"}], Config),
ok.
filter_then_parse_cookies(Config) ->
doc("Filter cookies then parse them."),
<<"[]">> = do_get_body("/filter_then_parse_cookies", Config),
<<"[{<<\"cake\">>,<<\"strawberry\">>}]">>
= do_get_body("/filter_then_parse_cookies", [{<<"cookie">>, "cake=strawberry"}], Config),
<<"[{<<\"cake\">>,<<\"strawberry\">>},{<<\"color\">>,<<\"blue\">>}]">>
= do_get_body("/filter_then_parse_cookies", [{<<"cookie">>, "cake=strawberry; color=blue"}], Config),
<<"[{<<\"cake\">>,<<\"strawberry\">>},{<<\"color\">>,<<\"blue\">>}]">>
= do_get_body("/filter_then_parse_cookies",
[{<<"cookie">>, "cake=strawberry"}, {<<"cookie">>, "color=blue"}], Config),
<<"[]">>
= do_get_body("/filter_then_parse_cookies",
[{<<"cookie">>, "bad name=strawberry"}], Config),
<<"[{<<\"cake\">>,<<\"strawberry\">>}]">>
= do_get_body("/filter_then_parse_cookies",
[{<<"cookie">>, "bad name=strawberry; cake=strawberry"}], Config),
<<"[]">>
= do_get_body("/filter_then_parse_cookies",
[{<<"cookie">>, "Blocked by http://www.example.com/upgrade-to-remove"}], Config),
ok.
parse_header(Config) ->
doc("Parsed request header with/without default."),
<<"[{{<<\"text\">>,<<\"html\">>,[]},1000,[]}]">>