From 1dc3f28d4fe1dbd650c3a996b5b05c26908efe9d Mon Sep 17 00:00:00 2001 From: Stepan Parunashvili Date: Tue, 9 Aug 2016 16:58:44 -0700 Subject: [PATCH] [wit] support for different environments (#71) --- index.js | 5 +++-- lib/config.js | 5 +++++ lib/interactive.js | 33 +++++++++++++++++++++++++++++++++ lib/wit.js | 46 ++++++++-------------------------------------- package.json | 3 ++- 5 files changed, 51 insertions(+), 41 deletions(-) create mode 100644 lib/config.js create mode 100644 lib/interactive.js diff --git a/index.js b/index.js index 4c59a01..2fcc76e 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,5 @@ module.exports = { - log: require('./lib/log.js'), - Wit: require('./lib/wit.js').Wit, + log: require('./lib/log'), + Wit: require('./lib/wit'), + interactive: require('./lib/interactive') } diff --git a/lib/config.js b/lib/config.js new file mode 100644 index 0000000..739c267 --- /dev/null +++ b/lib/config.js @@ -0,0 +1,5 @@ +module.exports = { + DEFAULT_API_VERSION: '20160516', + DEFAULT_MAX_STEPS: 5, + DEFAULT_WIT_URL: 'https://api.wit.ai' +}; diff --git a/lib/interactive.js b/lib/interactive.js new file mode 100644 index 0000000..8e7e49a --- /dev/null +++ b/lib/interactive.js @@ -0,0 +1,33 @@ +const {DEFAULT_MAX_STEPS} = require('./config'); +const logger = require('./log.js'); +const readline = require('readline'); +const uuid = require('node-uuid'); + +module.exports = (wit, initContext, maxSteps) => { + let context = typeof initContext === 'object' ? initContext : {}; + const sessionId = uuid.v1(); + + const steps = maxSteps ? maxSteps : DEFAULT_MAX_STEPS; + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + rl.setPrompt('> '); + const prompt = () => { + rl.prompt(); + rl.write(null, {ctrl: true, name: 'e'}); + }; + prompt(); + rl.on('line', (line) => { + line = line.trim(); + if (!line) { + return prompt(); + } + wit.runActions(sessionId, line, context, steps) + .then((ctx) => { + context = ctx; + prompt(); + }) + .catch(err => console.error(err)) + }); +}; diff --git a/lib/wit.js b/lib/wit.js index d376cdd..370204f 100644 --- a/lib/wit.js +++ b/lib/wit.js @@ -1,13 +1,14 @@ 'use strict'; -const fetch = require('node-fetch'); -const readline = require('readline'); -const uuid = require('node-uuid'); +const { + DEFAULT_API_VERSION, + DEFAULT_MAX_STEPS, + DEFAULT_WIT_URL +} = require('./config'); +const fetch = require('isomorphic-fetch'); const log = require('./log'); +const uuid = require('node-uuid'); -const DEFAULT_API_VERSION = '20160516'; -const DEFAULT_MAX_STEPS = 5; -const DEFAULT_WIT_URL = 'https://api.wit.ai'; const learnMore = 'Learn more at https://wit.ai/docs/quickstart'; function Wit(opts) { @@ -127,35 +128,6 @@ function Wit(opts) { continueRunActions(sessionId, message, context, steps) ); }; - - this.interactive = (initContext, maxSteps) => { - if (!actions) throwMustHaveActions(); - let context = typeof initContext === 'object' ? initContext : {}; - const sessionId = uuid.v1(); - const steps = maxSteps ? maxSteps : DEFAULT_MAX_STEPS; - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); - rl.setPrompt('> '); - const prompt = () => { - rl.prompt(); - rl.write(null, {ctrl: true, name: 'e'}); - }; - prompt(); - rl.on('line', (line) => { - line = line.trim(); - if (!line) { - return prompt(); - } - this.runActions(sessionId, line, context, steps) - .then((ctx) => { - context = ctx; - prompt(); - }) - .catch(logger.error) - }); - }; }; const makeWitResponseHandler = (logger, endpoint) => { @@ -263,6 +235,4 @@ const clone = (obj) => { } }; -module.exports = { - Wit, -}; +module.exports = Wit; diff --git a/package.json b/package.json index 7c70a5e..5ba6c7a 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,11 @@ "repository": "https://github.com/wit-ai/node-wit", "author": "The Wit Team ", "dependencies": { + "isomorphic-fetch": "^2.2.1", "node-fetch": "^1.5.1", "node-uuid": "^1.4.7" }, "engines": { - "node" : ">=4.0.0" + "node": ">=4.0.0" } }