UNPKG

@hypernetlabs/hypernet-id-corporate-integration

Version:
90 lines 3.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HypernetCorporateIntegration = void 0; const stream_1 = require("stream"); const utils_1 = require("@hypernetlabs/utils"); const jwt_decode_1 = __importDefault(require("jwt-decode")); const neverthrow_1 = require("neverthrow"); const configuration_1 = require("./configuration"); class HypernetCorporateIntegration { constructor(corporateId, corporateSecret, config) { this.corporateId = corporateId; this.corporateSecret = corporateSecret; this.config = config; this.apiBaseUrl = configuration_1.defaultApiBaseUrl; this.token = null; this.tokenExpiration = 0; this.ajaxUtils = new utils_1.AxiosAjaxUtils(); if ((config === null || config === void 0 ? void 0 : config.apiBaseUrl) != null) { this.apiBaseUrl = config.apiBaseUrl; } } uploadFileToCollection(collectionId, fileContent, fileName) { return this.setCorporateAuthenticationToken().andThen(() => { return this.getUploadLink(collectionId, fileName) .andThen((url) => { return this.uploadFileToBucket(url, fileContent); }) .map(() => { }); }); } createNFTInCollection(collectionId, metadata, identityId, emailAddress, accountAddress, imageFileName, animationFileName) { return this.setCorporateAuthenticationToken().andThen(() => { const requestUrl = new URL(`${this.apiBaseUrl}/collections/${collectionId}/nfts`); return this.ajaxUtils .post(requestUrl, { metadata, identityId, emailAddress, accountAddress, imageFileName, animationFileName, }) .map((result) => { return result.nftId; }); }); } setCorporateAuthenticationToken() { if (this.getTokenRequired()) { const requestUrl = new URL(`${this.apiBaseUrl}/token`); return this.ajaxUtils .post(requestUrl, { corporateId: this.corporateId, corporateSecret: this.corporateSecret, }) .map((token) => { this.token = token; const decoded = (0, jwt_decode_1.default)(this.token); this.tokenExpiration = decoded.exp; this.ajaxUtils.setDefaultToken(this.token); }); } return (0, neverthrow_1.okAsync)(undefined); } getUploadLink(collectionId, fileName) { const requestUrl = new URL(`${this.apiBaseUrl}/collections/${collectionId}/files/upload?filename=${fileName}`); return this.ajaxUtils.get(requestUrl); } uploadFileToBucket(uploadUrl, fileBuffer) { const requestUrl = new URL(uploadUrl); const stremReadable = stream_1.Readable.from(fileBuffer); return this.ajaxUtils .put(requestUrl, stremReadable, { headers: { "Content-Type": "application/octet-stream", }, }) .map(() => { }); } getTokenRequired() { // tokenExpiration - 10 Minutes < Now return (this.token == null || (this.token != null && this.tokenExpiration - 600000 < Date.now())); } } exports.HypernetCorporateIntegration = HypernetCorporateIntegration; //# sourceMappingURL=HypernetCorporateIntegration.js.map