aboutsummaryrefslogtreecommitdiffstats
path: root/src/cowboy_req.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2012-09-17 01:11:44 +0200
committerLoïc Hoguin <[email protected]>2012-09-17 13:57:29 +0200
commit183bf7f1439773b62f417a817cebfb194ef28d35 (patch)
tree9e06117bc7c486eaca79667e5b652adc1a7a8505 /src/cowboy_req.erl
parent58edd4c35a0490701a87d94676a63c87e8dec8a0 (diff)
downloadcowboy-183bf7f1439773b62f417a817cebfb194ef28d35.tar.gz
cowboy-183bf7f1439773b62f417a817cebfb194ef28d35.tar.bz2
cowboy-183bf7f1439773b62f417a817cebfb194ef28d35.zip
Make cowboy_req:req() opaque
Remove http.hrl in the process. If you feel furious about this change after reaching this commit, don't worry! You probably just need a few access or modification functions to be added in cowboy_req for your needs. Problem is, I don't know these. I'll be very thankful if you can open a ticket and tell me all about it so the best solution can be swiftly implemented to make you happy again.
Diffstat (limited to 'src/cowboy_req.erl')
-rw-r--r--src/cowboy_req.erl44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl
index 98fc895..3c81254 100644
--- a/src/cowboy_req.erl
+++ b/src/cowboy_req.erl
@@ -118,10 +118,50 @@
-export([to_list/1]).
-export([transport/1]).
--include("http.hrl").
-include_lib("eunit/include/eunit.hrl").
--type req() :: #http_req{}.
+-record(http_req, {
+ %% Transport.
+ socket = undefined :: undefined | inet:socket(),
+ transport = undefined :: undefined | module(),
+ connection = keepalive :: keepalive | close,
+
+ %% Request.
+ pid = undefined :: pid(),
+ method = 'GET' :: cowboy_http:method(),
+ version = {1, 1} :: cowboy_http:version(),
+ peer = undefined :: undefined | {inet:ip_address(), inet:port_number()},
+ host = undefined :: undefined | binary(),
+ host_info = undefined :: undefined | cowboy_dispatcher:tokens(),
+ port = undefined :: undefined | inet:port_number(),
+ path = undefined :: binary(),
+ path_info = undefined :: undefined | cowboy_dispatcher:tokens(),
+ qs_vals = undefined :: undefined | list({binary(), binary() | true}),
+ raw_qs = undefined :: binary(),
+ bindings = undefined :: undefined | cowboy_dispatcher:bindings(),
+ headers = [] :: cowboy_http:headers(),
+ p_headers = [] :: [any()], %% @todo Improve those specs.
+ cookies = undefined :: undefined | [{binary(), binary()}],
+ meta = [] :: [{atom(), any()}],
+
+ %% Request body.
+ body_state = waiting :: waiting | done | {stream, fun(), any(), fun()},
+ multipart = undefined :: undefined | {non_neg_integer(), fun()},
+ buffer = <<>> :: binary(),
+
+ %% Response.
+ resp_state = waiting :: locked | waiting | chunks | done,
+ resp_headers = [] :: cowboy_http:headers(),
+ resp_body = <<>> :: iodata()
+ | {non_neg_integer(), fun(() -> {sent, non_neg_integer()})},
+
+ %% Functions.
+ onresponse = undefined :: undefined | fun((cowboy_http:status(),
+ cowboy_http:headers(), Req) -> Req),
+ urldecode :: {fun((binary(), T) -> binary()), T}
+}).
+
+-opaque req() :: #http_req{}.
-export_type([req/0]).
%% Request API.