diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy_http.erl | 65 |
1 files changed, 13 insertions, 52 deletions
diff --git a/src/cowboy_http.erl b/src/cowboy_http.erl index 681f09f..21aa979 100644 --- a/src/cowboy_http.erl +++ b/src/cowboy_http.erl @@ -70,22 +70,13 @@ list(Data, Fun, Acc) -> media_range(Data, Fun) -> token_ci(Data, fun (_Rest, <<>>) -> {error, badarg}; - (Rest, Type) -> whitespace(Rest, - fun (<< $/, Rest2/bits >>) -> whitespace(Rest2, - fun (<<>>) -> {error, badarg}; - (Rest3) -> media_range_subtype(Rest3, Fun, Type) - end); - (_Rest2) -> {error, badarg} + (<< $/, Rest/bits >>, Type) -> token_ci(Rest, + fun (_Rest2, <<>>) -> {error, badarg}; + (Rest2, SubType) -> + media_range_params(Rest2, Fun, Type, SubType, []) end) end). --spec media_range_subtype(binary(), fun(), binary()) -> any(). -media_range_subtype(Data, Fun, Type) -> - token_ci(Data, - fun (_Rest, <<>>) -> {error, badarg}; - (Rest, SubType) -> media_range_params(Rest, Fun, Type, SubType, []) - end). - -spec media_range_params(binary(), fun(), binary(), binary(), [{binary(), binary()}]) -> any(). media_range_params(Data, Fun, Type, SubType, Acc) -> @@ -103,18 +94,8 @@ media_range_params(Data, Fun, Type, SubType, Acc) -> media_range_param_attr(Data, Fun, Type, SubType, Acc) -> token_ci(Data, fun (_Rest, <<>>) -> {error, badarg}; - (Rest, Attr) -> - whitespace(Rest, - fun (<< $=, Rest2/bits >>) -> - whitespace(Rest2, - fun (<<>>) -> {error, badarg}; - (Rest3) -> - media_range_param_value(Rest3, Fun, - Type, SubType, Acc, Attr) - end); - (_Rest2) -> - {error, badarg} - end) + (<< $=, Rest/bits >>, Attr) -> + media_range_param_value(Rest, Fun, Type, SubType, Acc, Attr) end). -spec media_range_param_value(binary(), fun(), binary(), binary(), @@ -161,21 +142,12 @@ accept_ext(Data, Fun, Type, SubType, Params, Quality, Acc) -> accept_ext_attr(Data, Fun, Type, SubType, Params, Quality, Acc) -> token_ci(Data, fun (_Rest, <<>>) -> {error, badarg}; + (<< $=, Rest/bits >>, Attr) -> + accept_ext_value(Rest, Fun, Type, SubType, Params, + Quality, Acc, Attr); (Rest, Attr) -> - whitespace(Rest, - fun (<< $=, Rest2/bits >>) -> - whitespace(Rest2, - fun (<<>>) -> {error, badarg}; - (Rest3) -> - accept_ext_value(Rest3, Fun, - Type, SubType, Params, - Quality, Acc, Attr) - end); - (Rest2) -> - accept_ext(Rest2, Fun, - Type, SubType, Params, - Quality, [Attr|Acc]) - end) + accept_ext(Rest, Fun, Type, SubType, Params, + Quality, [Attr|Acc]) end). -spec accept_ext_value(binary(), fun(), binary(), binary(), @@ -219,19 +191,8 @@ conneg(Data, Fun) -> %% Parse a quality parameter string (for example q=0.500). -spec qparam(binary(), fun()) -> any(). -qparam(<< $q, Rest/bits >>, Fun) -> - whitespace(Rest, - fun (<< $=, Rest2/bits >>) -> - whitespace(Rest2, - fun (Rest3) -> - qvalue(Rest3, - fun (Rest4, Quality) -> - Fun(Rest4, Quality) - end) - end); - (_Rest2) -> - {error, badarg} - end). +qparam(<< Q, $=, Data/bits >>, Fun) when Q =:= $q; Q =:= $Q -> + qvalue(Data, Fun). %% @doc Skip whitespace. -spec whitespace(binary(), fun()) -> any(). |