From 63f2e99b39c98354077f96015370506e5745a109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Fri, 12 Dec 2014 20:29:28 +0200 Subject: Add cow_http_hd:parse_max_forwards/1 From RFC7231. --- src/cow_http_hd.erl | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/cow_http_hd.erl b/src/cow_http_hd.erl index 13bab30..9a920a9 100644 --- a/src/cow_http_hd.erl +++ b/src/cow_http_hd.erl @@ -17,6 +17,7 @@ -export([parse_connection/1]). -export([parse_content_length/1]). -export([parse_expect/1]). +-export([parse_max_forwards/1]). -export([parse_transfer_encoding/1]). -include("cow_inline.hrl"). @@ -143,6 +144,33 @@ horse_parse_expect() -> ). -endif. +%% @doc Parse the Max-Forwards header. + +-spec parse_max_forwards(binary()) -> integer(). +parse_max_forwards(<< $0, R/bits >>) -> number(R, 0); +parse_max_forwards(<< $1, R/bits >>) -> number(R, 1); +parse_max_forwards(<< $2, R/bits >>) -> number(R, 2); +parse_max_forwards(<< $3, R/bits >>) -> number(R, 3); +parse_max_forwards(<< $4, R/bits >>) -> number(R, 4); +parse_max_forwards(<< $5, R/bits >>) -> number(R, 5); +parse_max_forwards(<< $6, R/bits >>) -> number(R, 6); +parse_max_forwards(<< $7, R/bits >>) -> number(R, 7); +parse_max_forwards(<< $8, R/bits >>) -> number(R, 8); +parse_max_forwards(<< $9, R/bits >>) -> number(R, 9). + +-ifdef(TEST). +parse_max_forwards_test_() -> + Tests = [ + {<<"0">>, 0}, + {<<"42 ">>, 42}, + {<<"69\t">>, 69}, + {<<"1337">>, 1337}, + {<<"1234567890">>, 1234567890}, + {<<"1234567890 ">>, 1234567890} + ], + [{V, fun() -> R = parse_max_forwards(V) end} || {V, R} <- Tests]. +-endif. + %% @doc Parse the Transfer-Encoding header. %% %% @todo Extension parameters. -- cgit v1.2.3