defmodule Hikvision do @moduledoc File.read!("README.md") use Application alias Hikvision.Config @type error :: {:error, :unauthorized} | {:error, :server_error} | {:error, map()} @type success :: {:ok, map()} @doc """ Send a request to the Hikvision device """ @spec request(term(), Keyword.t()) :: success() | error() def request(operation, config \\ []), do: Hikvision.Operation.perform(operation, Config.new(config)) @impl Application def start(_type, _args) do children = [ {Hikvision.Auth, []} ] Supervisor.start_link(children, strategy: :one_for_one, name: Hikvision.Supervisor) end end