import FrontblockApiClient, { FrontblockApiConf } from "./FrontblockApiClient"; import { Plugin, socketioRPC } from "frontblock-generic/Plugin" import { Coin, AccountMap, TransactionMap } from "frontblock-generic/Types"; import * as Logger from 'log4js' Logger.configure({ appenders: { "frontblock-api-client": { type: 'stdout' }, //app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: [ 'frontblock-api-client' ], level: 'debug' } } }) const logger = Logger.getLogger("frontblock-api-client") const kfs = require("key-file-storage").default('kfs') /** * Frontblock admin Plugin for FrontblockApiClient */ export default class FrontblockApiClientPlugin extends FrontblockApiClient implements Plugin{ initConfig(): FrontblockApiConf { return { apiHost: 'api.testnet.frontblock.me', apiPort: 10001 } } exportRPCs(): socketioRPC[] { const quit = async(uid:string) => {return await this.quit(this.apikey, uid) } return [ { name: "subscribe", rpc: async (coin: C, account: AccountMap[C]) => { return await this.subscribe(this.apikey, coin, account)}, type: 'call', visibility: 'private' },{ name: "subsume", rpc: async (coin: C, account: AccountMap[C], callback: (tx: TransactionMap[C]) => void) => { return await this.subsume(this.apikey, coin, account, callback)}, type: 'hook', unhook: quit, visibility: 'private' },{ name: 'unsubscribe', rpc: async(uid:string) => { return await this.unsubscribe(this.apikey, uid) }, type: 'unhook', visibility: 'private' },{ name: 'consume', rpc: async(uid: string, callback: (tx: TransactionMap[C]) => void) => {return await this.consume(this.apikey, uid, callback)}, type: 'hook', unhook: quit, visibility: 'private' },{ name: 'quit', rpc: async(consumerUid:string) => {return await this.quit(this.apikey, consumerUid)}, type: 'call', visibility: 'private' } ] } start(): void { this.connect() } stop(): void { this.disconnect() } }