Skip to content

Commit

Permalink
Introduce cowboy_http:word/2
Browse files Browse the repository at this point in the history
Used to parse either a token or a quoted string in parameters values.
  • Loading branch information
nox committed Nov 10, 2011
1 parent 2f27b04 commit 329b2fa
Showing 1 changed file with 15 additions and 20 deletions.
35 changes: 15 additions & 20 deletions src/cowboy_http.erl
@@ -1,4 +1,5 @@
%% Copyright (c) 2011, Loïc Hoguin <essen@dev-extend.eu>
%% Copyright (c) 2011, Anthony Ramine <nox@dev-extend.eu>
%%
%% Permission to use, copy, modify, and/or distribute this software for any
%% purpose with or without fee is hereby granted, provided that the above
Expand Down Expand Up @@ -106,19 +107,11 @@ media_range_param_value(Data, Fun, Type, SubType, Acc, <<"q">>) ->
fun (Rest, Quality) ->
accept_ext(Rest, Fun, Type, SubType, Acc, Quality, [])
end);
media_range_param_value(Data = << $", _/bits >>, Fun,
Type, SubType, Acc, Attr) ->
quoted_string(Data,
media_range_param_value(Data, Fun, Type, SubType, Acc, Attr) ->
word(Data,
fun (Rest, Value) ->
media_range_params(Rest, Fun,
Type, SubType, [{Attr, Value}|Acc])
end);
media_range_param_value(Data, Fun, Type, SubType, Acc, Attr) ->
token(Data,
fun (_Rest, <<>>) -> {error, badarg};
(Rest, Value) ->
media_range_params(Rest, Fun,
Type, SubType, [{Attr, Value}|Acc])
end).

-spec accept_ext(binary(), fun(), binary(), binary(),
Expand Down Expand Up @@ -154,17 +147,9 @@ accept_ext_attr(Data, Fun, Type, SubType, Params, Quality, Acc) ->
-spec accept_ext_value(binary(), fun(), binary(), binary(),
[{binary(), binary()}], 0..1000,
[{binary(), binary()} | binary()], binary()) -> any().
accept_ext_value(Data = << $", _/bits >>, Fun,
Type, SubType, Params, Quality, Acc, Attr) ->
quoted_string(Data,
fun (Rest, Value) ->
accept_ext(Rest, Fun,
Type, SubType, Params, Quality, [{Attr, Value}|Acc])
end);
accept_ext_value(Data, Fun, Type, SubType, Params, Quality, Acc, Attr) ->
token(Data,
fun (_Rest, <<>>) -> {error, badarg};
(Rest, Value) ->
word(Data,
fun (Rest, Value) ->
accept_ext(Rest, Fun,
Type, SubType, Params, Quality, [{Attr, Value}|Acc])
end).
Expand Down Expand Up @@ -543,6 +528,16 @@ alpha(<< C, Rest/bits >>, Fun, Acc)
alpha(Data, Fun, Acc) ->
Fun(Data, Acc).

%% @doc Parse either a token or a quoted string.
-spec word(binary(), fun()) -> any().
word(Data = << $", _/bits >>, Fun) ->
quoted_string(Data, Fun);
word(Data, Fun) ->
token(Data,
fun (_Rest, <<>>) -> {error, badarg};
(Rest, Token) -> Fun(Rest, Token)
end).

%% @doc Parse a case-insensitive token.
%%
%% Changes all characters to lowercase.
Expand Down

0 comments on commit 329b2fa

Please sign in to comment.