diff options
author | Loïc Hoguin <[email protected]> | 2020-03-11 19:42:57 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2020-03-11 19:42:57 +0100 |
commit | f017f8a0ecbffd5033d9ab49bf180186f7a523a7 (patch) | |
tree | 3487b50de51ad71cb12b9c4e7017ac4f0588567f /src/cow_cookie.erl | |
parent | 4b9da5965cd3c8fe93639eddcb8973407f86bbb7 (diff) | |
download | cowlib-f017f8a0ecbffd5033d9ab49bf180186f7a523a7.tar.gz cowlib-f017f8a0ecbffd5033d9ab49bf180186f7a523a7.tar.bz2 cowlib-f017f8a0ecbffd5033d9ab49bf180186f7a523a7.zip |
Add cow_cookie:cookie/1
Diffstat (limited to 'src/cow_cookie.erl')
-rw-r--r-- | src/cow_cookie.erl | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/cow_cookie.erl b/src/cow_cookie.erl index d1ffbc3..1f6d41b 100644 --- a/src/cow_cookie.erl +++ b/src/cow_cookie.erl @@ -16,6 +16,7 @@ -export([parse_cookie/1]). -export([parse_set_cookie/1]). +-export([cookie/1]). -export([setcookie/3]). -type cookie_attrs() :: #{ @@ -285,12 +286,41 @@ parse_set_cookie_test_() -> || {SetCookie, Res} <- Tests]. -endif. +%% Build a cookie header. + +-spec cookie([{iodata(), iodata()}]) -> iolist(). +cookie([]) -> + []; +cookie([{<<>>, Value}]) -> + [Value]; +cookie([{Name, Value}]) -> + [Name, $=, Value]; +cookie([{<<>>, Value}|Tail]) -> + [Value, $;, $\s|cookie(Tail)]; +cookie([{Name, Value}|Tail]) -> + [Name, $=, Value, $;, $\s|cookie(Tail)]. + +-ifdef(TEST). +cookie_test_() -> + Tests = [ + {[], <<>>}, + {[{<<"a">>, <<"b">>}], <<"a=b">>}, + {[{<<"a">>, <<"b">>}, {<<"c">>, <<"d">>}], <<"a=b; c=d">>}, + {[{<<>>, <<"b">>}, {<<"c">>, <<"d">>}], <<"b; c=d">>}, + {[{<<"a">>, <<"b">>}, {<<>>, <<"d">>}], <<"a=b; d">>} + ], + [{Res, fun() -> Res = iolist_to_binary(cookie(Cookies)) end} + || {Cookies, Res} <- Tests]. +-endif. + %% Convert a cookie name, value and options to its iodata form. %% %% Initially from Mochiweb: %% * Copyright 2007 Mochi Media, Inc. %% Initial binary implementation: %% * Copyright 2011 Thomas Burdick <[email protected]> +%% +%% @todo Rename the function to set_cookie eventually. -spec setcookie(iodata(), iodata(), cookie_opts()) -> iolist(). setcookie(Name, Value, Opts) -> |