@studyportals/sp-hs-misc
Version:
Miscellaneous code used in HouseStark's projects
134 lines (125 loc) • 5.54 kB
JavaScript
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* Signs a SuperAgentRequest using Amazon's AWS Signature Version 4. Make sure that all data
* has been put in the request before calling sign() because this data is used when signing
* the request.
*
* @deprecated Use @studyportals/mb-platform-http-requests
*/
//# sourceMappingURL=aws4-request-signer.class.js.map
var AWS4RequestSigner = function () {
_createClass(AWS4RequestSigner, [{
key: "aws4Sign",
get: function get() {
return aws4.sign;
}
}]);
function AWS4RequestSigner(accessKeyId, secretAccessKey, sessionToken) {
_classCallCheck(this, AWS4RequestSigner);
this.accessKeyId = accessKeyId;
this.secretAccessKey = secretAccessKey;
this.sessionToken = sessionToken;
}
_createClass(AWS4RequestSigner, [{
key: "sign",
value: function sign(request) {
var headers = this.createHeaders(request);
this.appendHeadersToRequest(request, headers);
return request;
}
}, {
key: "getAdditionalRequestOptions",
value: function getAdditionalRequestOptions(request) {
return {};
}
}, {
key: "createHeaders",
value: function createHeaders(request) {
var signedAwsRequest = this.getSignedAwsRequest(request);
return signedAwsRequest.headers;
}
}, {
key: "getSignedAwsRequest",
value: function getSignedAwsRequest(request) {
var requestOptions = this.getRequestOptions(request);
var credentials = this.getCredentials();
return this.aws4Sign(requestOptions, credentials);
}
}, {
key: "getRequestOptions",
value: function getRequestOptions(request) {
var requestUrl = this.getUrlFromRequest(request);
var body = this.getStringifiedBody(request);
return Object.assign({ host: requestUrl.host, method: request.method, path: requestUrl.path, body: body, headers: {
"Content-Type": "application/json"
} }, this.getAdditionalRequestOptions(request));
}
}, {
key: "getUrlFromRequest",
value: function getUrlFromRequest(request) {
// As done in: https://github.com/bdgamble/superagent-aws-signed-request/blob/master/index.js
var requestAsAny = request;
var url = requestAsAny.url;
if (Object.keys(requestAsAny.qs).length) {
var queryString = qs.stringify(requestAsAny.qs);
url = this.appendQueryString(url, queryString);
}
if (requestAsAny.qsRaw.length > 0) {
var _queryString = requestAsAny.qsRaw.join("&");
url = this.appendQueryString(url, _queryString);
}
return URL.parse(url);
}
}, {
key: "getStringifiedBody",
value: function getStringifiedBody(request) {
// As done in: https://github.com/bdgamble/superagent-aws-signed-request/blob/master/index.js
var requestAsAny = request;
var data = requestAsAny._data;
return data ? JSON.stringify(data) : "";
}
}, {
key: "getCredentials",
value: function getCredentials() {
return {
AccessKeyId: this.accessKeyId,
SecretKey: this.secretAccessKey,
SessionToken: this.sessionToken
};
}
}, {
key: "appendHeadersToRequest",
value: function appendHeadersToRequest(request, headers) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = Object.keys(headers)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var key = _step.value;
var value = headers[key];
request.set(key, value);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}, {
key: "appendQueryString",
value: function appendQueryString(url, queryString) {
return url + (url.indexOf('?') >= 0 ? '&' : '?') + queryString;
}
}]);
return AWS4RequestSigner;
}();