diff options
author | Loïc Hoguin <[email protected]> | 2018-09-07 13:56:12 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-09-07 13:56:12 +0200 |
commit | 4b385749f2aab90b5c7e44e844159c0221a8790d (patch) | |
tree | 1139d59b19aa2323cf29290665493a823b7087ed /src/cowboy_req.erl | |
parent | dcc6f9326f70efbab81897aae8f2e23d621c7f3a (diff) | |
download | cowboy-4b385749f2aab90b5c7e44e844159c0221a8790d.tar.gz cowboy-4b385749f2aab90b5c7e44e844159c0221a8790d.tar.bz2 cowboy-4b385749f2aab90b5c7e44e844159c0221a8790d.zip |
Add cowboy_req:read_and_match_urlencoded_body/2,3
Diffstat (limited to 'src/cowboy_req.erl')
-rw-r--r-- | src/cowboy_req.erl | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index ee21e98..ee40304 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -54,7 +54,8 @@ -export([read_body/2]). -export([read_urlencoded_body/1]). -export([read_urlencoded_body/2]). -%% @todo read_and_match_urlencoded_body? +-export([read_and_match_urlencoded_body/2]). +-export([read_and_match_urlencoded_body/3]). %% Multipart. -export([read_part/1]). @@ -513,6 +514,23 @@ read_urlencoded_body(Req0, Opts) -> end end. +-spec read_and_match_urlencoded_body(cowboy:fields(), Req) + -> {ok, map(), Req} when Req::req(). +read_and_match_urlencoded_body(Fields, Req) -> + read_and_match_urlencoded_body(Fields, Req, #{length => 64000, period => 5000}). + +-spec read_and_match_urlencoded_body(cowboy:fields(), Req, read_body_opts()) + -> {ok, map(), Req} when Req::req(). +read_and_match_urlencoded_body(Fields, Req0, Opts) -> + {ok, Qs, Req} = read_urlencoded_body(Req0, Opts), + case filter(Fields, kvlist_to_map(Fields, Qs)) of + {ok, Map} -> + {ok, Map, Req}; + {error, Errors} -> + exit({request_error, {read_and_match_urlencoded_body, Errors}, + 'Urlencoded request body validation constraints failed for the reasons provided.'}) + end. + %% Multipart. -spec read_part(Req) |