defprotocol ExAws.Operation do
@doc """
An operation to perform on AWS
This module defines a protocol for executing operations on AWS. ExAws ships with
several different modules that each implement the ExAws.Operation protocol. These
modules each handle one of the broad categories of AWS service types:
- `ExAws.Operation.JSON`
- `ExAws.Operation.Query`
- `ExAws.Operation.RestQuery`
- `ExAws.Operation.S3`
ExAws works by creating a data structure that implements this protocol, and then
calling `perform/2` on it.
## Example
%ExAws.Operation.JSON{
data: %{},
headers: [
{"x-amz-target", "DynamoDB_20120810.ListTables"},
{"content-type", "application/x-amz-json-1.0"}
], http_method: :post,
params: %{},
path: "/",
service: :dynamodb,
} |> ExAws.Operation.perform(ExAws.Config.new(:dynamodb))
"""
def perform(operation, config)
def stream!(operation, config)
end