ranges_provided_h.erl 834 B

123456789101112131415161718192021222324252627282930
  1. %% This module defines the ranges_provided callback
  2. %% and return something different depending on query string.
  3. -module(ranges_provided_h).
  4. -export([init/2]).
  5. -export([content_types_provided/2]).
  6. -export([ranges_provided/2]).
  7. -export([get_text_plain/2]).
  8. init(Req, State) ->
  9. {cowboy_rest, Req, State}.
  10. content_types_provided(Req, State) ->
  11. {[{{<<"text">>, <<"plain">>, []}, get_text_plain}], Req, State}.
  12. ranges_provided(Req=#{qs := <<"list">>}, State) ->
  13. {[
  14. {<<"bytes">>, get_text_plain_bytes},
  15. {<<"pages">>, get_text_plain_pages},
  16. {<<"chapters">>, get_text_plain_chapters}
  17. ], Req, State};
  18. ranges_provided(Req=#{qs := <<"none">>}, State) ->
  19. {[], Req, State};
  20. %% Simulate the callback being missing in other cases.
  21. ranges_provided(_, _) ->
  22. no_call.
  23. get_text_plain(Req, State) ->
  24. {<<"This is REST!">>, Req, State}.