View Source AlibabaCloudKit.Signature.DirectMail (alibaba_cloud_kit v1.1.1)

An implementation for DirectMail signature.

I don't know the exact name of this type of signature, so let's call it DirectMail for now.

This type of signature is used by:

  • Direct Mail (DM)

Read more at:

Summary

Functions

Signs a request.

Types

@type access_key_id() :: String.t()
@type access_key_secret() :: String.t()
@type at() :: DateTime.t() | nil
@type sign_opt() ::
  {:access_key_id, access_key_id()}
  | {:access_key_secret, access_key_secret()}
  | {:at, at()}
@type sign_opts() :: [sign_opt()]

Functions

Signs a request.

Automatically added params

Following params will be added to the request automatically:

  • AccessKeyId
  • SignatureMethod
  • SignatureVersion
  • SignatureNonce
  • Signature
  • Timestamp

For GET requests, they will be added to query. For POST requests, they will be added to body.

Examples

Build and sign a GET request

params = %{
  "Format" => "JSON",
  "Version" => "2015-11-23",
  "Action" => "SingleSendMail",
  "AccountName" => "admin@alibabacloudkit.com",
  "AddressType" => "1",
  "ReplyToAddress" => "false",
  "FromAlias" => "AlibabaCloudKit Group",
  "Subject" => "Announcement of AlibabaCloudKit",
  "ToAddress" => "test@user.com",
  "TextBody" => "This is the email send by AlibabaCloudKit."
}

opts = [
  access_key_id: "access_key_id",
  access_key_secret: "access_key_secret"
]

HTTPSpec.Request.new!(
  method: :get,
  scheme: :https,
  host: "dm.aliyuncs.com",
  port: 443,
  path: "/",
  query: URI.encode_query(params, :rfc3986)
)
|> AlibabaCloudKit.Signature.DirectMail.sign!(opts)

Build and sign a POST request

params = %{
  "Format" => "JSON",
  "Version" => "2015-11-23",
  "Action" => "SingleSendMail",
  "AccountName" => "admin@alibabacloudkit.com",
  "AddressType" => "1",
  "ReplyToAddress" => "false",
  "FromAlias" => "AlibabaCloudKit Group",
  "Subject" => "Announcement of AlibabaCloudKit",
  "ToAddress" => "test@user.com",
  "TextBody" => "This is the email send by AlibabaCloudKit."
}

opts = [
  access_key_id: "access_key_id",
  access_key_secret: "access_key_secret"
]

HTTPSpec.Request.new!(
  method: :post,
  scheme: :https,
  host: "dm.aliyuncs.com",
  port: 443,
  path: "/",
  headers: [
    {"content-type", "application/x-www-form-urlencoded"}
  ],
  body: URI.encode_query(params, :www_form)
)
|> AlibabaCloudKit.Signature.DirectMail.sign!(opts)