ExStorageServiceSdk.Transport behaviour (ex_storage_service_sdk v0.7.1)

Copy Markdown View Source

HTTP transport contract used by ExStorageServiceSdk.S3.Client.

The default, ExStorageServiceSdk.Transport.HTTPFetch, is built on http_fetch. A replacement must return ExStorageServiceSdk.S3.Response structs whose :body is either a binary or a stream process consumed through consume/4, and must report failures as {:error, %ExStorageServiceSdk.Error{category: :transport}}.

Summary

Callbacks

close(response)

@callback close(response :: ExStorageServiceSdk.S3.Response.t()) :: :ok

consume(response, acc, reducer, opts)

@callback consume(
  response :: ExStorageServiceSdk.S3.Response.t(),
  acc :: term(),
  reducer :: (binary(), term() ->
                {:ok, term()} | {:error, ExStorageServiceSdk.Error.t()}),
  opts :: keyword()
) :: {:ok, term(), map()} | {:error, ExStorageServiceSdk.Error.t()}

request(url, request, opts)

@callback request(
  url :: String.t(),
  request :: ExStorageServiceSdk.S3.Request.t(),
  opts :: keyword()
) ::
  {:ok, ExStorageServiceSdk.S3.Response.t()}
  | {:error, ExStorageServiceSdk.Error.t()}