diff options
author | Loïc Hoguin <[email protected]> | 2013-09-04 19:24:54 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2013-09-04 19:24:54 +0200 |
commit | 4a30198f9068cc989616c8088e4b890bc1de259d (patch) | |
tree | 74f9847d6282c365e70245df13f77f3b5209faab /src | |
parent | bd0de074c364ddd7d8f3dfdcdb6e4261433716d8 (diff) | |
download | cowboy-4a30198f9068cc989616c8088e4b890bc1de259d.tar.gz cowboy-4a30198f9068cc989616c8088e4b890bc1de259d.tar.bz2 cowboy-4a30198f9068cc989616c8088e4b890bc1de259d.zip |
Make cowlib a proper dependency
Start moving a few functions from Cowboy into cowlib.
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy.app.src | 1 | ||||
-rw-r--r-- | src/cowboy_protocol.erl | 25 | ||||
-rw-r--r-- | src/cowboy_spdy.erl | 25 |
3 files changed, 8 insertions, 43 deletions
diff --git a/src/cowboy.app.src b/src/cowboy.app.src index 0c4a5b1..504e344 100644 --- a/src/cowboy.app.src +++ b/src/cowboy.app.src @@ -21,6 +21,7 @@ kernel, stdlib, ranch, + cowlib, crypto ]}, {mod, {cowboy_app, []}}, diff --git a/src/cowboy_protocol.erl b/src/cowboy_protocol.erl index 68a03b1..3c37983 100644 --- a/src/cowboy_protocol.erl +++ b/src/cowboy_protocol.erl @@ -54,7 +54,6 @@ %% Internal. -export([init/4]). -export([parse_request/3]). --export([parse_host/3]). -export([resume/6]). -type opts() :: [{compress, boolean()} @@ -443,6 +442,9 @@ default_port(ssl) -> 443; default_port(_) -> 80. %% Another hurtful block of code. :) +%% +%% Same code as cow_http:parse_fullhost/1, but inline because we +%% really want this to go fast. parse_host(<< $[, Rest/bits >>, false, <<>>) -> parse_host(Rest, true, << $[ >>); parse_host(<<>>, false, Acc) -> @@ -593,24 +595,3 @@ error_terminate(Status, Req, State) -> terminate(#state{socket=Socket, transport=Transport}) -> Transport:close(Socket), ok. - -%% Tests. - --ifdef(TEST). - -parse_host(RawHost) -> - parse_host(RawHost, false, <<>>). - -parse_host_test() -> - {<<"example.org">>, 8080} = parse_host(<<"example.org:8080">>), - {<<"example.org">>, undefined} = parse_host(<<"example.org">>), - {<<"192.0.2.1">>, 8080} = parse_host(<<"192.0.2.1:8080">>), - {<<"192.0.2.1">>, undefined} = parse_host(<<"192.0.2.1">>), - {<<"[2001:db8::1]">>, 8080} = parse_host(<<"[2001:db8::1]:8080">>), - {<<"[2001:db8::1]">>, undefined} = parse_host(<<"[2001:db8::1]">>), - {<<"[::ffff:192.0.2.1]">>, 8080} = - parse_host(<<"[::ffff:192.0.2.1]:8080">>), - {<<"[::ffff:192.0.2.1]">>, undefined} = - parse_host(<<"[::ffff:192.0.2.1]">>). - --endif. diff --git a/src/cowboy_spdy.erl b/src/cowboy_spdy.erl index 3d39ff5..dfac29c 100644 --- a/src/cowboy_spdy.erl +++ b/src/cowboy_spdy.erl @@ -340,11 +340,11 @@ delete_child(Pid, State=#state{children=Children}) -> request_init(FakeSocket, Peer, OnRequest, OnResponse, Env, Middlewares, Method, Host, Path, Version, Headers) -> - Version2 = parse_version(Version), - {Host2, Port} = cowboy_protocol:parse_host(Host, false, <<>>), - {Path2, Query} = parse_path(Path, <<>>), + {Host2, Port} = cow_http:parse_fullhost(Host), + {Path2, Qs} = cow_http:parse_fullpath(Path), + Version2 = cow_http:parse_version(Version), Req = cowboy_req:new(FakeSocket, ?MODULE, Peer, - Method, Path2, Query, Version2, Headers, + Method, Path2, Qs, Version2, Headers, Host2, Port, <<>>, true, false, OnResponse), case OnRequest of undefined -> @@ -357,23 +357,6 @@ request_init(FakeSocket, Peer, OnRequest, OnResponse, end end. -parse_version(<<"HTTP/1.1">>) -> - 'HTTP/1.1'; -parse_version(<<"HTTP/1.0">>) -> - 'HTTP/1.0'. - -parse_path(<<>>, Path) -> - {Path, <<>>}; -parse_path(<< $?, Rest/binary >>, Path) -> - parse_query(Rest, Path, <<>>); -parse_path(<< C, Rest/binary >>, SoFar) -> - parse_path(Rest, << SoFar/binary, C >>). - -parse_query(<<>>, Path, Query) -> - {Path, Query}; -parse_query(<< C, Rest/binary >>, Path, SoFar) -> - parse_query(Rest, Path, << SoFar/binary, C >>). - -spec execute(cowboy_req:req(), cowboy_middleware:env(), [module()]) -> ok. execute(Req, _, []) -> |