-module(examples).
-export([
post_request/0,
cancel_request/0,
channel_time_range_request/0,
channel_state_request/0,
channel_list_request/0,
hash_response/0,
post_response/0,
channel_list_response/0,
post_text/0,
post_delete/0,
post_info/0,
post_topic/0,
post_join/0,
post_leave/0
]).
post_request() ->
{ok, D} = unpack_data(2),
<<"post request">> = proplists:get_value(name, D),
D.
cancel_request() ->
{ok, D} = unpack_data(3),
<<"cancel request">> = proplists:get_value(name, D),
D.
channel_time_range_request() ->
{ok, D} = unpack_data(4),
<<"channel time range request">> = proplists:get_value(name, D),
D.
channel_state_request() ->
{ok, D} = unpack_data(5),
<<"channel state request">> = proplists:get_value(name, D),
D.
channel_list_request() ->
{ok, D} = unpack_data(6),
<<"channel list request">> = proplists:get_value(name, D),
D.
hash_response() ->
{ok, D} = unpack_data(8),
<<"hash response">> = proplists:get_value(name, D),
D.
post_response() ->
{ok, D} = unpack_data(9),
<<"post response">> = proplists:get_value(name, D),
D.
channel_list_response() ->
{ok, D} = unpack_data(10),
<<"channel list response">> = proplists:get_value(name, D),
D.
post_text() ->
{ok, D} = unpack_data(11),
<<"post/text">> = proplists:get_value(name, D),
D.
post_delete() ->
{ok, D} = unpack_data(12),
<<"post/delete">> = proplists:get_value(name, D),
D.
post_info() ->
{ok, D} = unpack_data(13),
<<"post/info">> = proplists:get_value(name, D),
D.
post_topic() ->
{ok, D} = unpack_data(14),
<<"post/topic">> = proplists:get_value(name, D),
D.
post_join() ->
{ok, D} = unpack_data(15),
<<"post/join">> = proplists:get_value(name, D),
D.
post_leave() ->
{ok, D} = unpack_data(16),
<<"post/leave">> = proplists:get_value(name, D),
D.
load() ->
case file:read_file("cable-examples.json") of
{ok, Binary} ->
try
Json = jsone:decode(Binary),
persistent_term:put(json_data, Json),
{ok, Json}
catch
_:Error -> {error, Error}
end;
{error, Reason} ->
{error, Reason}
end.
get_data(Index) ->
{ok, J} =
case persistent_term:get(json_data, undefined) of
undefined -> load();
Json -> {ok, Json}
end,
{ok, lists:nth(Index, J)}.
unpack_data(Index) ->
{ok, J} = get_data(Index),
#{<<"binary">> := Bin, <<"obj">> := Obj, <<"name">> := Name} = J,
{ok, [
{name, Name},
{binary, hex:hexstr_to_bin(binary_to_list(Bin))},
{obj, Obj}
]}.