Current section
Files
Jump to
Current section
Files
src/yamlstar.erl
-module(yamlstar).
-on_load(load_nif/0).
-export([load/1, load_json/1]).
-export([nif_load_json/1]).
load_nif() ->
Priv = filename:join(filename:dirname(code:which(?MODULE)), "../priv"),
erlang:load_nif(filename:join(Priv, "yamlstar_nif"), 0).
load(Input) when is_list(Input) ->
load(list_to_binary(Input));
load(Input) when is_binary(Input) ->
case load_json(Input) of
{error, Message} ->
{error, Message};
JSON ->
Resp = json:decode(JSON),
case maps:get(<<"error">>, Resp, null) of
null ->
{ok, maps:get(<<"data">>, Resp)};
Error ->
{error, maps:get(<<"cause">>, Error)}
end
end.
load_json(Input) when is_list(Input) ->
load_json(list_to_binary(Input));
load_json(Input) when is_binary(Input) ->
nif_load_json(Input).
nif_load_json(_Input) ->
erlang:nif_error(nif_not_loaded).