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
@spec sign!(HTTPSpec.Request.t(), sign_opts()) :: HTTPSpec.Request.t()
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)