mx-puppet-bridge
Advanced tools
Comparing version 0.0.10-5 to 0.0.10-6
@@ -5,2 +5,3 @@ import { PuppetBridge } from "./puppetbridge"; | ||
private provisioner; | ||
private fnCollectListeners; | ||
constructor(bridge: PuppetBridge); | ||
@@ -7,0 +8,0 @@ processEvent(event: any): Promise<void>; |
@@ -12,3 +12,6 @@ "use strict"; | ||
const log_1 = require("./log"); | ||
const timedcache_1 = require("./structures/timedcache"); | ||
const escapeHtml = require("escape-html"); | ||
// tslint:disable-next-line:no-magic-numbers | ||
const MESSAGE_COLLECT_TIMEOUT = 1000 * 60; | ||
const log = new log_1.Log("BotProvisioner"); | ||
@@ -19,2 +22,3 @@ class BotProvisioner { | ||
this.provisioner = this.bridge.provisioner; | ||
this.fnCollectListeners = new timedcache_1.TimedCache(MESSAGE_COLLECT_TIMEOUT); | ||
} | ||
@@ -30,6 +34,7 @@ processEvent(event) { | ||
log.info(`Got message to process with arg=${arg}`); | ||
if (this.bridge.hooks.botHeaderMsg) { | ||
const fnCollect = this.fnCollectListeners.get(sender); | ||
if (this.bridge.hooks.botHeaderMsg && !fnCollect) { | ||
yield this.sendMessage(roomId, this.bridge.hooks.botHeaderMsg()); | ||
} | ||
switch (arg) { | ||
switch (fnCollect ? "link" : arg) { | ||
case "link": { | ||
@@ -44,4 +49,16 @@ if (!this.provisioner.canCreate(sender)) { | ||
} | ||
const retData = yield this.bridge.hooks.getDataFromStr(param); | ||
let retData; | ||
if (fnCollect) { | ||
retData = yield fnCollect(event.content.body); | ||
this.fnCollectListeners.delete(sender); | ||
} | ||
else { | ||
retData = yield this.bridge.hooks.getDataFromStr(param); | ||
} | ||
if (!retData.success) { | ||
if (retData.fn) { | ||
yield this.sendMessage(roomId, `${retData.error}`); | ||
this.fnCollectListeners.set(sender, retData.fn); | ||
break; | ||
} | ||
yield this.sendMessage(roomId, `ERROR: ${retData.error}`); | ||
@@ -48,0 +65,0 @@ break; |
@@ -54,2 +54,3 @@ /// <reference types="node" /> | ||
} | ||
export declare type RetDataFn = (line: string) => Promise<IRetData>; | ||
export interface IRetData { | ||
@@ -60,2 +61,3 @@ success: boolean; | ||
userId?: string; | ||
fn?: RetDataFn; | ||
} | ||
@@ -62,0 +64,0 @@ export interface IRetList { |
{ | ||
"name": "mx-puppet-bridge", | ||
"version": "0.0.10-5", | ||
"version": "0.0.10-6", | ||
"description": "Matrix Puppeting Bridge library", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -1,6 +0,10 @@ | ||
import { PuppetBridge } from "./puppetbridge"; | ||
import { PuppetBridge, RetDataFn, IRetData } from "./puppetbridge"; | ||
import { Provisioner } from "./provisioner"; | ||
import { Log } from "./log"; | ||
import { TimedCache } from "./structures/timedcache"; | ||
import * as escapeHtml from "escape-html"; | ||
// tslint:disable-next-line:no-magic-numbers | ||
const MESSAGE_COLLECT_TIMEOUT = 1000 * 60; | ||
const log = new Log("BotProvisioner"); | ||
@@ -10,2 +14,3 @@ | ||
private provisioner: Provisioner; | ||
private fnCollectListeners: TimedCache<string, RetDataFn>; | ||
constructor( | ||
@@ -15,2 +20,3 @@ private bridge: PuppetBridge, | ||
this.provisioner = this.bridge.provisioner; | ||
this.fnCollectListeners = new TimedCache(MESSAGE_COLLECT_TIMEOUT); | ||
} | ||
@@ -26,6 +32,7 @@ | ||
log.info(`Got message to process with arg=${arg}`); | ||
if (this.bridge.hooks.botHeaderMsg) { | ||
const fnCollect = this.fnCollectListeners.get(sender); | ||
if (this.bridge.hooks.botHeaderMsg && !fnCollect) { | ||
await this.sendMessage(roomId, this.bridge.hooks.botHeaderMsg()); | ||
} | ||
switch (arg) { | ||
switch (fnCollect ? "link" : arg) { | ||
case "link": { | ||
@@ -40,4 +47,15 @@ if (!this.provisioner.canCreate(sender)) { | ||
} | ||
const retData = await this.bridge.hooks.getDataFromStr(param); | ||
let retData: IRetData; | ||
if (fnCollect) { | ||
retData = await fnCollect(event.content.body); | ||
this.fnCollectListeners.delete(sender); | ||
} else { | ||
retData = await this.bridge.hooks.getDataFromStr(param); | ||
} | ||
if (!retData.success) { | ||
if (retData.fn) { | ||
await this.sendMessage(roomId, `${retData.error}`); | ||
this.fnCollectListeners.set(sender, retData.fn); | ||
break; | ||
} | ||
await this.sendMessage(roomId, `ERROR: ${retData.error}`); | ||
@@ -44,0 +62,0 @@ break; |
@@ -95,2 +95,4 @@ import * as fs from "fs"; | ||
export type RetDataFn = (line: string) => Promise<IRetData>; | ||
export interface IRetData { | ||
@@ -101,2 +103,3 @@ success: boolean; | ||
userId?: string; | ||
fn?: RetDataFn; | ||
} | ||
@@ -103,0 +106,0 @@ |
284818
7538