mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Enable range requests support in cowboy_static
This commit is contained in:
parent
7840f6db7b
commit
fe1ee080de
2 changed files with 18 additions and 0 deletions
|
@ -20,6 +20,7 @@
|
||||||
-export([forbidden/2]).
|
-export([forbidden/2]).
|
||||||
-export([content_types_provided/2]).
|
-export([content_types_provided/2]).
|
||||||
-export([charsets_provided/2]).
|
-export([charsets_provided/2]).
|
||||||
|
-export([ranges_provided/2]).
|
||||||
-export([resource_exists/2]).
|
-export([resource_exists/2]).
|
||||||
-export([last_modified/2]).
|
-export([last_modified/2]).
|
||||||
-export([generate_etag/2]).
|
-export([generate_etag/2]).
|
||||||
|
@ -340,6 +341,14 @@ charsets_provided(Req, State={Path, _, Extra}) ->
|
||||||
{[Charset], Req, State}
|
{[Charset], Req, State}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
%% Enable support for range requests.
|
||||||
|
|
||||||
|
-spec ranges_provided(Req, State)
|
||||||
|
-> {[{binary(), auto}], Req, State}
|
||||||
|
when State::state().
|
||||||
|
ranges_provided(Req, State) ->
|
||||||
|
{[{<<"bytes">>, auto}], Req, State}.
|
||||||
|
|
||||||
%% Assume the resource doesn't exist if it's not a regular file.
|
%% Assume the resource doesn't exist if it's not a regular file.
|
||||||
|
|
||||||
-spec resource_exists(Req, State)
|
-spec resource_exists(Req, State)
|
||||||
|
|
|
@ -838,6 +838,15 @@ priv_file_in_ez_archive(Config) ->
|
||||||
{_, <<"text/html">>} = lists:keyfind(<<"content-type">>, 1, Headers),
|
{_, <<"text/html">>} = lists:keyfind(<<"content-type">>, 1, Headers),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
range_request(Config) ->
|
||||||
|
doc("Confirm that range requests are enabled."),
|
||||||
|
{206, Headers, <<"less space.\n">>} = do_get("/dir/plain.txt",
|
||||||
|
[{<<"range">>, <<"bytes=4-">>}], Config),
|
||||||
|
{_, <<"bytes">>} = lists:keyfind(<<"accept-ranges">>, 1, Headers),
|
||||||
|
{_, <<"bytes 4-15/16">>} = lists:keyfind(<<"content-range">>, 1, Headers),
|
||||||
|
{_, <<"application/octet-stream">>} = lists:keyfind(<<"content-type">>, 1, Headers),
|
||||||
|
ok.
|
||||||
|
|
||||||
unicode_basic_latin(Config) ->
|
unicode_basic_latin(Config) ->
|
||||||
doc("Get a file with non-urlencoded characters from Unicode Basic Latin block."),
|
doc("Get a file with non-urlencoded characters from Unicode Basic Latin block."),
|
||||||
_ = [case do_get("/char/" ++ [C], Config) of
|
_ = [case do_get("/char/" ++ [C], Config) of
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue