/
index.js
111 lines (93 loc) · 3.04 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
var _ = require('lodash'),
runtime = require('postman-runtime'),
sdk = require('postman-collection'),
colors = require('colors/safe'),
format = require('util').format,
util = require('../util'),
cliUtils = require('../reporters/cli/cli-utils'),
print = require('../print'),
Table = require('cli-table3');
// sets theme for colors for console logging
colors.setTheme({
log: 'grey',
info: 'cyan',
warn: 'yellow',
debug: 'blue',
error: 'red'
});
module.exports = function (options, callback) {
var runner = new runtime.Runner(),
userRequest,
collection;
options = _.defaults(options, {
method: 'get',
url: undefined,
timeout: undefined,
ignoreRedirects: false
});
userRequest = {
method: options.method,
url: options.url,
header: options.header
};
collection = new sdk.Collection({
item: {
request: userRequest
}
});
runner.run(collection, {
timeout: {
global: options.timeout
},
certificates: options.sslClientCert && new sdk.CertificateList({}, [{
name: 'client-cert',
matches: [sdk.UrlMatchPattern.MATCH_ALL_URLS],
key: { src: options.sslClientKey },
cert: { src: options.sslClientCert },
passphrase: options.sslClientPassphrase
}]),
requester: {
followRedirects: _.has(options, 'ignoreRedirects') ? !options.ignoreRedirects : undefined,
strictSSL: _.has(options, 'insecure') ? !options.insecure : undefined
}
}, {
done: (err, run) => {
if (err) { return callback(err); }
run.start({
start: function () {
print(colors.reset(''));
},
beforeRequest: function (err, cur, req) {
if (err) { return console.error(err.message); }
if (req) {
print('%s %s', req.method, req.url.toString(true));
}
print().wait(colors.gray);
},
response: function (err, cur, res) {
print('\n');
if (err) { return console.error(err.message); }
if (!res) { return; }
if (res.headers.count()) {
print('response headers:\n');
res.headers.each((header) => {
console.log([header.key, header.value]);
});
}
print('\nresponse body:\n');
try {
console.dir(res.json());
}
catch (e) {
print(res.text());
}
},
done: (err) => {
print.unwait();
print('\n');
callback(err);
}
});
}
});
};