0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 20:30:23 +00:00

Remove the dependency on httpd_util

Add the function cowboy_clock:rfc1123/1 that formats the given
date to the RFC1123 format.
This commit is contained in:
Loïc Hoguin 2012-12-03 15:57:27 +01:00
parent 5ef4a15b48
commit 8bc6bde62f
4 changed files with 45 additions and 6 deletions

View file

@ -25,6 +25,7 @@
-export([start_link/0]).
-export([stop/0]).
-export([rfc1123/0]).
-export([rfc1123/1]).
-export([rfc2109/1]).
%% gen_server.
@ -61,12 +62,15 @@ stop() ->
gen_server:call(?SERVER, stop).
%% @doc Return the current date and time formatted according to RFC-1123.
%%
%% This format is used in the <em>date</em> header sent with HTTP responses.
-spec rfc1123() -> binary().
rfc1123() ->
ets:lookup_element(?TABLE, rfc1123, 2).
%% @doc Return the given date and time formatted according to RFC-1123.
-spec rfc1123(calendar:datetime()) -> binary().
rfc1123(DateTime) ->
update_rfc1123(<<>>, undefined, DateTime).
%% @doc Return the current date and time formatted according to RFC-2109.
%%
%% This format is used in the <em>set-cookie</em> header sent with

View file

@ -778,9 +778,9 @@ set_resp_body(Req, State=#state{handler=Handler, handler_state=HandlerState,
LastModified when is_atom(LastModified) ->
Req3;
LastModified ->
LastModifiedStr = httpd_util:rfc1123_date(LastModified),
LastModifiedBin = cowboy_clock:rfc1123(LastModified),
cowboy_req:set_resp_header(
<<"last-modified">>, LastModifiedStr, Req3)
<<"last-modified">>, LastModifiedBin, Req3)
end,
{Req5, State4} = set_resp_expires(Req4, State3),
case call(Req5, State4, Fun) of
@ -831,9 +831,9 @@ set_resp_expires(Req, State) ->
Expires when is_atom(Expires) ->
{Req2, State2};
Expires ->
ExpiresStr = httpd_util:rfc1123_date(Expires),
ExpiresBin = cowboy_clock:rfc1123(Expires),
Req3 = cowboy_req:set_resp_header(
<<"expires">>, ExpiresStr, Req2),
<<"expires">>, ExpiresBin, Req2),
{Req3, State2}
end.

View file

@ -49,6 +49,7 @@
-export([onresponse_reply/1]).
-export([pipeline/1]).
-export([rest_bad_accept/1]).
-export([rest_expires/1]).
-export([rest_keepalive/1]).
-export([rest_keepalive_post/1]).
-export([rest_missing_get_callbacks/1]).
@ -97,6 +98,7 @@ groups() ->
nc_zero,
pipeline,
rest_bad_accept,
rest_expires,
rest_keepalive,
rest_keepalive_post,
rest_missing_get_callbacks,
@ -261,6 +263,7 @@ init_dispatch(Config) ->
{[<<"missing_put_callbacks">>], rest_missing_callbacks, []},
{[<<"nodelete">>], rest_nodelete_resource, []},
{[<<"resetags">>], rest_resource_etags, []},
{[<<"rest_expires">>], rest_expires, []},
{[<<"loop_timeout">>], http_handler_loop_timeout, []},
{[], http_handler, []}
]}
@ -664,6 +667,16 @@ rest_bad_accept(Config) ->
Client),
{ok, 400, _, _} = cowboy_client:response(Client2).
rest_expires(Config) ->
Client = ?config(client, Config),
{ok, Client2} = cowboy_client:request(<<"GET">>,
build_url("/rest_expires", Config), Client),
{ok, 200, RespHeaders, _} = cowboy_client:response(Client2),
{_, Expires} = lists:keyfind(<<"expires">>, 1, RespHeaders),
{_, LastModified} = lists:keyfind(<<"last-modified">>, 1, RespHeaders),
Expires = LastModified = <<"Fri, 21 Sep 2012 22:36:14 GMT">>,
ok.
rest_keepalive(Config) ->
Client = ?config(client, Config),
URL = build_url("/simple", Config),

22
test/rest_expires.erl Normal file
View file

@ -0,0 +1,22 @@
-module(rest_expires).
-export([init/3]).
-export([content_types_provided/2]).
-export([get_text_plain/2]).
-export([expires/2]).
-export([last_modified/2]).
init(_Transport, _Req, _Opts) ->
{upgrade, protocol, cowboy_rest}.
content_types_provided(Req, State) ->
{[{{<<"text">>, <<"plain">>, []}, get_text_plain}], Req, State}.
get_text_plain(Req, State) ->
{<<"This is REST!">>, Req, State}.
expires(Req, State) ->
{{{2012, 9, 21}, {22, 36, 14}}, Req, State}.
last_modified(Req, State) ->
{{{2012, 9, 21}, {22, 36, 14}}, Req, State}.