diff options
author | Bryan Paxton <39971740+starbelly@users.noreply.github.com> | 2019-03-07 10:54:01 -0600 |
---|---|---|
committer | Tristan Sloughter <t@crashfast.com> | 2019-03-07 09:54:01 -0700 |
commit | 209c02ec57c2cc3207ee0174c3af3675b8dc8f79 (patch) | |
tree | e07b25a27a2c4cc438db75d8d066179b4e57f3f7 /src/r3_hex_api_release.erl | |
parent | 9e2e54afd74104ecb05c55e033803f41932eb940 (diff) |
Fix fetching of private packages from orgs on hex repos (#2020)
- vendor in hex_core at v0.5.0
- Change where repo_name should be the org and not the parent
- Changed rebar_utils:url_append_path/2 to not explicitly add a '?',
this is returned in the Query chunk by http_uri:parse/1 (e.g., "?foo=bar")
- update organization_merging test to expect the sub-repo as the repo_name
- Add tests for rebar_utils:url_append_path/2
- Stop referencing/setting "organization" in config and use new
organization settings (api_repository and repo_organization)
- Do not set (assume) the read key is valid for any/every repo
- Set repo_organization and api_repository to org
- Update tests to check for new config opts
Diffstat (limited to 'src/r3_hex_api_release.erl')
-rw-r--r-- | src/r3_hex_api_release.erl | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/r3_hex_api_release.erl b/src/r3_hex_api_release.erl new file mode 100644 index 0000000..4acda0e --- /dev/null +++ b/src/r3_hex_api_release.erl @@ -0,0 +1,60 @@ +%% 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). |