Aura.Packages (Aura v0.9.3)
View SourceService module for interacting with Hex Packages
๐ Resources
- ๐ Hex
- ๐ Hex API Specifications
- ๐พ hexpm/hex_core
- ๐พ hexpm/hexpm
- ๐ฌ Contact the maintainer (he's happy to help!)
Summary
Functions
Adds a new owner to the list of package owners
Grabs a package given its name
Grabs a single package owner by their username
Grabs all owners of a given package
Removes an existing owner from the list of package owners
Streams audit logs, scoped to a package
Grabs a stream of packages, given optional criteria
Functions
@spec add_package_owner( package_name :: Aura.Common.package_name(), owner_email :: Aura.Common.email(), opts :: list() ) :: :ok | {:error, any()}
Adds a new owner to the list of package owners
๐ท๏ธ Params
- package_name ::
Aura.Common.package_name/0
- owner_email ::
Aura.Common.email/0
- opts.transfer ::
- opts.level ::
โคต๏ธ Returns
โ On Success
:ok
โ On Failure
{:error, (some failure)}
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
PUT | /packages/:package_name/owners/:owner_email | OwnerController | :create |
PUT | /repos/opts[:repo] /packages/:package_name/owners/:owner_email | OwnerController | :create |
@spec get_package(name :: Aura.Common.package_name(), opts :: list()) :: {:ok, Aura.Model.HexPackage.t()} | {:error, any()}
Grabs a package given its name
๐ท๏ธ Params
- opts :: option parameters used to modify requests
- package_name ::
Aura.Common.package_name/0
โคต๏ธ Returns
โ On Success
{:ok, %HexPackage{}}
โ On Failure
{:error, (some failure)}
๐ป Examples
iex> alias Aura.Packages
iex> {:ok, pkg} = Packages.get_package("decimal", repo_url: "http://localhost:4000/api")
iex> pkg.name
"decimal"
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
GET | /packages/:name | PackageController | :show |
GET | /repos/opts[:repo] /packages/:name | PackageController | :show |
@spec get_package_owner( package_name :: Aura.Common.package_name(), username :: Aura.Common.username(), opts :: list() ) :: {:ok, Aura.Model.HexPackageOwner.t()} | {:error, any()}
Grabs a single package owner by their username
๐ท๏ธ Params
- opts :: option parameters used to modify requests
- package_name ::
Aura.Common.package_name/0
- username ::
Aura.Common.username/0
โคต๏ธ Returns
โ On Success
{:ok, %HexPackageOwner{}}
โ On Failure
{:error, (some failure)}
๐ป Examples
iex> alias Aura.Packages
iex> {:ok, owner} = Packages.get_package_owner("decimal", "eric", repo_url: "http://localhost:4000/api")
iex> owner.email
"eric@example.com"
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
GET | /packages/:package_name/owners/:username | OwnerController | :show |
GET | /repos/opts[:repo] /packages/:package_name/owners/:username | OwnerController | :show |
@spec list_package_owners(name :: Aura.Common.package_name(), opts :: list()) :: {:ok, [Aura.Model.HexPackageOwner.t()]} | {:error, any()}
Grabs all owners of a given package
๐ท๏ธ Params
- name ::
Aura.Common.package_name/0
- opts :: option parameters used to modify requests
โคต๏ธ Returns
โ On Success
{:ok, [%HexPackageOwner{}...]}
โ On Failure
{:error, (some failure)}
๐ป Examples
iex> alias Aura.Packages
iex> {:ok, [owner | _]} =
...> Packages.list_package_owners("decimal", repo_url: "http://localhost:4000/api")
iex> owner.email
"eric@example.com"
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
GET | /packages/:name/owners | OwnerController | :index |
GET | /repos/opts[:repo] /packages/:name/owners | OwnerController | :index |
@spec remove_package_owner( package_name :: Aura.Common.package_name(), owner_email :: Aura.Common.email(), opts :: list() ) :: :ok | {:error, any()}
Removes an existing owner from the list of package owners
๐ท๏ธ Params
- package_name ::
Aura.Common.package_name/0
- opts.repo ::
Aura.Common.repo_name/0
- owner_email ::
Aura.Common.email/0
โคต๏ธ Returns
โ On Success
:ok
โ On Failure
{:error, (some failure)}
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
DELETE | /packages/:package_name/owners/:owner_email | OwnerController | :delete |
DELETE | /repos/opts[:repo] /packages/:package_name/owners/:owner_email | OwnerController | :delete |
@spec stream_audit_logs(package_name :: Aura.Common.package_name(), opts :: list()) :: Enumerable.t()
Streams audit logs, scoped to a package
๐ท๏ธ Params
- package_name ::
Aura.Common.package_name/0
- opts.page :: page number to start from (each page is 100 items)
- opts.repo ::
Aura.Common.repo_name/0
โคต๏ธ Returns
โ On Success
Stream.resource/3
๐ป Examples
iex> alias Aura.Packages
iex> audit_logs = Packages.stream_audit_logs("decimal", repo_url: "http://localhost:4000/api")
iex> _actions = Enum.map(audit_logs, fn audit_log -> audit_log.action end)
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
GET | /packages/:package_name/audit-logs | PackageController | :audit_logs |
GET | /repos/opts[:repo] /packages/:package_name/audit-logs | PackageController | :audit_logs |
@spec stream_packages(opts :: list()) :: Enumerable.t()
Grabs a stream of packages, given optional criteria
๐ท๏ธ Params
- opts.page :: page to start streaming from (default:
1
) - opts.repo ::
Aura.Common.repo_name/0
- opts.per_page :: number of results per page number (default:
1000
) - opts.sort :: sorting criteria (
:name
:recent_downloads
:total_downloads
:inserted_at
:updated_at
) - opts.search :: search term
โคต๏ธ Returns
โ On Success
Stream.resource/3
๐ป Examples
# request packages,
# from the local test instance
# scoped to the repo "hexpm"
# starting with page 2
# sorted by total downloads
iex> alias Aura.Packages
iex> packages = Packages.stream_packages(
...> repo_url: "http://localhost:4000/api",
...> repo: "hexpm",
...> page: 2,
...> sort: :total_downloads)
iex> Enum.empty?(packages)
false
๐ฉโ๐ป API Details
Method | Path | Controller | Action |
---|---|---|---|
GET | /packages | PackageController | :index |
GET | /repos/opts[:repo] /packages | PackageController | :index |