UNPKG

@studyportals/sp-hs-misc

Version:

Miscellaneous code used in HouseStark's projects

134 lines (125 loc) 5.54 kB
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; }();