|
@@ -18,20 +18,21 @@ c(X) -> erlang:list_to_atom(erlang:binary_to_list(X)).
|
|
|
|
|
|
|
|
|
rest_init(Req, _Opts) ->
|
|
|
- {Resource, Req1} = cowboy_req:binding(resource, Req),
|
|
|
+ Resource = cowboy_req:binding(resource, Req),
|
|
|
+ io:format("rest_init:~n ~p~n~p~n", [Resource, rest_module(Resource)]),
|
|
|
Module = case rest_module(Resource) of
|
|
|
{ok, M} -> M;
|
|
|
_ -> undefined
|
|
|
end,
|
|
|
- {Id, Req2} = cowboy_req:binding(id, Req1),
|
|
|
- {Origin, Req3} = cowboy_req:header(<<"origin">>, Req2, <<"*">>),
|
|
|
- Req4 = cowboy_req:set_resp_header(<<"Access-Control-Allow-Origin">>, Origin, Req3),
|
|
|
+ Id = cowboy_req:binding(id, Req),
|
|
|
+ Origin = cowboy_req:header(<<"origin">>, Req, <<"*">>),
|
|
|
+ Req2 = cowboy_req:set_resp_header(<<"Access-Control-Allow-Origin">>, Origin, Req),
|
|
|
io:format("REST INIT~n"),
|
|
|
- {ok, Req4, #st{resource_module = Module, resource_id = Id}}.
|
|
|
+ {ok, Req2, #st{resource_module = Module, resource_id = Id}}.
|
|
|
|
|
|
resource_exists(#{bindings := #{resource := Module, id := Id}} = Req, State) ->
|
|
|
M = c(Module),
|
|
|
- io:format("EXISTS: ~p dymamic: ~p~n", [Id, M:exists(Id)]),
|
|
|
+ io:format("EXISTS: ~p dynamic: ~p~n", [Id, M:exists(Id)]),
|
|
|
{M:exists(Id), Req, State};
|
|
|
resource_exists(#{bindings := #{resource := Module}} = Req, State) ->
|
|
|
io:format("resource ~p: no-id~n", [Module]),
|
|
@@ -40,10 +41,12 @@ resource_exists(#{bindings := #{id := _}} = Req, State) ->
|
|
|
io:format("EXISTS id: true~n"),
|
|
|
{true, Req, State}.
|
|
|
|
|
|
-allowed_methods(#{bindings := #{resource := _}} = Req, State) ->
|
|
|
- {[<<"GET">>, <<"POST">>], Req, State};
|
|
|
+
|
|
|
allowed_methods(#{bindings := #{resource := _, id := _}} = Req, State) ->
|
|
|
- {[<<"GET">>, <<"PUT">>, <<"DELETE">>], Req, State}.
|
|
|
+ {[<<"GET">>, <<"PUT">>, <<"DELETE">>], Req, State};
|
|
|
+allowed_methods(#{bindings := #{resource := _}} = Req, State) ->
|
|
|
+ {[<<"GET">>, <<"POST">>], Req, State}.
|
|
|
+
|
|
|
|
|
|
content_types_provided(#{bindings := #{resource := Module}} = Req, State) ->
|
|
|
{case erlang:function_exported(c(Module), to_html, 1) of
|
|
@@ -66,7 +69,7 @@ to_html(#{bindings := #{resource := Module, id := Id}} = Req, State) ->
|
|
|
|
|
|
|
|
|
default_html_layout(Body) ->
|
|
|
- [<<"<html><body>">>, Body, <<"</body></html>">>].
|
|
|
+ [<<"<!DOCTYPE html><html><body>">>, Body, <<"</body></html>">>].
|
|
|
|
|
|
to_json(#{bindings := #{resource := Module, id := Id}} = Req, State) ->
|
|
|
io:format("~p ~p ~p~n", [?FUNCTION_NAME, Module, Id]),
|
|
@@ -91,7 +94,7 @@ content_types_accepted(Req, State) ->
|
|
|
handle_urlencoded_data(#{bindings := #{resource := Module}} = Req0, State) ->
|
|
|
{ok, Data1, Req} = cowboy_req:read_urlencoded_body(Req0),
|
|
|
io:format("FORM: ~p, Data1: ~p~n", [Module, Data1]),
|
|
|
- {handle_data(c(Module), [], Data1, Req), Req, State};
|
|
|
+ {handle_data(c(Module), [], Data1, Req0), Req, State};
|
|
|
|
|
|
handle_urlencoded_data(#{bindings := #{resource := Module, id := Id}} = Req, State) ->
|
|
|
{ok, Data, Req2} = cowboy_req:read_urlencoded_body(Req),
|