lib/operations/server_statistics.ex

defmodule GitHub.ServerStatistics do
  @moduledoc """
  Provides API endpoint, struct, and type related to server statistics
  """

  @default_client GitHub.Client

  @type t :: %__MODULE__{}

  defstruct []

  @doc false
  @spec __fields__(atom) :: keyword
  def __fields__(type \\ :t)

  def __fields__(:t) do
    []
  end

  @doc """
  Get GitHub Enterprise Server statistics

  ## Options

    * `date_start` (String.t()): A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events after this cursor.
    * `date_end` (String.t()): A cursor, as given in the [Link header](https://docs.github.com/rest/overview/resources-in-the-rest-api#link-header). If specified, the query only searches for events before this cursor.

  ## Resources

    * [API method documentation](https://docs.github.com/rest/reference/enterprise-admin#get-github-enterprise-server-statistics)

  """
  @spec enterprise_admin_get_server_statistics(String.t(), keyword) ::
          {:ok, [map]} | {:error, GitHub.Error.t()}
  def enterprise_admin_get_server_statistics(enterprise_or_org, opts \\ []) do
    client = opts[:client] || @default_client
    query = Keyword.take(opts, [:date_end, :date_start])

    client.request(%{
      url: "/enterprise-installation/#{enterprise_or_org}/server-statistics",
      method: :get,
      query: query,
      response: [{200, {:array, :map}}],
      opts: opts
    })
  end
end