lib/ex_aws/behaviour.ex

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

  @callback request(ExAws.Operation.t()) :: {:ok, term} | {:error, term}
  @callback request(ExAws.Operation.t(), Keyword.t()) :: {:ok, term} | {:error, term}

  @callback request!(ExAws.Operation.t()) :: term | no_return
  @callback request!(ExAws.Operation.t(), Keyword.t()) :: term | no_return

  @callback stream!(ExAws.Operation.t()) :: Enumerable.t()
  @callback stream!(ExAws.Operation.t(), Keyword.t()) :: Enumerable.t()
end