diff options
author | Loïc Hoguin <[email protected]> | 2016-06-13 13:23:22 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2016-06-13 13:26:24 +0200 |
commit | 88227898edd26a823d0942fc7226adb61a20cb5d (patch) | |
tree | af1aeb41e7b92145b3be017cfdf18bf66f4a8e6e /examples/web_server | |
parent | 4293a40d9e922bc00f25d6c7e328f86e102275a0 (diff) | |
download | cowboy-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')
-rw-r--r-- | examples/web_server/Makefile | 8 | ||||
-rw-r--r-- | examples/web_server/README.asciidoc | 11 | ||||
-rw-r--r-- | examples/web_server/priv/small.mp4 | bin | 383631 -> 0 bytes | |||
-rw-r--r-- | examples/web_server/priv/small.ogv | bin | 872453 -> 0 bytes | |||
-rw-r--r-- | examples/web_server/priv/test.txt | 1 | ||||
-rw-r--r-- | examples/web_server/priv/video.html | 11 | ||||
-rw-r--r-- | examples/web_server/relx.config | 2 | ||||
-rw-r--r-- | examples/web_server/src/directory_handler.erl | 47 | ||||
-rw-r--r-- | examples/web_server/src/directory_lister.erl | 36 | ||||
-rw-r--r-- | examples/web_server/src/web_server_app.erl | 29 | ||||
-rw-r--r-- | examples/web_server/src/web_server_sup.erl | 23 |
11 files changed, 0 insertions, 168 deletions
diff --git a/examples/web_server/Makefile b/examples/web_server/Makefile deleted file mode 100644 index 34ec805..0000000 --- a/examples/web_server/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -PROJECT = web_server -PROJECT_DESCRIPTION = Cowboy static directory indexing example -PROJECT_VERSION = 1 - -DEPS = cowboy -dep_cowboy_commit = master - -include ../../erlang.mk diff --git a/examples/web_server/README.asciidoc b/examples/web_server/README.asciidoc deleted file mode 100644 index 8f0eb4b..0000000 --- a/examples/web_server/README.asciidoc +++ /dev/null @@ -1,11 +0,0 @@ -= Directory indexing example - -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 -to browse the contents of the `priv` directory. diff --git a/examples/web_server/priv/small.mp4 b/examples/web_server/priv/small.mp4 Binary files differdeleted file mode 100644 index 1fc4788..0000000 --- a/examples/web_server/priv/small.mp4 +++ /dev/null diff --git a/examples/web_server/priv/small.ogv b/examples/web_server/priv/small.ogv Binary files differdeleted file mode 100644 index 6409d6e..0000000 --- a/examples/web_server/priv/small.ogv +++ /dev/null diff --git a/examples/web_server/priv/test.txt b/examples/web_server/priv/test.txt deleted file mode 100644 index 760cddb..0000000 --- a/examples/web_server/priv/test.txt +++ /dev/null @@ -1 +0,0 @@ -If you read this then the static file server works! diff --git a/examples/web_server/priv/video.html b/examples/web_server/priv/video.html deleted file mode 100644 index eca63ee..0000000 --- a/examples/web_server/priv/video.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html> -<body> - <h1>HTML5 Video Example</h1> - <video controls> - <source src="small.ogv" type="video/ogg"/> - <source src="small.mp4" type="video/mp4"/> - </video> - <p>Videos taken from <a href="http://techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5/">TechSlides</a></p> -</body> -</html> diff --git a/examples/web_server/relx.config b/examples/web_server/relx.config deleted file mode 100644 index 305ab94..0000000 --- a/examples/web_server/relx.config +++ /dev/null @@ -1,2 +0,0 @@ -{release, {web_server_example, "1"}, [web_server]}. -{extended_start_script, true}. 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}}. |