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:
parent
5ef4a15b48
commit
8bc6bde62f
4 changed files with 45 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
22
test/rest_expires.erl
Normal 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}.
|
Loading…
Add table
Add a link
Reference in a new issue