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
|
### expires
|
||||||
|
|
||||||
> * Methods: GET, HEAD
|
> * Methods: GET, HEAD
|
||||||
> * Value type: calendar:datetime() | undefined
|
> * Value type: calendar:datetime() | binary() | undefined
|
||||||
> * Default value: undefined
|
> * Default value: undefined
|
||||||
>
|
>
|
||||||
> Return the date of expiration of the resource.
|
> Return the date of expiration of the resource.
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
%% Cached resource calls.
|
%% Cached resource calls.
|
||||||
etag :: undefined | no_call | {strong | weak, binary()},
|
etag :: undefined | no_call | {strong | weak, binary()},
|
||||||
last_modified :: undefined | no_call | calendar:datetime(),
|
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())
|
-spec upgrade(Req, Env, module(), any())
|
||||||
|
@ -896,6 +896,10 @@ set_resp_expires(Req, State) ->
|
||||||
case Expires of
|
case Expires of
|
||||||
Expires when is_atom(Expires) ->
|
Expires when is_atom(Expires) ->
|
||||||
{Req2, State2};
|
{Req2, State2};
|
||||||
|
Expires when is_binary(Expires) ->
|
||||||
|
Req3 = cowboy_req:set_resp_header(
|
||||||
|
<<"expires">>, Expires, Req2),
|
||||||
|
{Req3, State2};
|
||||||
Expires ->
|
Expires ->
|
||||||
ExpiresBin = cowboy_clock:rfc1123(Expires),
|
ExpiresBin = cowboy_clock:rfc1123(Expires),
|
||||||
Req3 = cowboy_req:set_resp_header(
|
Req3 = cowboy_req:set_resp_header(
|
||||||
|
|
|
@ -207,6 +207,7 @@ init_dispatch(Config) ->
|
||||||
{"/patch", rest_patch_resource, []},
|
{"/patch", rest_patch_resource, []},
|
||||||
{"/resetags", rest_resource_etags, []},
|
{"/resetags", rest_resource_etags, []},
|
||||||
{"/rest_expires", rest_expires, []},
|
{"/rest_expires", rest_expires, []},
|
||||||
|
{"/rest_expires_binary", rest_expires_binary, []},
|
||||||
{"/rest_empty_resource", rest_empty_resource, []},
|
{"/rest_empty_resource", rest_empty_resource, []},
|
||||||
{"/loop_stream_recv", http_loop_stream_recv, []},
|
{"/loop_stream_recv", http_loop_stream_recv, []},
|
||||||
{"/", http_handler, []}
|
{"/", http_handler, []}
|
||||||
|
@ -687,6 +688,13 @@ rest_expires(Config) ->
|
||||||
Expires = LastModified = <<"Fri, 21 Sep 2012 22:36:14 GMT">>,
|
Expires = LastModified = <<"Fri, 21 Sep 2012 22:36:14 GMT">>,
|
||||||
ok.
|
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) ->
|
rest_keepalive(Config) ->
|
||||||
ConnPid = gun_open(Config),
|
ConnPid = gun_open(Config),
|
||||||
Refs = [gun:get(ConnPid, "/simple") || _ <- lists:seq(1, 10)],
|
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