UnifiApi.Formatter (UnifiApi v0.4.0)

Copy Markdown View Source

Pretty-prints API responses as colored ANSI tables in iex.

Handles both raw lists and wrapped responses (%{"data" => [...]}).

Examples

{:ok, devices} = UnifiApi.Network.Devices.list(client, site_id)
UnifiApi.Formatter.devices(devices)

{:ok, clients} = UnifiApi.Network.Clients.list(client, site_id)
UnifiApi.Formatter.clients(clients)

Summary

Functions

Shortcut: prints alarms from UnifiApi.Network.Alarms.list/3 as a table with severity colour-coding.

Shortcut: prints anomalies from UnifiApi.Network.Anomalies.list/3.

Shortcut: prints cameras as a pre-configured table.

Shortcut: prints clients as a pre-configured table.

Shortcut: prints live wireless clients from UnifiApi.Network.ClientsLive.list/2.

Prints a single map as a colored key-value detail view.

Shortcut: prints devices as a pre-configured table.

Shortcut: prints events from UnifiApi.Network.Events.list/3 as a table with subsystem colour-coding.

Shortcut: prints networks as a pre-configured table.

Shortcut: prints sites as a pre-configured table.

Prints a list of maps as a colored ANSI table.

Functions

alarms(data)

@spec alarms([map()] | map()) :: :ok

Shortcut: prints alarms from UnifiApi.Network.Alarms.list/3 as a table with severity colour-coding.

anomalies(data)

@spec anomalies([map()] | map()) :: :ok

Shortcut: prints anomalies from UnifiApi.Network.Anomalies.list/3.

cameras(data)

@spec cameras([map()] | map()) :: :ok

Shortcut: prints cameras as a pre-configured table.

Examples

{:ok, cameras} = UnifiApi.Protect.Cameras.list(client)
UnifiApi.Formatter.cameras(cameras)

clients(data)

@spec clients([map()] | map()) :: :ok

Shortcut: prints clients as a pre-configured table.

Examples

{:ok, clients} = UnifiApi.Network.Clients.list(client, site_id)
UnifiApi.Formatter.clients(clients)

clients_live(data)

@spec clients_live([map()] | map()) :: :ok

Shortcut: prints live wireless clients from UnifiApi.Network.ClientsLive.list/2.

detail(data, opts \\ [])

@spec detail(
  map(),
  keyword()
) :: :ok

Prints a single map as a colored key-value detail view.

Handles wrapped responses (%{"data" => %{...}}).

Examples

{:ok, device} = UnifiApi.Network.Devices.get(client, site_id, device_id)
UnifiApi.Formatter.detail(device)

{:ok, nvr} = UnifiApi.Protect.NVR.get(client)
UnifiApi.Formatter.detail(nvr, title: "NVR Info")

devices(data)

@spec devices([map()] | map()) :: :ok

Shortcut: prints devices as a pre-configured table.

Examples

{:ok, devices} = UnifiApi.Network.Devices.list(client, site_id)
UnifiApi.Formatter.devices(devices)

events(data)

@spec events([map()] | map()) :: :ok

Shortcut: prints events from UnifiApi.Network.Events.list/3 as a table with subsystem colour-coding.

Examples

{:ok, events} = UnifiApi.Network.Events.list(authed, "default", within_hours: 1)
UnifiApi.Formatter.events(events)

networks(data)

@spec networks([map()] | map()) :: :ok

Shortcut: prints networks as a pre-configured table.

Examples

{:ok, networks} = UnifiApi.Network.Networks.list(client, site_id)
UnifiApi.Formatter.networks(networks)

sites(data)

@spec sites([map()] | map()) :: :ok

Shortcut: prints sites as a pre-configured table.

Examples

{:ok, sites} = UnifiApi.Network.Sites.list(client)
UnifiApi.Formatter.sites(sites)

table(data, columns, opts \\ [])

@spec table([map()] | map(), [String.t()], keyword()) :: :ok

Prints a list of maps as a colored ANSI table.

Accepts a plain list or a wrapped response (%{"data" => [...]}).

Options

  • :title — optional title printed above the table
  • :colors — map of column names to color atoms (e.g. %{"state" => :state})

Examples

UnifiApi.Formatter.table(devices, ["name", "macAddress", "state"], title: "Devices")

UnifiApi.Formatter.table(clients, ["name", "ipAddress", "type"],
  title: "Connected Clients",
  colors: %{"type" => :type}
)