UNPKG

@bioneisme/greenfield-cli

Version:
104 lines (103 loc) 4.75 kB
"use strict"; 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.putObject = void 0; const sdk_1 = require("../../utils/sdk"); const fs_1 = __importDefault(require("fs")); const config_1 = require("../../utils/config"); const parse_1 = require("../../helpers/parse"); const password_1 = require("../../helpers/password"); // Create an object with the required properties function putObject(url, visibility, localFilepath) { return __awaiter(this, void 0, void 0, function* () { try { const publicKey = String(config_1.config.get("publicKey")); if (!publicKey || publicKey === "undefined") { console.error("public key is required. Please set it in the system config"); return; } const address = String(config_1.config.get("spAddress")); if (!address || address === "undefined") { console.error("storage provider address is required. Please set it in the system config"); return; } console.log(`bucketName=${url} visibility=${visibility} , filepath=${localFilepath}`); // @ts-ignore const [bucketName, filePath] = (0, parse_1.parseBucketAndObject)(url); let visibilityType; switch (visibility) { case "public-read": visibilityType = "VISIBILITY_TYPE_PUBLIC_READ"; break; case "unspecified": visibilityType = "VISIBILITY_TYPE_UNSPECIFIED"; break; case "private": visibilityType = "VISIBILITY_TYPE_PRIVATE"; break; default: // eslint-disable-next-line @typescript-eslint/no-unused-vars visibilityType = "UNRECOGNIZED"; break; } const fileData = yield fs_1.default.promises.readFile(localFilepath); const file = new Blob([fileData], { type: "text/xml" }); const sp = yield sdk_1.GreenfieldClient.client.sp.getStorageProviderInfo(address); if (sp == null) { console.log("SP not found"); return; } const spInfo = { endpoint: sp.endpoint, secondarySpAddresses: [ sp.gcAddress, sp.approvalAddress, sp.operatorAddress, ], sealAddress: sp.sealAddress, primarySpAddress: sp.fundingAddress, }; const msg = { bucketName: bucketName, objectName: "file", creator: publicKey, visibility: visibilityType, redundancyType: "REDUNDANCY_EC_TYPE", file: file, expectSecondarySpAddresses: [], spInfo: spInfo, }; const obj = yield sdk_1.GreenfieldClient.client.object.createObject(msg); const simulateInfo = yield obj .simulate({ denom: "BNB", }) .catch(() => { }); const privateKey = yield (0, password_1.getPrivateKey)(); const broadcast = yield obj.broadcast({ denom: "BNB", gasLimit: Number((simulateInfo === null || simulateInfo === void 0 ? void 0 : simulateInfo.gasLimit) || 2400), gasPrice: (simulateInfo === null || simulateInfo === void 0 ? void 0 : simulateInfo.gasPrice) || "5000000000000", payer: publicKey, granter: "", privateKey: String("0x" + privateKey), }); console.log(broadcast); } catch (e) { console.error(`putting object failed: ${e}`); } }); } exports.putObject = putObject;