aboutsummaryrefslogtreecommitdiffstats
path: root/examples/markdown_middleware/src/markdown_converter.erl
diff options
context:
space:
mode:
authorAdam Cammack <[email protected]>2013-02-09 04:04:49 -0600
committerAdam Cammack <[email protected]>2013-02-09 13:54:08 -0600
commit09f1a8d55bdd16e32de81d953ed281338db0cf89 (patch)
treed2a6696d12711a06d1d6a351822d33260dd526a7 /examples/markdown_middleware/src/markdown_converter.erl
parent26935cbfb021632eb8f932af43737fdbfcfad128 (diff)
downloadcowboy-09f1a8d55bdd16e32de81d953ed281338db0cf89.tar.gz
cowboy-09f1a8d55bdd16e32de81d953ed281338db0cf89.tar.bz2
cowboy-09f1a8d55bdd16e32de81d953ed281338db0cf89.zip
Add an example with custom middleware
Diffstat (limited to 'examples/markdown_middleware/src/markdown_converter.erl')
-rw-r--r--examples/markdown_middleware/src/markdown_converter.erl29
1 files changed, 29 insertions, 0 deletions
diff --git a/examples/markdown_middleware/src/markdown_converter.erl b/examples/markdown_middleware/src/markdown_converter.erl
new file mode 100644
index 0000000..24bb132
--- /dev/null
+++ b/examples/markdown_middleware/src/markdown_converter.erl
@@ -0,0 +1,29 @@
+%% Feel free to use, reuse and abuse the code in this file.
+
+-module(markdown_converter).
+-behaviour(cowboy_middleware).
+
+-export([execute/2]).
+
+execute(Req, Env) ->
+ {[Path], Req1} = cowboy_req:path_info(Req),
+ case filename:extension(Path) of
+ <<".html">> -> maybe_generate_markdown(resource_path(Path));
+ _Ext -> ok
+ end,
+ {ok, Req1, Env}.
+
+maybe_generate_markdown(Path) ->
+ ModifiedAt = filelib:last_modified(source_path(Path)),
+ GeneratedAt = filelib:last_modified(Path),
+ case ModifiedAt > GeneratedAt of
+ true -> erlmarkdown:conv_file(source_path(Path), Path);
+ false -> ok
+ end.
+
+resource_path(Path) ->
+ {ok, Cwd} = file:get_cwd(),
+ filename:join([Cwd, "priv", Path]).
+
+source_path(Path) ->
+ << (filename:rootname(Path))/binary, ".md" >>.