Namdak Tonpa 5 лет назад
Родитель
Сommit
edf2667924
6 измененных файлов с 20 добавлено и 17 удалено
  1. 1 0
      .travis.yml
  2. 4 6
      mix.exs
  3. 1 1
      src/erp/Payment.erl
  4. 1 1
      src/erp/users.erl
  5. 1 1
      src/rest.erl
  6. 12 8
      src/rest_kvs.erl

+ 1 - 0
.travis.yml

@@ -6,3 +6,4 @@ script:
   - "curl -fsSL https://raw.github.com/synrc/mad/master/mad > mad"
   - "chmod +x mad"
   - "./mad dep com"
+  - "rebar3 dialyzer"

+ 4 - 6
mix.exs

@@ -3,7 +3,7 @@ defmodule REST.Mixfile do
 
   def project do
     [app: :rest,
-     version: "5.10.7",
+     version: "5.10.8",
      description: "REST erlang interface generator",
      deps: deps(),
      package: package()]
@@ -13,15 +13,13 @@ defmodule REST.Mixfile do
     [
       mod: {:rest, []},
       applications: [:public_key,:asn1,:kernel,:stdlib,:ranch,:cowboy,:syntax_tools,:compiler,:rocksdb,:kvs, :erp, :bpe]
-#      applications: [:public_key,:asn1,:kernel,:stdlib,:ranch,:cowboy,:syntax_tools,:compiler,:rocksdb,:kvs]
     ]
   end
 
-  def deps, do: [ {:ex_doc, ">= 0.0.0", only: :dev},
+  def deps, do: [ {:ex_doc, "~> 0.11", only: :dev},
                   {:rocksdb, "~> 1.3.2"},
-                  {:kvs, "~> 6.10.0", override: true},
-                  {:erp, "~> 0.10.3"},
-                  {:bpe, "~> 4.10.11"},
+                  {:erp, "~> 0.10.4"},
+                  {:bpe, "~> 4.10.24"},
                   {:jsone, "~> 1.5.0"},
                   {:cowboy, "~> 2.5.0"} ]
 

+ 1 - 1
src/erp/Payment.erl

@@ -3,4 +3,4 @@
 -compile({parse_transform, rest}).
 -compile(export_all).
 -rest_record('Payment').
-new() -> #'Payment'{}.
+new() -> #'Payment'{type=fiat}.

+ 1 - 1
src/erp/users.erl

@@ -1,7 +1,7 @@
 -module(users).
 -compile({parse_transform, rest}).
 -record(user, {id,cn,name,type}).
--export([init/0, populate/1, exists/1, get/0, get/1, post/1, delete/1]).
+-export([init/0, populate/1, new/0, exists/1, get/0, get/1, post/1, delete/1]).
 -rest_record(user).
 
 new() -> #user{}.

+ 1 - 1
src/rest.erl

@@ -4,7 +4,7 @@
 -behaviour(supervisor).
 -export([init/1,start/2, stop/1]).
 -export([behaviour_info/1, parse_transform/2, generate_to_json/3, binarize/1,
-         generate_from_json/3, from_json/2, to_json/1, to_binary/1, parse/1]).
+         generate_from_json/3, from_json/2, to_json/1, to_binary/1, parse/1, atomize/1]).
 
 stop(_State) -> ok.
 start(_StartType, _StartArgs) -> supervisor:start_link({local, ?MODULE}, ?MODULE, []).

+ 12 - 8
src/rest_kvs.erl

@@ -1,5 +1,6 @@
 -module(rest_kvs).
 -include_lib("kvs/include/kvs.hrl").
+-compile(export_all).
 -export([exists/1, exists/2, new/1, get/1, delete/2, post/2, post/3]).
 -export([init/2, resource_exists/2, allowed_methods/2, content_types_provided/2,
          to_html/2, to_json/2, content_types_accepted/2, delete_resource/2,
@@ -18,6 +19,7 @@ new(Type)          -> Type:new().
 exists(Mod)        -> {X,_} = kvs:get(writer,c(Mod)), X == ok.
 exists(Mod,Id)     -> {X,_} = kvs:get(c(Mod),c(Id)), X == ok.
 get(Mod)           -> kvs:all(Mod).
+get(Mod,Id)        -> {X,Y} = kvs:get(c(Mod),c(Id)), X == ok, Y.
 delete(Mod,Id)     -> kvs:delete(Mod,Id).
 post(Mod,Resource) when is_tuple(Resource) -> kvs:append(Mod,Resource).
 post(Type,Mod,Data)     when is_list(Data) -> post(Mod,Type:from_json(new(Type))).
@@ -58,13 +60,13 @@ content_types_provided(#{bindings := #{resource := Module}} = Req, State) ->
 % TODO: HTML render broken!
 
 to_html(#{bindings := #{resource := Module, id := Id}} = Req, State) ->
-    Body = case Id of
-               Id when Id==[];Id==undefined -> [ rest_kvs:to_html(Module, Resource) || Resource <- rest_kvs:get(Module,Id) ];
-               _ -> rest_kvs:to_html(rest_kvs:get(Module,Id)) end,
-    Html = case application:get_env(rest,html_layout,false) of
-               true  -> rest_kvs:html_layout(Module, Req, Body);
-               false -> default_html_layout(Body) end,
-    {Html, Req, State}.
+%    Body = case Id of
+%               Id when Id==[];Id==undefined -> [ rest_kvs:to_html(Module, Resource) || Resource <- rest_kvs:get(Module,Id) ];
+%               _ -> rest_kvs:to_html(rest_kvs:get(Module,Id)) end,
+%    Html = case application:get_env(rest,html_layout,false) of
+%               true  -> rest_kvs:html_layout(Module, Req, Body);
+%               false -> default_html_layout(Body) end,
+    {<<>>, Req, State}.
 
 default_html_layout(Body) -> [<<"<html><body>">>, Body, <<"</body></html>">>].
 
@@ -117,12 +119,14 @@ handle_data(Mod, Id, Data, Req) ->
                                    false -> default_put(Type, Mod, Id, Data, Req) end
     end.
 
+validate(_,_,_) -> true.
+keys_allowed(_,_) -> true.
+
 default_put(Type, Mod, Id, Data, Req) when is_map(Data) -> default_put(Type, Mod, Id, maps:to_list(Data), Req);
 default_put(Type, Mod, Id, Data, Req) ->
     NewRes = Type:from_json(Data, rest_kvs:get(Mod,Id)),
     NewId = proplists:get_value(id, Type:to_json(NewRes)),
     case Id =/= NewId of
-        true when Id =:= [] -> skip;
         true -> rest_kvs:delete(Mod,Id);
         false -> true end,
     rest_kvs:post(Type,Mod,NewRes).