summaryrefslogtreecommitdiff
path: root/src/r3_hex_core.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/r3_hex_core.erl')
-rw-r--r--src/r3_hex_core.erl92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/r3_hex_core.erl b/src/r3_hex_core.erl
new file mode 100644
index 0000000..84eabe6
--- /dev/null
+++ b/src/r3_hex_core.erl
@@ -0,0 +1,92 @@
+%% Vendored from hex_core v0.5.0, do not edit manually
+
+%% @doc
+%% hex_core entrypoint module.
+%%
+%% ### Config
+%%
+%% Most functions in the hex_core API takes a configuration. The configuration sets things
+%% like HTTP client to use, and API and repository URL. Some of these configuration options
+%% will likely be static for your application and some may change depending on the function
+%% you call.
+%%
+%% ##### Options
+%%
+%% * `api_key' - Authentication key used when accessing the HTTP API.
+%% * `api_organization' - Name of the organization endpoint in the API, this should
+%% for example be set when accessing key for a specific organization.
+%% * `api_repository' - Name of the repository endpoint in the API, this should
+%% for example be set when accessing packages from a specific repository.
+%% * `api_url' - URL to the HTTP API (default: `https://hex.pm/api').
+%% * `http_adapter' - Callback module used for HTTP requests, see [`r3_hex_http'](r3_hex_http.html)
+%% (default: `r3_hex_http_httpc').
+%% * `http_etag' - Sets the `if-none-match' HTTP header with the given value to do a
+%% conditional HTTP request.
+%% * `http_adapter_config' - Configuration to pass to the HTTP adapter.
+%% * `http_user_agent_fragment' - Will be appended to the `user-agent` HTTP header (default: `(httpc)').
+%% * `repo_key' - Authentication key used when accessing the repository.
+%% * `repo_name' - Name of the repository, used for verifying the repository signature
+%% authenticity (default: `hexpm').
+%% * `repo_public_key' - Public key used to verify the repository signature
+%% (defaults to hexpm public key `https://hex.pm/docs/public_keys').
+%% * `repo_url' - URL to the repository (default: `https://repo.hex.pm').
+%% * `repo_organization' - Name of the organization repository, appends `/repos/:name'
+%% to the repository URL and overrides the `repo_name' option.
+%% * `repo_verify' - If `true' will verify the repository signature (default: `true').
+%% * `repo_verify_origin' - If `true' will verify the repository signature origin,
+%% requires protobuf messages as of hex_core v0.4.0 (default: `true').
+
+-module(r3_hex_core).
+-export([default_config/0]).
+
+-export_type([config/0]).
+
+%% https://hex.pm/docs/public_keys
+-define(HEXPM_PUBLIC_KEY, <<"-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB
+Edvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+
+IqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM
+3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW
+XgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ
+J1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4
+0wIDAQAB
+-----END PUBLIC KEY-----">>).
+
+
+-type config() :: #{
+ api_key => binary() | undefined,
+ api_organization => binary() | undefined,
+ api_repository => binary() | undefined,
+ api_url => binary(),
+ http_adapter => module(),
+ http_etag => binary() | undefined,
+ http_adapter_config => map(),
+ http_user_agent_fragment => binary(),
+ repo_key => binary() | undefined,
+ repo_name => binary(),
+ repo_public_key => binary(),
+ repo_url => binary(),
+ repo_organization => binary() | undefined,
+ repo_verify => boolean(),
+ repo_verify_origin => boolean()
+}.
+
+-spec default_config() -> config().
+default_config() ->
+ #{
+ api_key => undefined,
+ api_organization => undefined,
+ api_repository => undefined,
+ api_url => <<"https://hex.pm/api">>,
+ http_adapter => r3_hex_http_httpc,
+ http_adapter_config => #{profile => default},
+ http_etag => undefined,
+ http_user_agent_fragment => <<"(httpc)">>,
+ repo_key => undefined,
+ repo_name => <<"hexpm">>,
+ repo_public_key => ?HEXPM_PUBLIC_KEY,
+ repo_url => <<"https://repo.hex.pm">>,
+ repo_organization => undefined,
+ repo_verify => true,
+ repo_verify_origin => true
+ }.