aboutsummaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--include/http.hrl56
-rw-r--r--src/cowboy_req.erl44
2 files changed, 42 insertions, 58 deletions
diff --git a/include/http.hrl b/include/http.hrl
deleted file mode 100644
index e03e2d3..0000000
--- a/include/http.hrl
+++ /dev/null
@@ -1,56 +0,0 @@
-%% Copyright (c) 2011-2012, Loïc Hoguin <[email protected]>
-%% Copyright (c) 2011, Anthony Ramine <[email protected]>
-%%
-%% Permission to use, copy, modify, and/or distribute this software for any
-%% purpose with or without fee is hereby granted, provided that the above
-%% copyright notice and this permission notice appear in all copies.
-%%
-%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
--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(), #http_req{}) -> #http_req{}),
- urldecode :: {fun((binary(), T) -> binary()), T}
-}).
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.