Packages
rebar3_hex
7.0.4
7.1.0
7.0.11
7.0.10
7.0.9
7.0.8
7.0.7
7.0.6
7.0.5
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.11.9
6.11.8
6.11.7
6.11.6
6.11.5
6.11.4
6.11.3
6.11.2
6.11.1
6.11.0
6.10.3
6.10.2
6.10.1
6.10.0
6.9.6
6.9.5
6.9.4
6.9.3
6.9.2
6.9.1
6.9.0
6.8.0
6.7.0
6.6.0
6.5.0
6.4.0
6.3.0
6.2.0
6.1.0
6.0.0
4.1.0
4.0.0
3.1.0
3.0.0
2.5.1
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.20.0
1.19.0
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.0
1.12.0
1.11.0
1.10.0
1.9.1
1.9.0
1.8.1
1.8.0
1.7.2
1.7.1
1.7.0
1.6.3
1.6.1
1.6.0
1.5.0
1.4.0
1.3.0
1.2.0
1.1.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Hex.pm plugin for rebar3
Current section
Files
Jump to
Current section
Files
src/rebar3_hex_key.erl
%% @private
-module(rebar3_hex_key).
-export([convert_permissions/2, fetch/2, format_error/1, generate/3, revoke/2, revoke_all/1, list/1]).
generate(HexConfig, KeyName, Perms) ->
case rebar3_hex_client:key_add(HexConfig, KeyName, Perms) of
{ok, _Res} = Ret ->
Ret;
Error ->
Error
end.
fetch(HexConfig, KeyName) ->
case rebar3_hex_client:key_get(HexConfig, KeyName) of
{ok, Res} ->
print_key_details(Res);
Error ->
Error
end.
revoke(HexConfig, KeyName) ->
case rebar3_hex_client:key_delete(HexConfig, KeyName) of
{ok, _Res} ->
ok;
Error ->
Error
end.
revoke_all(HexConfig) ->
case rebar3_hex_client:key_delete_all(HexConfig) of
{ok, _Res} ->
ok;
Error ->
Error
end.
list(HexConfig) ->
case rebar3_hex_client:key_list(HexConfig) of
{ok, Res} ->
print_results(Res);
Error ->
Error
end.
-spec convert_permissions([string()], [map()]) -> [map()].
convert_permissions([], Defaults) ->
Defaults;
convert_permissions(Perms, _) ->
lists:foldl(fun (Name, Acc) ->
case binary:split(rebar_utils:to_binary(Name), <<":">>) of
[Domain] ->
[#{<<"domain">> => Domain, <<"resource">> => nil}] ++ Acc;
[Domain, Resource] ->
[#{<<"domain">> => Domain, <<"resource">> => Resource}] ++ Acc
end
end,
[],
Perms).
print_results(Res) ->
Header = ["Name", "Created"],
Rows = lists:map(fun (#{<<"name">> := Name, <<"inserted_at">> := Created}) ->
[binary_to_list(Name), binary_to_list(Created)]
end,
Res),
ok = rebar3_hex_results:print_table([Header] ++ Rows),
ok.
print_key_details(#{<<"name">> := Name,
<<"inserted_at">> := Created,
<<"updated_at">> := Updated,
<<"last_use">> :=
#{<<"ip">> := Addr, <<"used_at">> := Used, <<"user_agent">> := _Agent}}) ->
Header = ["Name", "Created", "Updated", "LastUsed", "LastUsedBy"],
Row = [binary_to_list(Name),
binary_to_list(Created),
binary_to_list(Updated),
binary_to_list(Used),
binary_to_list(Addr)],
ok = rebar3_hex_results:print_table([Header] ++ [Row]),
ok;
print_key_details(#{<<"name">> := Name,
<<"inserted_at">> := Created,
<<"updated_at">> := Updated}) ->
Header = ["Name", "Created", "Updated", "LastUsed", "LastUsedBy"],
Row = [binary_to_list(Name),
binary_to_list(Created),
binary_to_list(Updated),
"never",
"n/a"],
ok = rebar3_hex_results:print_table([Header] ++ [Row]),
ok.
-spec format_error(any()) -> iolist().
format_error({list, {unauthorized, _Res}}) ->
"Error while attempting to perform list : Not authorized";
format_error({list, {error, #{<<"message">> := Msg}}}) ->
"Error while attempting to perform list : " ++ Msg;
format_error({revoke, {not_found, _Res}}) ->
"Error while revoking key : key not found";
format_error({generate,
{validation_errors, #{<<"errors">> := Errors, <<"message">> := Message}}}) ->
ErrorString = rebar3_hex_results:errors_to_string(Errors),
io_lib:format("~ts~n\t~ts", [Message, ErrorString]);
format_error(bad_command) ->
"Unknown command. Command must be fetch, generate, list, or "
"revoke";
format_error(Reason) ->
rebar3_hex_error:format_error(Reason).