Browse Source

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.
Loïc Hoguin 12 years ago
parent
commit
183bf7f143
2 changed files with 42 additions and 58 deletions
  1. 0 56
      include/http.hrl
  2. 42 2
      src/cowboy_req.erl

+ 0 - 56
include/http.hrl

@@ -1,56 +0,0 @@
-%% Copyright (c) 2011-2012, Loïc Hoguin <essen@ninenines.eu>
-%% Copyright (c) 2011, Anthony Ramine <nox@dev-extend.eu>
-%%
-%% 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}
-}).

+ 42 - 2
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.