aboutsummaryrefslogtreecommitdiffstats
path: root/examples/web_server/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2016-06-13 13:23:22 +0200
committerLoïc Hoguin <[email protected]>2016-06-13 13:26:24 +0200
commit88227898edd26a823d0942fc7226adb61a20cb5d (patch)
treeaf1aeb41e7b92145b3be017cfdf18bf66f4a8e6e /examples/web_server/src
parent4293a40d9e922bc00f25d6c7e328f86e102275a0 (diff)
downloadcowboy-88227898edd26a823d0942fc7226adb61a20cb5d.tar.gz
cowboy-88227898edd26a823d0942fc7226adb61a20cb5d.tar.bz2
cowboy-88227898edd26a823d0942fc7226adb61a20cb5d.zip
Merge static_world and web_server examples
The new example is called file_server and it's basically the same as web_server was. The name is clearer than the original, all examples being "Web servers". The new example is also tested and the test suite has been refactored a little.
Diffstat (limited to 'examples/web_server/src')
-rw-r--r--examples/web_server/src/directory_handler.erl47
-rw-r--r--examples/web_server/src/directory_lister.erl36
-rw-r--r--examples/web_server/src/web_server_app.erl29
-rw-r--r--examples/web_server/src/web_server_sup.erl23
4 files changed, 0 insertions, 135 deletions
diff --git a/examples/web_server/src/directory_handler.erl b/examples/web_server/src/directory_handler.erl
deleted file mode 100644
index 7af67ba..0000000
--- a/examples/web_server/src/directory_handler.erl
+++ /dev/null
@@ -1,47 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @doc Directory handler.
--module(directory_handler).
-
-%% REST Callbacks
--export([init/2]).
--export([allowed_methods/2]).
--export([resource_exists/2]).
--export([content_types_provided/2]).
-
-%% Callback Callbacks
--export([list_json/2]).
--export([list_html/2]).
-
-init(Req, Paths) ->
- {cowboy_rest, Req, Paths}.
-
-allowed_methods(Req, State) ->
- {[<<"GET">>], Req, State}.
-
-resource_exists(Req, {ReqPath, FilePath}) ->
- case file:list_dir(FilePath) of
- {ok, Fs} -> {true, Req, {ReqPath, lists:sort(Fs)}};
- _Err -> {false, Req, {ReqPath, FilePath}}
- end.
-
-content_types_provided(Req, State) ->
- {[
- {{<<"application">>, <<"json">>, []}, list_json},
- {{<<"text">>, <<"html">>, []}, list_html}
- ], Req, State}.
-
-list_json(Req, {Path, Fs}) ->
- Files = [[ <<(list_to_binary(F))/binary>> || F <- Fs ]],
- {jsx:encode(Files), Req, Path}.
-
-list_html(Req, {Path, Fs}) ->
- Body = [[ links(Path, F) || F <- [".."|Fs] ]],
- HTML = [<<"<!DOCTYPE html><html><head><title>Index</title></head>",
- "<body>">>, Body, <<"</body></html>\n">>],
- {HTML, Req, Path}.
-
-links(<<>>, File) ->
- ["<a href='/", File, "'>", File, "</a><br>\n"];
-links(Prefix, File) ->
- ["<a href='/", Prefix, $/, File, "'>", File, "</a><br>\n"].
diff --git a/examples/web_server/src/directory_lister.erl b/examples/web_server/src/directory_lister.erl
deleted file mode 100644
index bc34073..0000000
--- a/examples/web_server/src/directory_lister.erl
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
--module(directory_lister).
--behaviour(cowboy_middleware).
-
--export([execute/2]).
-
-execute(Req, Env) ->
- case lists:keyfind(handler, 1, Env) of
- {handler, cowboy_static} -> redirect_directory(Req, Env);
- _H -> {ok, Req, Env}
- end.
-
-redirect_directory(Req, Env) ->
- Path = cowboy_req:path_info(Req),
- Path1 = << <<S/binary, $/>> || S <- Path >>,
- {handler_opts, {_, _, _, Extra}} = lists:keyfind(handler_opts, 1, Env),
- {dir_handler, DirHandler} = lists:keyfind(dir_handler, 1, Extra),
- FullPath = resource_path(Path1),
- case valid_path(Path) and filelib:is_dir(FullPath) of
- true -> handle_directory(Req, Env, Path1, FullPath, DirHandler);
- false -> {ok, Req, Env}
- end.
-
-handle_directory(Req, Env, Prefix, Path, DirHandler) ->
- Env1 = lists:keydelete(handler, 1,
- lists:keydelete(handler_opts, 1, Env)),
- {ok, Req, [{handler, DirHandler}, {handler_opts, {Prefix, Path}} | Env1]}.
-
-valid_path([]) -> true;
-valid_path([<<"..">> | _T]) -> false;
-valid_path([<<"/", _/binary>> | _T]) -> false;
-valid_path([_H | Rest]) -> valid_path(Rest).
-
-resource_path(Path) ->
- filename:join([code:priv_dir(web_server), Path]).
diff --git a/examples/web_server/src/web_server_app.erl b/examples/web_server/src/web_server_app.erl
deleted file mode 100644
index e32d947..0000000
--- a/examples/web_server/src/web_server_app.erl
+++ /dev/null
@@ -1,29 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @private
--module(web_server_app).
--behaviour(application).
-
-%% API.
--export([start/2]).
--export([stop/1]).
-
-%% API.
-
-start(_Type, _Args) ->
- Dispatch = cowboy_router:compile([
- {'_', [
- {"/[...]", cowboy_static, {priv_dir, web_server, "", [
- {mimetypes, cow_mimetypes, all},
- {dir_handler, directory_handler}
- ]}}
- ]}
- ]),
- {ok, _} = cowboy:start_http(http, 100, [{port, 8080}], [
- {env, [{dispatch, Dispatch}]},
- {middlewares, [cowboy_router, directory_lister, cowboy_handler]}
- ]),
- web_server_sup:start_link().
-
-stop(_State) ->
- ok.
diff --git a/examples/web_server/src/web_server_sup.erl b/examples/web_server/src/web_server_sup.erl
deleted file mode 100644
index 03f9f67..0000000
--- a/examples/web_server/src/web_server_sup.erl
+++ /dev/null
@@ -1,23 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @private
--module(web_server_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}}.