UNPKG

ask-cli

Version:

Alexa Skills Kit (ASK) Command Line Interfaces

91 lines (90 loc) 4.18 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCommand = void 0; const abstract_command_1 = require("../../../abstract-command"); const messenger_1 = __importDefault(require("../../../../view/messenger")); const smapi_client_1 = __importDefault(require("../../../../clients/smapi-client")); const option_model_json_1 = __importDefault(require("../../../option-model.json")); const profile_helper_1 = __importDefault(require("../../../../utils/profile-helper")); const helper_1 = __importDefault(require("./helper")); class UploadCatalogCommand extends abstract_command_1.AbstractCommand { name() { return "upload-catalog"; } description() { return "upload a file for the catalog"; } requiredOptions() { return ["catalog-id", "file"]; } optionalOptions() { return ["profile", "debug"]; } async handle(cmd) { let profile; try { profile = profile_helper_1.default.runtimeProfile(cmd.profile); } catch (err) { messenger_1.default.getInstance().error(err); throw err; } const smapiClient = new smapi_client_1.default({ profile, doDebug: cmd.debug, }); try { await _multiPartUploadCatalog(cmd.catalogId, cmd.file, smapiClient); messenger_1.default.getInstance().info("Catalog uploaded successfully."); } catch (err) { console.error(err); process.exit(1); } } } exports.default = UploadCatalogCommand; async function _multiPartUploadCatalog(catalogId, filePath, smapiClient) { const { totalSize, calculatedPartSize, calculatedPartsNumber } = helper_1.default._resolvePartSize(filePath); if (totalSize === 0 || calculatedPartSize === 0 || calculatedPartsNumber === 0) { throw "[Error]: The file to be uploaded cannot be empty."; } return new Promise((resolve, reject) => { helper_1.default._confirmOrOverwritePartSize(totalSize, calculatedPartSize, calculatedPartsNumber, (partSize, partsNumber) => { smapiClient.catalog.createCatalogUpload(catalogId, partsNumber, (createCatalogUploadError, createResponse) => { if (createCatalogUploadError) { return reject(createCatalogUploadError); } if (!createResponse.body) { return process.nextTick(() => { reject("[Error]: The response from create-catalog-upload should not be empty."); }); } const uploadId = createResponse.body.id; if (!uploadId || !createResponse.body.presignedUploadParts) { return reject("[Error]: The response of create-catalog-upload is not valid."); } const uploadPartsMap = helper_1.default._transformUploadArrayToMap(createResponse.body.presignedUploadParts); if (!uploadPartsMap) { return reject("[Error]: The response from create-catalog-upload is empty."); } messenger_1.default.getInstance().info(`Upload (upload-id: ${uploadId}) created successfully. Upload starts...`); helper_1.default._multipartsUploadToPresignedUrls(uploadPartsMap, filePath, totalSize, partSize, partsNumber, (err, partETagsList) => { if (err) { return reject(err); } smapiClient.catalog.completeCatalogUpload(catalogId, uploadId, partETagsList, (completeCatalogUploadError) => { if (completeCatalogUploadError) { return reject(completeCatalogUploadError); } resolve(); }); }); }); }); }); } exports.createCommand = new UploadCatalogCommand(option_model_json_1.default).createCommand();