123456789101112131415161718192021222324252627282930313233343536373839 |
- %% This module defines the range_satisfiable callback
- %% and return something different depending on query string.
- -module(range_satisfiable_h).
- -export([init/2]).
- -export([content_types_provided/2]).
- -export([ranges_provided/2]).
- -export([range_satisfiable/2]).
- -export([get_text_plain/2]).
- -export([get_text_plain_bytes/2]).
- init(Req, State) ->
- {cowboy_rest, Req, State}.
- content_types_provided(Req, State) ->
- {[{{<<"text">>, <<"plain">>, []}, get_text_plain}], Req, State}.
- ranges_provided(Req, State) ->
- {[{<<"bytes">>, get_text_plain_bytes}], Req, State}.
- %% Simulate the callback being missing, otherwise expect true/false.
- range_satisfiable(#{qs := <<"missing">>}, _) ->
- no_call;
- range_satisfiable(Req=#{qs := <<"false-int">>}, State) ->
- {{false, 123}, Req, State};
- range_satisfiable(Req=#{qs := <<"false-bin">>}, State) ->
- {{false, <<"*/456">>}, Req, State};
- range_satisfiable(Req=#{qs := Qs}, State) ->
- {Qs =:= <<"true">>, Req, State}.
- get_text_plain(Req, State) ->
- {<<"This is REST!">>, Req, State}.
- get_text_plain_bytes(Req, State) ->
- %% We send everything in one part, since we are not testing
- %% this callback specifically.
- Body = <<"This is ranged REST!">>,
- {[{{0, byte_size(Body) - 1, byte_size(Body)}, Body}], Req, State}.
|