|
%% Vendored from hex_core v0.5.0, do not edit manually
|
|
|
|
-module(r3_hex_api_release).
|
|
-export([
|
|
delete/3,
|
|
get/3,
|
|
publish/2,
|
|
retire/4,
|
|
unretire/3
|
|
]).
|
|
|
|
%% @doc
|
|
%% Gets package release.
|
|
%%
|
|
%% Examples:
|
|
%%
|
|
%% ```
|
|
%% > r3_hex_api:get_release(<<"package">>, <<"1.0.0">>, r3_hex_core:default_config()).
|
|
%% {ok, {200, ..., #{
|
|
%% <<"version">> => <<"1.0.0">>,
|
|
%% <<"meta">> => #{
|
|
%% <<"description">> => ...,
|
|
%% <<"licenses">> => ...,
|
|
%% <<"links">> => ...,
|
|
%% <<"maintainers">> => ...
|
|
%% },
|
|
%% ...}}}
|
|
%% '''
|
|
%% @end
|
|
get(Config, Name, Version) when is_binary(Name) and is_binary(Version) and is_map(Config) ->
|
|
Path = r3_hex_api:build_repository_path(Config, ["packages", Name, "releases", Version]),
|
|
r3_hex_api:get(Config, Path).
|
|
|
|
publish(Config, Tarball) when is_binary(Tarball) and is_map(Config) ->
|
|
Path = r3_hex_api:build_repository_path(Config, ["publish"]),
|
|
TarballContentType = "application/octet-stream",
|
|
Config2 = put_header(<<"content-length">>, integer_to_binary(byte_size(Tarball)), Config),
|
|
Body = {TarballContentType, Tarball},
|
|
r3_hex_api:post(Config2, Path, Body).
|
|
|
|
delete(Config, Name, Version) when is_binary(Name) and is_binary(Version) and is_map(Config) ->
|
|
Path = r3_hex_api:build_repository_path(Config, ["packages", Name, "releases", Version]),
|
|
r3_hex_api:delete(Config, Path).
|
|
|
|
retire(Config, Name, Version, Params) when is_binary(Name) and is_binary(Version) and is_map(Config) ->
|
|
Path = r3_hex_api:build_repository_path(Config, ["packages", Name, "releases", Version, "retire"]),
|
|
r3_hex_api:post(Config, Path, Params).
|
|
|
|
unretire(Config, Name, Version) when is_binary(Name) and is_binary(Version) and is_map(Config) ->
|
|
Path = r3_hex_api:build_repository_path(Config, ["packages", Name, "releases", Version, "retire"]),
|
|
r3_hex_api:delete(Config, Path).
|
|
|
|
%%====================================================================
|
|
%% Internal functions
|
|
%%====================================================================
|
|
|
|
put_header(Name, Value, Config) ->
|
|
Headers = maps:get(http_headers, Config, #{}),
|
|
Headers2 = maps:put(Name, Value, Headers),
|
|
maps:put(http_headers, Headers2, Config).
|