aboutsummaryrefslogtreecommitdiffstats
path: root/examples/rest_stream_response/src/rest_stream_response_app.erl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/rest_stream_response/src/rest_stream_response_app.erl')
-rw-r--r--examples/rest_stream_response/src/rest_stream_response_app.erl38
1 files changed, 38 insertions, 0 deletions
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).