/priv/skel/src/skel_web.erl
Erlang | 51 lines | 32 code | 11 blank | 8 comment | 0 complexity | 6b71f100e36df8f076e549170f3f2565 MD5 | raw file
Possible License(s): MIT
- %% @author author <author@example.com>
- %% @copyright YYYY author.
- %% @doc Web server for skel.
- -module(skel_web).
- -author('author <author@example.com>').
- -export([start/1, stop/0, loop/2]).
- %% External API
- start(Options) ->
- {DocRoot, Options1} = get_option(docroot, Options),
- Loop = fun (Req) ->
- ?MODULE:loop(Req, DocRoot)
- end,
- mochiweb_http:start([{name, ?MODULE}, {loop, Loop} | Options1]).
- stop() ->
- mochiweb_http:stop(?MODULE).
- loop(Req, DocRoot) ->
- "/" ++ Path = Req:get(path),
- case Req:get(method) of
- Method when Method =:= 'GET'; Method =:= 'HEAD' ->
- case Path of
- _ ->
- Req:serve_file(Path, DocRoot)
- end;
- 'POST' ->
- case Path of
- _ ->
- Req:not_found()
- end;
- _ ->
- Req:respond({501, [], []})
- end.
- %% Internal API
- get_option(Option, Options) ->
- {proplists:get_value(Option, Options), proplists:delete(Option, Options)}.
- %%
- %% Tests
- %%
- -include_lib("eunit/include/eunit.hrl").
- -ifdef(TEST).
- -endif.