aboutsummaryrefslogtreecommitdiffstats
path: root/src/cow_http_hd.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-12-20 12:35:25 +0200
committerLoïc Hoguin <[email protected]>2014-12-20 12:56:55 +0200
commit97a22d3cb86129f40451bb9a292fd3612829b829 (patch)
tree2f5fb440745b7da3862889da58283a9e518c14df /src/cow_http_hd.erl
parentbf3c8eb263811b41ffe8ff24a42466abc7633ac8 (diff)
downloadcowlib-97a22d3cb86129f40451bb9a292fd3612829b829.tar.gz
cowlib-97a22d3cb86129f40451bb9a292fd3612829b829.tar.bz2
cowlib-97a22d3cb86129f40451bb9a292fd3612829b829.zip
Add cow_http_hd:parse_trailer/1
From RFC7230.
Diffstat (limited to 'src/cow_http_hd.erl')
-rw-r--r--src/cow_http_hd.erl28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cow_http_hd.erl b/src/cow_http_hd.erl
index 8fe9f04..0511e9d 100644
--- a/src/cow_http_hd.erl
+++ b/src/cow_http_hd.erl
@@ -36,6 +36,7 @@
-export([parse_sec_websocket_extensions/1]).
-export([parse_sec_websocket_protocol_client/1]).
-export([parse_sec_websocket_version_client/1]).
+-export([parse_trailer/1]).
-export([parse_transfer_encoding/1]).
-export([parse_upgrade/1]).
@@ -1808,6 +1809,33 @@ horse_parse_sec_websocket_version_client_255() ->
).
-endif.
+%% @doc Parse the Trailer header.
+
+-spec parse_trailer(binary()) -> [binary()].
+parse_trailer(Trailer) ->
+ nonempty(token_ci_list(Trailer, [])).
+
+-ifdef(TEST).
+parse_trailer_test_() ->
+ Tests = [
+ {<<"Date, Content-MD5">>, [<<"date">>, <<"content-md5">>]}
+ ],
+ [{V, fun() -> R = parse_trailer(V) end} || {V, R} <- Tests].
+
+parse_trailer_error_test_() ->
+ Tests = [
+ <<>>
+ ],
+ [{V, fun() -> {'EXIT', _} = (catch parse_trailer(V)) end} || V <- Tests].
+-endif.
+
+-ifdef(PERF).
+horse_parse_trailer() ->
+ horse:repeat(200000,
+ parse_trailer(<<"Date, Content-MD5">>)
+ ).
+-endif.
+
%% @doc Parse the Transfer-Encoding header.
%%
%% @todo This function does not support parsing of transfer-parameter.