in lib/aws-signature-v4.js [107:165]
exports.createPresignedURL = function (
method,
host,
path,
service,
payload,
options
) {
options = options || {};
options.key = options.key || process.env.AWS_ACCESS_KEY_ID;
options.secret = options.secret || process.env.AWS_SECRET_ACCESS_KEY;
options.protocol = options.protocol || "https";
options.headers = options.headers || {};
options.timestamp = options.timestamp || Date.now();
options.region = options.region || process.env.AWS_REGION || "us-east-1";
options.expires = options.expires || 86400; // 24 hours
options.headers = options.headers || {};
// host is required
options.headers.Host = host;
var query = options.query ? querystring.parse(options.query) : {};
query["X-Amz-Algorithm"] = "AWS4-HMAC-SHA256";
query["X-Amz-Credential"] =
options.key +
"/" +
exports.createCredentialScope(options.timestamp, options.region, service);
query["X-Amz-Date"] = toTime(options.timestamp);
query["X-Amz-Expires"] = options.expires;
query["X-Amz-SignedHeaders"] = exports.createSignedHeaders(options.headers);
if (options.sessionToken) {
query["X-Amz-Security-Token"] = options.sessionToken;
}
var canonicalRequest = exports.createCanonicalRequest(
method,
path,
query,
options.headers,
payload
);
var stringToSign = exports.createStringToSign(
options.timestamp,
options.region,
service,
canonicalRequest
);
var signature = exports.createSignature(
options.secret,
options.timestamp,
options.region,
service,
stringToSign
);
query["X-Amz-Signature"] = signature;
return (
options.protocol + "://" + host + path + "?" + querystring.stringify(query)
);
};