Aura.Packages (Aura v0.9.3)

View Source

Service module for interacting with Hex Packages

๐Ÿ“– Resources

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

add_package_owner(package_name, owner_email, opts \\ [])

@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

โคต๏ธ Returns

โœ… On Success

  :ok

โŒ On Failure

  {:error, (some failure)}

๐Ÿ‘ฉโ€๐Ÿ’ป API Details

MethodPathControllerAction
PUT/packages/:package_name/owners/:owner_emailOwnerController:create
PUT/repos/opts[:repo]/packages/:package_name/owners/:owner_emailOwnerController:create

get_package(name, opts \\ [])

@spec get_package(name :: Aura.Common.package_name(), opts :: list()) ::
  {:ok, Aura.Model.HexPackage.t()} | {:error, any()}

Grabs a package given its name

๐Ÿท๏ธ Params

โคต๏ธ 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

MethodPathControllerAction
GET/packages/:namePackageController:show
GET/repos/opts[:repo]/packages/:namePackageController:show

get_package_owner(package_name, username, opts \\ [])

@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

โคต๏ธ 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

MethodPathControllerAction
GET/packages/:package_name/owners/:usernameOwnerController:show
GET/repos/opts[:repo]/packages/:package_name/owners/:usernameOwnerController:show

list_package_owners(name, opts \\ [])

@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

โคต๏ธ 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

MethodPathControllerAction
GET/packages/:name/ownersOwnerController:index
GET/repos/opts[:repo]/packages/:name/ownersOwnerController:index

remove_package_owner(package_name, owner_email, opts \\ [])

@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

โคต๏ธ Returns

โœ… On Success

  :ok

โŒ On Failure

  {:error, (some failure)}

๐Ÿ‘ฉโ€๐Ÿ’ป API Details

MethodPathControllerAction
DELETE/packages/:package_name/owners/:owner_emailOwnerController:delete
DELETE/repos/opts[:repo]/packages/:package_name/owners/:owner_emailOwnerController:delete

stream_audit_logs(package_name, opts \\ [])

@spec stream_audit_logs(package_name :: Aura.Common.package_name(), opts :: list()) ::
  Enumerable.t()

Streams audit logs, scoped to a package

๐Ÿท๏ธ Params

โคต๏ธ 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

MethodPathControllerAction
GET/packages/:package_name/audit-logsPackageController:audit_logs
GET/repos/opts[:repo]/packages/:package_name/audit-logsPackageController:audit_logs

stream_packages(opts \\ [])

@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

MethodPathControllerAction
GET/packagesPackageController:index
GET/repos/opts[:repo]/packagesPackageController:index