0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 20:30:23 +00:00

Remove unneeded whitespaces according to the HTTP spec

This commit is contained in:
Loïc Hoguin 2011-11-04 11:58:45 +01:00
parent 77b3562257
commit a118f53c74

View file

@ -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().