Cleaning the CLI tool. Small refactorings all around.

If a string is passed to a request configuration its now considered
that request's alias.
This commit is contained in:
David Diaz 2017-11-23 09:42:01 -06:00
parent a8a71caad8
commit 32b9f0f523
7 changed files with 131 additions and 130 deletions

View File

@ -5,6 +5,7 @@ describe('RequestList', () => {
let doc = {
'POST /session': null,
'Not a Request': null,
'GET /post': 'get-posts',
'POST /user': {
alias: 'user',
payload: {
@ -19,7 +20,7 @@ describe('RequestList', () => {
let requests = new RequestList(doc, { HOST: host });
let request = requests.list[0];
expect(requests.list.length).toBe(2);
expect(requests.list.length).toBe(3);
expect(request.VERB).toBe('POST');
expect(request.ENDPOINT).toBe(host + '/session');
});

View File

@ -6,7 +6,7 @@ const yaml = require('js-yaml');
const fs = require('fs');
const { Line, Spinner } = require('clui');
const clc = require('cli-color');
const eyes = require('eyes');
const jsome = require('jsome');
const package = require('../package.json');
@ -58,9 +58,10 @@ if (
if (program.cleanList) {
beau.requests.list.forEach(({ VERB, ALIAS, ENDPOINT, DOCUMENTATION }) => {
if (typeof DOCUMENTATION !== 'undefined') {
let {title, description} = DOCUMENTATION;
console.log(`${VERB}\t${ALIAS}\t${ENDPOINT}\t${title}\t${description}`);
let { title, description } = DOCUMENTATION;
console.log(
`${VERB}\t${ALIAS}\t${ENDPOINT}\t${title}\t${description}`
);
} else {
console.log(`${VERB}\t${ALIAS}\t${ENDPOINT}`);
}
@ -88,14 +89,21 @@ if (program.list) {
}
if (program.cleanRequest) {
beau.requests.execByAlias(program.cleanRequest).then(res => {
let {status, headers, body} = res.response;
let {endpoint} = res.request;
beau.requests
.execByAlias(program.cleanRequest)
.then(res => {
let { status, headers, body } = res.response;
let { endpoint } = res.request;
process.stdout.write(status + '\n');
process.stdout.write(endpoint + '\n');
process.stdout.write(JSON.stringify(headers) + '\n');
process.stdout.write(JSON.stringify(body) + '\n');
console.log(status);
console.log(endpoint);
console.log(JSON.stringify(headers));
console.log(JSON.stringify(body));
})
.catch(err => {
new Line().output();
console.error(err);
process.exit(1);
});
}
@ -131,17 +139,16 @@ if (program.request) {
new Line().output();
let maxLength = +(program.truncate || res.length);
let inspect = eyes.inspector({ maxLength });
if (program.verbose) {
inspect(res);
jsome(res);
} else {
inspect(body);
jsome(body);
}
process.exit(0);
})
.catch(function(err) {
.catch(err => {
new Line().output();
console.error(err);
process.exit(1);

View File

@ -1,6 +1,8 @@
version: 1
host: 'http://jsonplaceholder.typicode.com'
GET /posts/1: get-post
GET /posts/:
alias: posts
documentation:

175
package-lock.json generated
View File

@ -58,8 +58,7 @@
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"ansicolors": {
"version": "0.2.1",
@ -293,8 +292,7 @@
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
},
"callsites": {
"version": "2.0.0",
@ -330,8 +328,7 @@
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg="
},
"ci-info": {
"version": "1.1.1",
@ -422,8 +419,7 @@
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"colors": {
"version": "1.0.3",
@ -520,8 +516,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"deep-extend": {
"version": "0.2.11",
@ -572,8 +567,7 @@
"error-ex": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
"integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
"dev": true
"integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw="
},
"es5-ext": {
"version": "0.10.35",
@ -598,8 +592,7 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"escodegen": {
"version": "1.8.1",
@ -678,11 +671,6 @@
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"eyes": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
"integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
},
"fast-deep-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
@ -721,8 +709,7 @@
"find-up": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8="
},
"for-in": {
"version": "1.0.2",
@ -755,8 +742,7 @@
"get-caller-file": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
"integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
"dev": true
"integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
},
"getpass": {
"version": "0.1.7",
@ -797,8 +783,7 @@
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
},
"growly": {
"version": "1.3.0",
@ -839,8 +824,7 @@
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE="
},
"has-flag": {
"version": "1.0.0",
@ -867,8 +851,7 @@
"hosted-git-info": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
"integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
"dev": true
"integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg=="
},
"html-encoding-sniffer": {
"version": "1.0.1",
@ -912,14 +895,12 @@
"invert-kv": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
"dev": true
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
},
"is-buffer": {
"version": "1.1.5",
@ -930,8 +911,7 @@
"is-builtin-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74="
},
"is-ci": {
"version": "1.0.10",
@ -972,8 +952,7 @@
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs="
},
"is-glob": {
"version": "2.0.1",
@ -1012,8 +991,7 @@
"is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
},
"isarray": {
"version": "1.0.0",
@ -1411,6 +1389,38 @@
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true
},
"jsome": {
"version": "2.3.26",
"resolved": "https://registry.npmjs.org/jsome/-/jsome-2.3.26.tgz",
"integrity": "sha1-jLRDiSTSyd1SlMkK3wPzVBT7PKk=",
"dependencies": {
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
"integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
},
"cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
"integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0="
},
"window-size": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz",
"integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU="
},
"yargs": {
"version": "4.8.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz",
"integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA="
},
"yargs-parser": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz",
"integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ="
}
}
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@ -1470,8 +1480,7 @@
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU="
},
"levn": {
"version": "0.3.0",
@ -1482,8 +1491,7 @@
"load-json-file": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA="
},
"lodash": {
"version": "4.17.4",
@ -1541,8 +1549,7 @@
"lodash.assign": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
"integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
"dev": true
"integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
},
"lodash.clonedeep": {
"version": "3.0.2",
@ -1724,8 +1731,7 @@
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"dev": true
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw=="
},
"normalize-path": {
"version": "2.1.1",
@ -1736,8 +1742,7 @@
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"nwmatcher": {
"version": "1.4.3",
@ -1797,8 +1802,7 @@
"os-locale": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk="
},
"os-tmpdir": {
"version": "1.0.2",
@ -1815,8 +1819,7 @@
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck="
},
"parse5": {
"version": "1.5.1",
@ -1827,8 +1830,7 @@
"path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s="
},
"path-is-absolute": {
"version": "1.0.1",
@ -1845,8 +1847,7 @@
"path-type": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE="
},
"performance-now": {
"version": "2.1.0",
@ -1856,20 +1857,17 @@
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o="
},
"prelude-ls": {
"version": "1.1.2",
@ -1947,14 +1945,12 @@
"read-pkg": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg="
},
"read-pkg-up": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI="
},
"redeyed": {
"version": "1.0.1",
@ -2024,14 +2020,12 @@
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-main-filename": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
},
"requireg": {
"version": "0.1.7",
@ -2084,14 +2078,12 @@
"semver": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
"dev": true
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"shellwords": {
"version": "0.1.1",
@ -2125,20 +2117,17 @@
"spdx-correct": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
"integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
"dev": true
"integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A="
},
"spdx-expression-parse": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
"integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
"dev": true
"integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw="
},
"spdx-license-ids": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
"integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
"dev": true
"integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc="
},
"sprintf-js": {
"version": "1.0.3",
@ -2165,8 +2154,7 @@
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M="
},
"stringstream": {
"version": "0.0.5",
@ -2176,14 +2164,12 @@
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8="
},
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4="
},
"strip-json-comments": {
"version": "0.1.3",
@ -2193,8 +2179,7 @@
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
},
"symbol-tree": {
"version": "3.2.2",
@ -2296,8 +2281,7 @@
"validate-npm-package-license": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
"integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
"dev": true
"integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w="
},
"verror": {
"version": "1.10.0",
@ -2358,8 +2342,7 @@
"which-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
"integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
"dev": true
"integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8="
},
"window-size": {
"version": "0.1.0",
@ -2383,8 +2366,7 @@
"wrap-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU="
},
"wrappy": {
"version": "1.0.2",
@ -2407,8 +2389,7 @@
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
"dev": true
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
},
"yargs": {
"version": "6.6.0",

View File

@ -13,8 +13,8 @@
"cli-color": "^1.1.0",
"clui": "^0.3.1",
"commander": "^2.9.0",
"eyes": "^0.1.8",
"js-yaml": "^3.7.0",
"jsome": "^2.3.26",
"request": "^2.83.0",
"request-promise-native": "^1.0.5",
"requireg": "^0.1.6"

View File

@ -4,7 +4,7 @@ const RequestList = require('./requestList');
const RequestCache = require('./requestCache');
class Request {
constructor(req, list) {
constructor(req) {
let config = {};
this.originalRequest = req;
@ -21,11 +21,13 @@ class Request {
this.PARAMS = PARAMS;
this.ALIAS = ALIAS;
this.DEPENDENCIES = this.findDependencies(req);
this.DOCUMENTATION = DOCUMENTATION;
this.list = list;
if (typeof this.ALIAS === 'undefined') {
console.info(`${REQUEST} is missing an alias.`);
}
this.DEPENDENCIES = this.findDependencies(req);
}
parseRequest(request) {
@ -54,10 +56,10 @@ class Request {
return set;
}
async exec(modifiers = []) {
async exec(modifiers = [], requestList) {
let dependencies = Array.from(this.DEPENDENCIES);
let cache = await this.list.fetchDependencies(dependencies);
let cache = await requestList.fetchDependencies(dependencies);
let settings = {
endpoint: cache.parse(this.ENDPOINT),
@ -103,7 +105,7 @@ class Request {
cache.add(`$${this.ALIAS}`, results);
return results;
} catch({error}) {
} catch({ error }) {
throw new Error(error);
}
}

View File

@ -20,7 +20,7 @@ class RequestList {
}
try {
let response = await request.exec(this.modifiers);
let response = await request.exec(this.modifiers, this);
this.modifiers.forEach(mod => {
if (typeof mod.postResponse !== 'undefined') {
@ -44,18 +44,26 @@ class RequestList {
}
loadRequests(doc) {
let requestKeys = Object.keys(doc).filter(key => {
let requests = Object.keys(doc).filter(key => {
let verb = key.split(' ')[0].toUpperCase();
return httpVerbs.indexOf(verb) > -1;
});
return requestKeys.map(key => {
doc[key] = doc[key] || {};
return requests.map(request => {
let type = typeof doc[request];
doc[key].HOST = this.config.HOST;
doc[key].request = key;
if (type === 'string') {
doc[request] = {
ALIAS: doc[request]
};
}
return new Request(doc[key], this);
doc[request] = doc[request] || {};
doc[request].HOST = this.config.HOST;
doc[request].request = request;
return new Request(doc[request]);
});
}
@ -73,7 +81,7 @@ class RequestList {
settings = plugin[name];
}
return new (requireg(name))(settings)
return new (requireg(name))(settings);
});
}
}