Browse Source

Remove the broken examples

Hooks are gone, and we won't be able to stream body in REST
in Cowboy 2.0-rc.1, and might not in 2.0 either. That is,
other than via halting the processing.
Loïc Hoguin 7 years ago
parent
commit
e7a65406a7

+ 0 - 8
examples/error_hook/Makefile

@@ -1,8 +0,0 @@
-PROJECT = error_hook
-PROJECT_DESCRIPTION = Cowboy error handler example
-PROJECT_VERSION = 1
-
-DEPS = cowboy
-dep_cowboy_commit = master
-
-include ../../erlang.mk

+ 0 - 49
examples/error_hook/README.asciidoc

@@ -1,49 +0,0 @@
-= Error hook example
-
-*This example is currently broken on master.*
-
-To try this example, you need GNU `make` and `git` in your PATH.
-
-To build and run the example, use the following command:
-
-[source,bash]
-$ make run
-
-Then point your browser to http://localhost:8080
-
-== Example output
-
-Not found:
-
-[source,bash]
-----
-$ curl -i http://localhost:8080
-HTTP/1.1 404 Not Found
-connection: keep-alive
-server: Cowboy
-date: Wed, 27 Feb 2013 23:32:55 GMT
-content-length: 56
-
-404 Not Found: "/" is not the path you are looking for.
-----
-
-Bad request:
-
-[source,bash]
-----
-$ telnet localhost 8080
-Trying ::1...
-Connection failed: Connection refused
-Trying 127.0.0.1...
-Connected to localhost.
-Escape character is '^]'.
-bad
-HTTP/1.1 400 Bad Request
-connection: close
-server: Cowboy
-date: Sun, 08 Sep 2013 09:29:27 GMT
-content-length: 15
-
-HTTP Error 400
-Connection closed by foreign host.
-----

+ 0 - 2
examples/error_hook/relx.config

@@ -1,2 +0,0 @@
-{release, {error_hook_example, "1"}, [error_hook]}.
-{extended_start_script, true}.

+ 0 - 39
examples/error_hook/src/error_hook_app.erl

@@ -1,39 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @private
--module(error_hook_app).
--behaviour(application).
-
-%% API.
--export([start/2]).
--export([stop/1]).
-
-%% API.
-
-start(_Type, _Args) ->
-	Dispatch = cowboy_router:compile([
-		{'_', []}
-	]),
-	{ok, _} = cowboy:start_http(http, 100, [{port, 8080}], [
-		{env, [{dispatch, Dispatch}]},
-		{onresponse, fun error_hook/4}
-	]),
-	error_hook_sup:start_link().
-
-stop(_State) ->
-	ok.
-
-error_hook(404, Headers, <<>>, Req) ->
-	Path = cowboy_req:path(Req),
-	Body = ["404 Not Found: \"", Path,
-		"\" is not the path you are looking for.\n"],
-	Headers2 = lists:keyreplace(<<"content-length">>, 1, Headers,
-		{<<"content-length">>, integer_to_list(iolist_size(Body))}),
-	cowboy_req:reply(404, Headers2, Body, Req);
-error_hook(Code, Headers, <<>>, Req) when is_integer(Code), Code >= 400 ->
-	Body = ["HTTP Error ", integer_to_list(Code), $\n],
-	Headers2 = lists:keyreplace(<<"content-length">>, 1, Headers,
-		{<<"content-length">>, integer_to_list(iolist_size(Body))}),
-	cowboy_req:reply(Code, Headers2, Body, Req);
-error_hook(_Code, _Headers, _Body, Req) ->
-	Req.

+ 0 - 23
examples/error_hook/src/error_hook_sup.erl

@@ -1,23 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @private
--module(error_hook_sup).
--behaviour(supervisor).
-
-%% API.
--export([start_link/0]).
-
-%% supervisor.
--export([init/1]).
-
-%% API.
-
--spec start_link() -> {ok, pid()}.
-start_link() ->
-	supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-
-%% supervisor.
-
-init([]) ->
-	Procs = [],
-	{ok, {{one_for_one, 10, 10}, Procs}}.

+ 0 - 8
examples/rest_stream_response/Makefile

