From f9dd3c9e54da7690db6f936d644c1c7b88ac6e9b Mon Sep 17 00:00:00 2001 From: Adam Cammack Date: Sun, 10 Feb 2013 13:54:51 -0600 Subject: Add a REST example that streams its response --- .../src/rest_stream_response_app.erl | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 examples/rest_stream_response/src/rest_stream_response_app.erl (limited to 'examples/rest_stream_response/src/rest_stream_response_app.erl') diff --git a/examples/rest_stream_response/src/rest_stream_response_app.erl b/examples/rest_stream_response/src/rest_stream_response_app.erl new file mode 100644 index 0000000..a382d29 --- /dev/null +++ b/examples/rest_stream_response/src/rest_stream_response_app.erl @@ -0,0 +1,38 @@ +%% Feel free to use, reuse and abuse the code in this file. + +%% @private +-module(rest_stream_response_app). +-behaviour(application). + +%% API. +-export([start/2]). +-export([stop/1]). + +%% API. + +start(_Type, _Args) -> + Table = ets:new(stream_tab, []), + generate_rows(Table, 1000), + Dispatch = cowboy_router:compile([ + {'_', [ + {"/[:v1]", [{v1, int}], toppage_handler, Table} + ]} + ]), + {ok, _} = cowboy:start_http(http, 100, [{port, 8080}], [ + {env, [{dispatch, Dispatch}]} + ]), + rest_stream_response_sup:start_link(). + +stop(_State) -> + ok. + +generate_rows(_Table, 0) -> ok; +generate_rows(Table, N) -> + ets:insert(Table, {key(), val(), val()}), + generate_rows(Table, N - 1). + +key() -> key(10). +key(N) -> key(<< (random:uniform(26) - 1) >>, N - 1). +key(Acc, 0) -> binary_part(base64:encode(Acc), 0, 8); +key(Acc, N) -> key(<< Acc/binary, (random:uniform(26) - 1) >>, N - 1). +val() -> random:uniform(50). -- cgit v1.2.3