1 | 'use strict';
|
2 |
|
3 | var fs = require('fs');
|
4 | var spawnSync = require('child_process').spawnSync || require('spawn-sync');
|
5 | var HttpResponse = require('http-response-object');
|
6 | require('concat-stream');
|
7 | require('then-request');
|
8 | var JSON = require('./lib/json-buffer');
|
9 |
|
10 | Function('', fs.readFileSync(require.resolve('./lib/worker.js'), 'utf8'));
|
11 |
|
12 | module.exports = doRequest;
|
13 | function doRequest(method, url, options) {
|
14 | var req = JSON.stringify({
|
15 | method: method,
|
16 | url: url,
|
17 | options: options
|
18 | });
|
19 | var res = spawnSync('node', [require.resolve('./lib/worker.js')], {input: req});
|
20 | if (res.status !== 0) {
|
21 | process.stderr.write(res.stderr);
|
22 | process.exit(res.status);
|
23 | }
|
24 | if (res.error) {
|
25 | throw res.err;
|
26 | }
|
27 | var response = JSON.parse(res.stdout);
|
28 | if (response.success) {
|
29 | return new HttpResponse(response.response.statusCode, response.response.headers, response.response.body);
|
30 | } else {
|
31 | throw new Error(response.error.message || response.error || response);
|
32 | }
|
33 | }
|