mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Allow users to pass a raw binary() as the expires header.
This commit is contained in:
parent
7a808e0aa3
commit
6ed25fd60b
4 changed files with 32 additions and 2 deletions
|
@ -275,7 +275,7 @@ REST callbacks description
|
|||
### expires
|
||||
|
||||
> * Methods: GET, HEAD
|
||||
> * Value type: calendar:datetime() | undefined
|
||||
> * Value type: calendar:datetime() | binary() | undefined
|
||||
> * Default value: undefined
|
||||
>
|
||||
> Return the date of expiration of the resource.
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
%% Cached resource calls.
|
||||
etag :: undefined | no_call | {strong | weak, binary()},
|
||||
last_modified :: undefined | no_call | calendar:datetime(),
|
||||
expires :: undefined | no_call | calendar:datetime()
|
||||
expires :: undefined | no_call | calendar:datetime() | binary()
|
||||
}).
|
||||
|
||||
-spec upgrade(Req, Env, module(), any())
|
||||
|
@ -896,6 +896,10 @@ set_resp_expires(Req, State) ->
|
|||
case Expires of
|
||||
Expires when is_atom(Expires) ->
|
||||
{Req2, State2};
|
||||
Expires when is_binary(Expires) ->
|
||||
Req3 = cowboy_req:set_resp_header(
|
||||
<<"expires">>, Expires, Req2),
|
||||
{Req3, State2};
|
||||
Expires ->
|
||||
ExpiresBin = cowboy_clock:rfc1123(Expires),
|
||||
Req3 = cowboy_req:set_resp_header(
|
||||
|
|
|
@ -207,6 +207,7 @@ init_dispatch(Config) ->
|
|||
{"/patch", rest_patch_resource, []},
|
||||
{"/resetags", rest_resource_etags, []},
|
||||
{"/rest_expires", rest_expires, []},
|
||||
{"/rest_expires_binary", rest_expires_binary, []},
|
||||
{"/rest_empty_resource", rest_empty_resource, []},
|
||||
{"/loop_stream_recv", http_loop_stream_recv, []},
|
||||
{"/", http_handler, []}
|
||||
|
@ -687,6 +688,13 @@ rest_expires(Config) ->
|
|||
Expires = LastModified = <<"Fri, 21 Sep 2012 22:36:14 GMT">>,
|
||||
ok.
|
||||
|
||||
rest_expires_binary(Config) ->
|
||||
ConnPid = gun_open(Config),
|
||||
Ref = gun:get(ConnPid, "/rest_expires_binary"),
|
||||
{response, nofin, 200, Headers} = gun:await(ConnPid, Ref),
|
||||
{_, <<"0">>} = lists:keyfind(<<"expires">>, 1, Headers),
|
||||
ok.
|
||||
|
||||
rest_keepalive(Config) ->
|
||||
ConnPid = gun_open(Config),
|
||||
Refs = [gun:get(ConnPid, "/simple") || _ <- lists:seq(1, 10)],
|
||||
|
|
18
test/http_SUITE_data/rest_expires_binary.erl
Normal file
18
test/http_SUITE_data/rest_expires_binary.erl
Normal file
|
@ -0,0 +1,18 @@
|
|||
-module(rest_expires_binary).
|
||||
|
||||
-export([init/3]).
|
||||
-export([content_types_provided/2]).
|
||||
-export([get_text_plain/2]).
|
||||
-export([expires/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) ->
|
||||
{<<"0">>, Req, State}.
|
Loading…
Add table
Add a link
Reference in a new issue