Skip to content

Commit

Permalink
Add a private cowboy_req function to create a Req object
Browse files Browse the repository at this point in the history
Private means you must not used it. It's meant for internal use.
  • Loading branch information
essen committed Sep 17, 2012
1 parent c1f5a2a commit 6dbc1f9
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 13 deletions.
4 changes: 2 additions & 2 deletions include/http.hrl
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@
host = undefined :: undefined | binary(),
host_info = undefined :: undefined | cowboy_dispatcher:tokens(),
port = undefined :: undefined | inet:port_number(),
path = undefined :: undefined | binary(),
path = undefined :: binary(),
path_info = undefined :: undefined | cowboy_dispatcher:tokens(),
qs_vals = undefined :: undefined | list({binary(), binary() | true}),
raw_qs = undefined :: undefined | binary(),
raw_qs = undefined :: binary(),
bindings = undefined :: undefined | cowboy_dispatcher:bindings(),
headers = [] :: cowboy_http:headers(),
p_headers = [] :: [any()], %% @todo Improve those specs.
Expand Down
17 changes: 6 additions & 11 deletions src/cowboy_protocol.erl
Original file line number Diff line number Diff line change
Expand Up @@ -139,21 +139,17 @@ request({http_request, Method, {abs_path, AbsPath}, Version},
ConnAtom = if Keepalive < MaxKeepalive -> version_to_connection(Version);
true -> close
end,
parse_header(#http_req{socket=Socket, transport=Transport,
connection=ConnAtom, pid=self(), method=Method, version=Version,
path=RawPath, raw_qs=Qs, onresponse=OnResponse, urldecode=URLDec},
State#state{path_tokens=PathTokens});
parse_header(cowboy_req:new(Socket, Transport, ConnAtom, Method, Version,
RawPath, Qs, OnResponse, URLDec), State#state{path_tokens=PathTokens});
request({http_request, Method, '*', Version},
State=#state{socket=Socket, transport=Transport,
req_keepalive=Keepalive, max_keepalive=MaxKeepalive,
onresponse=OnResponse, urldecode=URLDec}) ->
ConnAtom = if Keepalive < MaxKeepalive -> version_to_connection(Version);
true -> close
end,
parse_header(#http_req{socket=Socket, transport=Transport,
connection=ConnAtom, pid=self(), method=Method, version=Version,
path= <<"*">>, raw_qs= <<>>, onresponse=OnResponse,
urldecode=URLDec}, State#state{path_tokens='*'});
parse_header(cowboy_req:new(Socket, Transport, ConnAtom, Method, Version,
<<"*">>, <<>>, OnResponse, URLDec), State#state{path_tokens='*'});
request({http_request, _Method, _URI, _Version}, State) ->
error_terminate(501, State);
request({http_error, <<"\r\n">>},
Expand Down Expand Up @@ -427,9 +423,8 @@ error_terminate(Code, State=#state{socket=Socket, transport=Transport,
receive
{cowboy_req, resp_sent} -> ok
after 0 ->
_ = cowboy_req:reply(Code, #http_req{
socket=Socket, transport=Transport, onresponse=OnResponse,
connection=close, pid=self(), resp_state=waiting}),
_ = cowboy_req:reply(Code, cowboy_req:new(Socket, Transport,
close, 'GET', {1, 1}, <<>>, <<>>, OnResponse, undefined)),
ok
end,
terminate(State).
Expand Down
15 changes: 15 additions & 0 deletions src/cowboy_req.erl
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
-module(cowboy_req).

%% Request API.
-export([new/9]).
-export([method/1]).
-export([version/1]).
-export([peer/1]).
Expand Down Expand Up @@ -115,6 +116,20 @@

%% Request API.

%% @doc Create a new HTTP Req object.
%%
%% This function takes care of setting the owner's pid to self().
%% @private
-spec new(inet:socket(), module(), keepalive | close,
cowboy_http:method(), cowboy_http:version(), binary(), binary(),
undefined | fun(), undefined | {fun(), atom()})
-> req().
new(Socket, Transport, Connection, Method, Version, Path, Qs,
OnResponse, URLDecode) ->
#http_req{socket=Socket, transport=Transport, connection=Connection,
pid=self(), method=Method, version=Version, path=Path, raw_qs=Qs,
onresponse=OnResponse, urldecode=URLDecode}.

%% @doc Return the HTTP method of the request.
-spec method(Req) -> {cowboy_http:method(), Req} when Req::req().
method(Req) ->
Expand Down

0 comments on commit 6dbc1f9

Please sign in to comment.