aboutsummaryrefslogtreecommitdiff
path: root/apps/dreki_web/src/dreki_web_ui_task.erl
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dreki_web/src/dreki_web_ui_task.erl')
-rw-r--r--apps/dreki_web/src/dreki_web_ui_task.erl20
1 files changed, 20 insertions, 0 deletions
diff --git a/apps/dreki_web/src/dreki_web_ui_task.erl b/apps/dreki_web/src/dreki_web_ui_task.erl
new file mode 100644
index 0000000..1ced583
--- /dev/null
+++ b/apps/dreki_web/src/dreki_web_ui_task.erl
@@ -0,0 +1,20 @@
+-module(dreki_web_ui_task).
+-behaviour(cowboy_handler).
+-export([init/2]).
+
+init(Req = #{method := <<"GET">>}, State) ->
+ Id = cowboy_req:binding(id, Req),
+ {ok, Db} = dreki_tasks:open(),
+ case dreki_tasks:get(Db, Id) of
+ {ok, Task} ->
+ MTask = dreki_task:to_map(Task),
+ PrettyParams = jsone:encode(maps:get(params, MTask), [canonical_form, {space, 1}, {indent, 4}]),
+ Html = dreki_web_ui:render(Req, task_dtl, [{"page_title", <<"Task: ", Id/binary>>}, {"task", MTask}, {"task_pretty_params", PrettyParams}]),
+ {ok, dreki_web_ui:reply_html(Req, 200, Html), State};
+ Error ->
+ logger:debug("Failed to lookup task ~p: ~p", [Id, Error]),
+ dreki_web_ui_error:init(Req, #{code => 404, status => "Not found"})
+ end;
+init(Req, _) ->
+ dreki_web_ui_error:init(Req, #{code => 400, status => "Bad request"}).
+