UNPKG

@signiant/media-shuttle-sdk

Version:

The SDK for supporting file transfer to and from Media Shuttle

212 lines (211 loc) 11.1 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; import { signiant_private } from '@signiant/media-shuttle-sdk-base'; import RefreshingCredentials from './RefreshingCredentials'; import RequestHeaders from '../../internal/services/RequestHeaders'; import SDK_VERSION from '../../internal/constants/version'; import urlConstants from '../../internal/constants/urlConstants'; /** * This credentials class allow the user to use the SDK by providing * username and password as authentication parameters. */ var LoginCredentials = /** @class */ (function () { /** * Constructor of the class * @param {object} credentials including the login details * @param {string} credentials.username user email of a user that belongs to a Signiant Account * @param {string} credentials.password user password */ function LoginCredentials(_a) { var username = _a.username, password = _a.password; this._username = username; this._password = password; this._baseUrl = urlConstants.PROD_PLATFORM_API_ENDPOINT; } /** * Requests the authentication token, the first time a login request is done, * after that if a valid refresh token is available we use it to get a new token. * @returns {string} valid token to make requests to the Platform API */ LoginCredentials.prototype.getAuthToken = function () { return __awaiter(this, void 0, void 0, function () { var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: if (!!this._credentials) return [3 /*break*/, 2]; _a = this; return [4 /*yield*/, this.login()]; case 1: _a._credentials = _b.sent(); return [2 /*return*/, this._credentials._token]; case 2: return [2 /*return*/, this._credentials.getAuthToken()]; } }); }); }; /** * Should make a call to the Platform API to login the user. * @returns {RefreshingCredentials} */ LoginCredentials.prototype.login = function () { return __awaiter(this, void 0, void 0, function () { var options, response; var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: options = { url: "".concat(this._baseUrl, "/v1/login"), body: { username: this._username, password: this._password, }, headers: (_a = {}, _a['Content-Type'] = 'application/json', _a[RequestHeaders.SIGNIANT_MEDIA_SHUTTLE_SDK_VERSION_HEADER] = "".concat(SDK_VERSION), _a), }; return [4 /*yield*/, signiant_private.request.post(options)]; case 1: response = _b.sent(); return [2 /*return*/, RefreshingCredentials.fromAuthenticationResponse(response)]; } }); }); }; Object.defineProperty(LoginCredentials.prototype, "baseUrl", { /** * @hidden * Sets the base url to be used when requesting tokens. * @param {string} url base url of the Platform API */ set: function (url) { if (!url) { url = urlConstants.PROD_PLATFORM_API_ENDPOINT; } this._baseUrl = url; }, enumerable: false, configurable: true }); /** * Requests an MFA verification code the user can redeem as part of Platform MFA verification. * @param {MfaRequest} requestObject - Request Object | Include the required parameters in order to initiate MFA verification * @param {string} requestObject.accountId - **accountId**: Identifier of the Signiant account requiring MFA verification */ LoginCredentials.prototype.initiateMfa = function (_a) { var accountId = _a.accountId; return __awaiter(this, void 0, void 0, function () { var authToken, options; var _b; return __generator(this, function (_c) { switch (_c.label) { case 0: if (!this._credentials) { throw new signiant_private.HttpError('You must provide authentication credentials and request authentication token before requesting MFA code', 401, 'credentials.invalid'); } return [4 /*yield*/, this._credentials.getAuthToken()]; case 1: authToken = _c.sent(); options = { url: "".concat(this._baseUrl, "/v1/authentication/mfaRequest"), headers: (_b = { Authorization: "Bearer ".concat(authToken) }, _b['Content-Type'] = 'application/json', _b[RequestHeaders.SIGNIANT_MEDIA_SHUTTLE_SDK_VERSION_HEADER] = "".concat(SDK_VERSION), _b[RequestHeaders.SIGNIANT_ACCOUNT_ID_HEADER] = "".concat(accountId), _b), }; return [4 /*yield*/, signiant_private.request.post(options)]; case 2: _c.sent(); return [2 /*return*/]; } }); }); }; /** * Redeems an MFA verification code as part of Platform MFA verification to get new MFA verified token * @param {RedeemMfaRequest} requestObject - Request Object | Include the required parameters in order to redeem an MFA token * @param {string} requestObject.accountId - **accountId**: Identifier of the Signiant account requiring MFA verification * @param {string} requestObject.verificationCode - **verificationCode**: verification code to redeem as part of Platform MFA verification * @returns {string} valid token to make requests to the Platform API for MFA protected account resources */ LoginCredentials.prototype.redeemMfa = function (_a) { var accountId = _a.accountId, verificationCode = _a.verificationCode; return __awaiter(this, void 0, void 0, function () { var authToken, options, response; var _b; return __generator(this, function (_c) { switch (_c.label) { case 0: if (!this._credentials) { throw new signiant_private.HttpError('You must provide authentication credentials and request authentication token before redeeming MFA code', 401, 'credentials.invalid'); } return [4 /*yield*/, this._credentials.getAuthToken()]; case 1: authToken = _c.sent(); options = { url: "".concat(this._baseUrl, "/v1/authentication/mfa"), body: { mfaToken: verificationCode, }, headers: (_b = { Authorization: "Bearer ".concat(authToken) }, _b['Content-Type'] = 'application/json', _b[RequestHeaders.SIGNIANT_MEDIA_SHUTTLE_SDK_VERSION_HEADER] = "".concat(SDK_VERSION), _b[RequestHeaders.SIGNIANT_ACCOUNT_ID_HEADER] = "".concat(accountId), _b), }; return [4 /*yield*/, signiant_private.request.post(options)]; case 2: response = _c.sent(); this._credentials = RefreshingCredentials.fromAuthenticationResponse(response); return [2 /*return*/, this._credentials._token]; } }); }); }; LoginCredentials.prototype.logout = function () { return this._credentials.logout(); }; return LoginCredentials; }()); export default LoginCredentials;