import * as plugins from './bobcat.plugins'; import * as interfaces from './interfaces'; /** * maps to an individual bobcat miner */ export class Bobcat { // STATIC public static async createFromNetworkAddress(networkAddressArg: string) { const newBobcat = new Bobcat(networkAddressArg); await newBobcat.gatherMinerDetails(); await newBobcat.checkMinerStatus(); return newBobcat; } // INSTANCE public networkAddress: string; public latestStatus: interfaces.IMinerStatus; public latestMinerDetails: interfaces.IMinerDetailsResponse constructor(networkAddressArg: string) { this.networkAddress = networkAddressArg; } /** * checks the status of the miner */ public async checkMinerStatus() { const response = await plugins.smartrequest.getJson(`http://${this.networkAddress}/status.json`); const body: interfaces.IMinerStatus = response.body; this.latestStatus = body; return this.latestStatus; } /** * gathers the miner details */ public async gatherMinerDetails() { const response = await plugins.smartrequest.getJson(`http://${this.networkAddress}/miner.json`); const body: interfaces.IMinerDetailsResponse = response.body; this.latestMinerDetails = body; return this.latestMinerDetails; } }