- %% Vendored from hex_core v0.6.8, do not edit manually
-
- -module(r3_hex_api_key).
- -export([
- list/1,
- get/2,
- add/3,
- delete/2,
- delete_all/1
- ]).
-
- -export_type([permission/0]).
-
- -type permission() :: api_permission() | repo_permission() | repos_permission().
- -ifdef(OTP_19).
- -type api_permission() :: #{domain := api, resource => read | write}.
- -type repo_permission() :: #{domain := repository, resource := binary()}.
- -type repos_permission() :: #{domain := repositories}.
- -else.
- -type api_permission() :: #{domain => api, resource => read | write}.
- -type repo_permission() :: #{domain => repository, resource => binary()}.
- -type repos_permission() :: #{domain => repositories}.
- -endif.
-
- %% @doc
- %% Lists the user's or organization's API and repository keys.
- %%
- %% Examples:
- %%
- %% ```
- %% > r3_hex_api_key:list(r3_hex_core:default_config()).
- %% {ok, {200, ..., [#{
- %% <<"authing_key">> => true,
- %% <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
- %% <<"last_use">> =>
- %% #{<<"ip">> => <<"1.2.3.4">>,
- %% <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
- %% <<"name">> => <<"hex_core">>,
- %% <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
- %% <<"revoked_at">> => nil,
- %% <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"url">> => <<"https://hex.pm/api/keys/test">>},
- %% }]}}
- %% '''
- %% @end
- -spec list(r3_hex_core:config()) -> r3_hex_api:response().
- list(Config) when is_map(Config) ->
- Path = r3_hex_api:build_organization_path(Config, ["keys"]),
- r3_hex_api:get(Config, Path).
-
- %% @doc
- %% Gets an API or repository key by name.
- %%
- %% Examples:
- %%
- %% ```
- %% > r3_hex_api_key:get(r3_hex_core:default_config(), <<"test">>).
- %% {ok, {200, ..., #{
- %% <<"authing_key">> => true,
- %% <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
- %% <<"last_use">> =>
- %% #{<<"ip">> => <<"1.2.3.4">>,
- %% <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
- %% <<"name">> => <<"hex_core">>,
- %% <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
- %% <<"revoked_at">> => nil,
- %% <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"url">> => <<"https://hex.pm/api/keys/test">>},
- %% }}}
- %% '''
- %% @end
- -spec get(r3_hex_core:config(), binary()) -> r3_hex_api:response().
- get(Config, Name) when is_map(Config) and is_binary(Name) ->
- Path = r3_hex_api:build_organization_path(Config, ["keys", Name]),
- r3_hex_api:get(Config, Path).
-
- %% @doc
- %% Adds a new API or repository key.
- %%
- %% Examples:
- %%
- %% ```
- %% > r3_hex_api_key:add(r3_hex_core:default_config(), <<"test">>, [...]).
- %% {ok, {200, ..., #{
- %% <<"authing_key">> => true,
- %% <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
- %% <<"last_use">> =>
- %% #{<<"ip">> => <<"1.2.3.4">>,
- %% <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
- %% <<"name">> => <<"hex_core">>,
- %% <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
- %% <<"revoked_at">> => nil,
- %% <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"url">> => <<"https://hex.pm/api/keys/test">>},
- %% }}}
- %% '''
- %% @end
- -spec add(r3_hex_core:config(), binary(), [permission()]) -> r3_hex_api:response().
- add(Config, Name, Permissions) when is_map(Config) and is_binary(Name) and is_list(Permissions) ->
- Path = r3_hex_api:build_organization_path(Config, ["keys"]),
- Params = #{<<"name">> => Name, <<"permissions">> => Permissions},
- r3_hex_api:post(Config, Path, Params).
-
- %% @doc
- %% Deletes an API or repository key.
- %%
- %% Examples:
- %%
- %% ```
- %% > r3_hex_api_key:delete(r3_hex_core:default_config(), <<"test">>).
- %% {ok, {200, ..., #{
- %% <<"authing_key">> => true,
- %% <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
- %% <<"last_use">> =>
- %% #{<<"ip">> => <<"1.2.3.4">>,
- %% <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
- %% <<"name">> => <<"hex_core">>,
- %% <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
- %% <<"revoked_at">> => nil,
- %% <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"url">> => <<"https://hex.pm/api/keys/test">>},
- %% }}}
- %% '''
- %% @end
- -spec delete(r3_hex_core:config(), binary()) -> r3_hex_api:response().
- delete(Config, Name) when is_map(Config) and is_binary(Name) ->
- Path = r3_hex_api:build_organization_path(Config, ["keys", Name]),
- r3_hex_api:delete(Config, Path).
-
- %% @doc
- %% Deletes all API and repository keys associated with the account.
- %%
- %% Examples:
- %%
- %% ```
- %% > r3_hex_api_key:delete_all(r3_hex_core:default_config()).
- %% {ok, {200, ..., [#{
- %% <<"authing_key">> => true,
- %% <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
- %% <<"last_use">> =>
- %% #{<<"ip">> => <<"1.2.3.4">>,
- %% <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
- %% <<"name">> => <<"hex_core">>,
- %% <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
- %% <<"revoked_at">> => nil,
- %% <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
- %% <<"url">> => <<"https://hex.pm/api/keys/test">>},
- %% }]}}
- %% '''
- %% @end
- -spec delete_all(r3_hex_core:config()) -> r3_hex_api:response().
- delete_all(Config) when is_map(Config) ->
- Path = r3_hex_api:build_organization_path(Config, ["keys"]),
- r3_hex_api:delete(Config, Path).
|