lib/ex_aws/behaviour.ex

defmodule ExAws.Behaviour do
  @moduledoc """
  A behaviour definition for the core operations of ExAws.

  `ExAws` implements this behaviour.
  """

  @doc "See `ExAws.request/2`."
  @callback request(ExAws.Operation.t()) :: {:ok, term} | {:error, term}

  @doc "See `ExAws.request/2`."
  @callback request(ExAws.Operation.t(), Keyword.t()) :: {:ok, term} | {:error, term}

  @doc "See `ExAws.request!/2`."
  @callback request!(ExAws.Operation.t()) :: term | no_return

  @doc "See `ExAws.request!/2`."
  @callback request!(ExAws.Operation.t(), Keyword.t()) :: term | no_return

  @doc "See `ExAws.stream!/2`."
  @callback stream!(ExAws.Operation.t()) :: Enumerable.t()

  @doc "See `ExAws.stream!/2`."
  @callback stream!(ExAws.Operation.t(), Keyword.t()) :: Enumerable.t()
end