UNPKG

machinomy

Version:

Micropayments powered by Ethereum

99 lines 3.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const homedir = require("homedir"); const logger_1 = require("@machinomy/logger"); const path = require("path"); const Web3 = require("web3"); const env = require("./env"); const BASE_DIR = '.machinomy'; const CONFIGURATION_FILE = 'config.json'; const DATABASE_FILE = 'storage.db'; exports.VERSION = '0.0.3'; exports.PROTOCOL = 'machinomy/' + exports.VERSION; exports.PAYWALL_PATH = 'api/paywall/' + exports.PROTOCOL; const log = new logger_1.default('configuration'); const CONTRACTS = { development: '0xede26550428812f833ad7a8d1a9019561d243d6c', ropsten: '0xc582877dec917b21fa6b0dc68101b5c01f966325' }; exports.contractAddress = () => { const container = env.container(); const network = container.MACHINOMY_NETWORK || 'ropsten'; const address = container.CONTRACT_ADDRESS; if (address) { return address; } else { return CONTRACTS[network]; } }; exports.baseDirPath = () => { return path.resolve(path.join(homedir(), BASE_DIR)); }; exports.configFilePath = () => { return path.join(exports.baseDirPath(), CONFIGURATION_FILE); }; const databaseFilePath = () => { return 'nedb://' + path.join(exports.baseDirPath(), DATABASE_FILE); }; class Configuration { constructor(options) { this.account = options.account; this.password = options.password; this.databaseUrl = options.databaseUrl || databaseFilePath(); this.path = exports.configFilePath(); } } exports.Configuration = Configuration; /** * @returns {object} */ exports.configurationOptions = () => { try { const fs = require('fs'); return JSON.parse(fs.readFileSync(exports.configFilePath(), 'utf8')); } catch (error) { log.error(error); return {}; } }; exports.sender = () => { try { const options = exports.configurationOptions(); return new Configuration({ account: process.env.MACHINOMY_SENDER_ACCOUNT || options.sender.account, password: process.env.MACHINOMY_SENDER_PASSWORD || options.sender.password, engine: process.env.MACHINOMY_DATABASE_URL || options.sender.databaseUrl }); } catch (error) { return new Configuration({}); } }; exports.receiver = () => { try { const options = exports.configurationOptions(); return new Configuration({ account: process.env.MACHINOMY_RECEIVER_ACCOUNT || options.receiver.account, password: process.env.MACHINOMY_RECEIVER_PASSWORD || options.receiver.password, engine: process.env.MACHINOMY_DATABASE_URL || options.receiver.databaseUrl }); } catch (error) { log.error(error); return new Configuration({}); } }; function currentProvider() { if (typeof web3 !== 'undefined') { // Use Mist/MetaMask's provider return web3.currentProvider; } else { // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail) return new Web3.providers.HttpProvider(process.env.MACHINOMY_GETH_ADDR || 'http://localhost:8545'); } } exports.currentProvider = currentProvider; //# sourceMappingURL=configuration.js.map