@@ -1,8 +0,0 @@
-PROJECT = rest_stream_response
-PROJECT_DESCRIPTION = Cowboy REST example with streaming
-PROJECT_VERSION = 1
-
-DEPS = cowboy
-dep_cowboy_commit = master
-
-include ../../erlang.mk

+ 0 - 69
examples/rest_stream_response/README.asciidoc

@@ -1,69 +0,0 @@
-= REST streaming example
-
-*This example is currently broken on master.*
-
-To try this example, you need GNU `make` and `git` in your PATH.
-
-To build and run the example, use the following command:
-
-[source,bash]
-$ make run
-
-Then point your browser to http://localhost:8080
-
-== About
-
-This example simulates streaming a large amount of data from a data store one
-record at a time in CSV format. It also uses a constraint to ensure that the
-last segment of the route is an integer.
-
-== Example output
-
-Fetch records with the second field with value 1:
-
-[source,bash]
-----
-$ curl -i localhost:8080
-HTTP/1.1 200 OK
-transfer-encoding: identity
-server: Cowboy
-date: Sun, 10 Feb 2013 19:32:16 GMT
-connection: close
-content-type: text/csv
-
-DBUZGQ0C,1,28
-BgoQAxMV,1,6
-DAYEFxER,1,18
-...
-----
-
-Fetch records with the second field with value 4:
-
-[source,bash]
-----
-$ curl -i localhost:8080/4
-HTTP/1.1 200 OK
-transfer-encoding: identity
-server: Cowboy
-date: Sun, 10 Feb 2013 19:34:31 GMT
-connection: close
-content-type: text/csv
-
-ABcFDxcE,4,42
-DgYQCgEE,4,5
-CA8BBhYD,4,10
-...
-----
-
-Fail to use a proper integer and get an error:
-
-[source,bash]
-----
-$ curl -i localhost:8080/foo
-HTTP/1.1 404 Not Found
-connection: keep-alive
-server: Cowboy
-date: Sun, 10 Feb 2013 19:36:16 GMT
-content-length: 0
-
-----

+ 0 - 2
examples/rest_stream_response/relx.config

@@ -1,2 +0,0 @@
-{release, {rest_stream_response_example, "1"}, [rest_stream_response]}.
-{extended_start_script, true}.

+ 0 - 39
examples/rest_stream_response/src/rest_stream_response_app.erl

@@ -1,39 +0,0 @@
-%% 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).

+ 0 - 23
examples/rest_stream_response/src/rest_stream_response_sup.erl

@@ -1,23 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @private
--module(rest_stream_response_sup).
--behaviour(supervisor).
-
-%% API.
--export([start_link/0]).
-
-%% supervisor.
--export([init/1]).
-
-%% API.
-
--spec start_link() -> {ok, pid()}.
-start_link() ->
-	supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-
-%% supervisor.
-
-init([]) ->
-	Procs = [],
-	{ok, {{one_for_one, 10, 10}, Procs}}.

+ 0 - 37
examples/rest_stream_response/src/toppage_handler.erl

@@ -1,37 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @doc Streaming handler.
--module(toppage_handler).
-
--export([init/2]).
--export([content_types_provided/2]).
--export([streaming_csv/2]).
-
-init(Req, Table) ->
-	{cowboy_rest, Req, Table}.
-
-content_types_provided(Req, State) ->
-	{[
-		{{<<"text">>, <<"csv">>, []}, streaming_csv}
-	], Req, State}.
-
-streaming_csv(Req, Table) ->
-	N = cowboy_req:binding(v1, Req, 1),
-	MS = [{{'$1', '$2', '$3'}, [{'==', '$2', N}], ['$$']}],
-	{{stream, result_streamer(Table, MS)}, Req, Table}.
-
-result_streamer(Table, MS) ->
-	fun (Socket, Transport) ->
-		send_records(Socket, Transport, ets:select(Table, MS, 1))
-	end.
-
-send_records(Socket, Transport, {[Rec], Cont}) ->
-	timer:sleep(500),
-	send_line(Socket, Transport, Rec),
-	send_records(Socket, Transport, ets:select(Cont));
-send_records(_Socket, _Transport, '$end_of_table') ->
-	ok.
-
-send_line(Socket, Transport, [Key, V1, V2]) ->
-	Transport:send(Socket,
-		[Key, $,, integer_to_list(V1), $,, integer_to_list(V2), $\r, $\n]).