@rsksmart/rif-storage-pinning
Version:
Application for providing your storage space to other to use in exchange of RIF Tokens
68 lines (67 loc) • 3.58 kB
JavaScript
;
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.initApp = void 0;
const config_1 = __importDefault(require("config"));
const logger_1 = require("./logger");
const blockchain_events_1 = require("./processor/blockchain-events");
const marketplace_events_1 = require("./processor/marketplace-events");
const providers_1 = require("./providers");
const ipfs_1 = require("./providers/ipfs");
const utils_1 = require("./utils");
const jobs_manager_1 = require("./jobs-manager");
const communication_1 = require("./communication");
const definitions_1 = require("./definitions");
const logger = logger_1.loggingFactory('pinning-service');
function getEventProcessor(offerId, manager, options) {
var _a;
const strategy = (_a = options === null || options === void 0 ? void 0 : options.strategy) !== null && _a !== void 0 ? _a : config_1.default.get('strategy');
switch (strategy) {
case definitions_1.Strategy.Blockchain:
logger.info('Create BlockchainEventsProcessor');
return new blockchain_events_1.BlockchainEventsProcessor(offerId, manager, options);
case definitions_1.Strategy.Marketplace:
logger.info('Create MarketplaceEventsProcessor');
return new marketplace_events_1.MarketplaceEventsProcessor(offerId, manager, options);
default:
logger.info('Create default(BlockchainEventsProcessor)');
return new blockchain_events_1.BlockchainEventsProcessor(offerId, manager, options);
}
}
function initApp(offerId, options) {
return __awaiter(this, void 0, void 0, function* () {
logger.verbose('Current config:', config_1.default);
const jobsOptions = config_1.default.get('jobs');
const jobsManager = new jobs_manager_1.JobsManager(jobsOptions);
// Initialize Communication channel
yield communication_1.start(offerId, options.contractAddress);
// Initialize Provider Manager
const providerManager = new providers_1.ProviderManager();
const ipfs = yield ipfs_1.IpfsProvider.bootstrap(jobsManager, utils_1.duplicateObject(config_1.default.get('ipfs.clientOptions')));
providerManager.register(ipfs);
logger.info('IPFS provider initialized');
// Start listening for events
const eventProcessor = getEventProcessor(offerId, providerManager, options);
yield eventProcessor.initialize();
yield eventProcessor.run();
logger.info('Event processor initialized');
return {
stop: () => __awaiter(this, void 0, void 0, function* () {
yield eventProcessor.stop();
yield communication_1.stop();
})
};
});
}
exports.initApp = initApp;