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. --- src/cowboy_req.erl | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'src/cowboy_req.erl') 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