mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
Add a private cowboy_req function to create a Req object
Private means you must not used it. It's meant for internal use.
This commit is contained in:
parent
c1f5a2acb2
commit
6dbc1f9ef9
3 changed files with 23 additions and 13 deletions
|
@ -28,10 +28,10 @@
|
||||||
host = undefined :: undefined | binary(),
|
host = undefined :: undefined | binary(),
|
||||||
host_info = undefined :: undefined | cowboy_dispatcher:tokens(),
|
host_info = undefined :: undefined | cowboy_dispatcher:tokens(),
|
||||||
port = undefined :: undefined | inet:port_number(),
|
port = undefined :: undefined | inet:port_number(),
|
||||||
path = undefined :: undefined | binary(),
|
path = undefined :: binary(),
|
||||||
path_info = undefined :: undefined | cowboy_dispatcher:tokens(),
|
path_info = undefined :: undefined | cowboy_dispatcher:tokens(),
|
||||||
qs_vals = undefined :: undefined | list({binary(), binary() | true}),
|
qs_vals = undefined :: undefined | list({binary(), binary() | true}),
|
||||||
raw_qs = undefined :: undefined | binary(),
|
raw_qs = undefined :: binary(),
|
||||||
bindings = undefined :: undefined | cowboy_dispatcher:bindings(),
|
bindings = undefined :: undefined | cowboy_dispatcher:bindings(),
|
||||||
headers = [] :: cowboy_http:headers(),
|
headers = [] :: cowboy_http:headers(),
|
||||||
p_headers = [] :: [any()], %% @todo Improve those specs.
|
p_headers = [] :: [any()], %% @todo Improve those specs.
|
||||||
|
|
|
@ -139,10 +139,8 @@ request({http_request, Method, {abs_path, AbsPath}, Version},
|
||||||
ConnAtom = if Keepalive < MaxKeepalive -> version_to_connection(Version);
|
ConnAtom = if Keepalive < MaxKeepalive -> version_to_connection(Version);
|
||||||
true -> close
|
true -> close
|
||||||
end,
|
end,
|
||||||
parse_header(#http_req{socket=Socket, transport=Transport,
|
parse_header(cowboy_req:new(Socket, Transport, ConnAtom, Method, Version,
|
||||||
connection=ConnAtom, pid=self(), method=Method, version=Version,
|
RawPath, Qs, OnResponse, URLDec), State#state{path_tokens=PathTokens});
|
||||||
path=RawPath, raw_qs=Qs, onresponse=OnResponse, urldecode=URLDec},
|
|
||||||
State#state{path_tokens=PathTokens});
|
|
||||||
request({http_request, Method, '*', Version},
|
request({http_request, Method, '*', Version},
|
||||||
State=#state{socket=Socket, transport=Transport,
|
State=#state{socket=Socket, transport=Transport,
|
||||||
req_keepalive=Keepalive, max_keepalive=MaxKeepalive,
|
req_keepalive=Keepalive, max_keepalive=MaxKeepalive,
|
||||||
|
@ -150,10 +148,8 @@ request({http_request, Method, '*', Version},
|
||||||
ConnAtom = if Keepalive < MaxKeepalive -> version_to_connection(Version);
|
ConnAtom = if Keepalive < MaxKeepalive -> version_to_connection(Version);
|
||||||
true -> close
|
true -> close
|
||||||
end,
|
end,
|
||||||
parse_header(#http_req{socket=Socket, transport=Transport,
|
parse_header(cowboy_req:new(Socket, Transport, ConnAtom, Method, Version,
|
||||||
connection=ConnAtom, pid=self(), method=Method, version=Version,
|
<<"*">>, <<>>, OnResponse, URLDec), State#state{path_tokens='*'});
|
||||||
path= <<"*">>, raw_qs= <<>>, onresponse=OnResponse,
|
|
||||||
urldecode=URLDec}, State#state{path_tokens='*'});
|
|
||||||
request({http_request, _Method, _URI, _Version}, State) ->
|
request({http_request, _Method, _URI, _Version}, State) ->
|
||||||
error_terminate(501, State);
|
error_terminate(501, State);
|
||||||
request({http_error, <<"\r\n">>},
|
request({http_error, <<"\r\n">>},
|
||||||
|
@ -427,9 +423,8 @@ error_terminate(Code, State=#state{socket=Socket, transport=Transport,
|
||||||
receive
|
receive
|
||||||
{cowboy_req, resp_sent} -> ok
|
{cowboy_req, resp_sent} -> ok
|
||||||
after 0 ->
|
after 0 ->
|
||||||
_ = cowboy_req:reply(Code, #http_req{
|
_ = cowboy_req:reply(Code, cowboy_req:new(Socket, Transport,
|
||||||
socket=Socket, transport=Transport, onresponse=OnResponse,
|
close, 'GET', {1, 1}, <<>>, <<>>, OnResponse, undefined)),
|
||||||
connection=close, pid=self(), resp_state=waiting}),
|
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
terminate(State).
|
terminate(State).
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
-module(cowboy_req).
|
-module(cowboy_req).
|
||||||
|
|
||||||
%% Request API.
|
%% Request API.
|
||||||
|
-export([new/9]).
|
||||||
-export([method/1]).
|
-export([method/1]).
|
||||||
-export([version/1]).
|
-export([version/1]).
|
||||||
-export([peer/1]).
|
-export([peer/1]).
|
||||||
|
@ -115,6 +116,20 @@
|
||||||
|
|
||||||
%% Request API.
|
%% 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.
|
%% @doc Return the HTTP method of the request.
|
||||||
-spec method(Req) -> {cowboy_http:method(), Req} when Req::req().
|
-spec method(Req) -> {cowboy_http:method(), Req} when Req::req().
|
||||||
method(Req) ->
|
method(Req) ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue