From 183bf7f1439773b62f417a817cebfb194ef28d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 17 Sep 2012 01:11:44 +0200 Subject: 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. --- include/http.hrl | 56 ------------------------------------------------------ src/cowboy_req.erl | 44 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 58 deletions(-) delete mode 100644 include/http.hrl 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 -%% Copyright (c) 2011, Anthony Ramine -%% -%% 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. -- cgit v1.2.3