]>
Commit | Line | Data |
---|---|---|
1 | import * as Bluebird from 'bluebird' | |
2 | import { createWriteStream } from 'fs' | |
3 | import * as request from 'request' | |
4 | import { ACTIVITY_PUB } from '../initializers' | |
5 | ||
6 | function doRequest ( | |
7 | requestOptions: request.CoreOptions & request.UriOptions & { activityPub?: boolean } | |
8 | ): Bluebird<{ response: request.RequestResponse, body: any }> { | |
9 | if (requestOptions.activityPub === true) { | |
10 | if (!Array.isArray(requestOptions.headers)) requestOptions.headers = {} | |
11 | requestOptions.headers['accept'] = ACTIVITY_PUB.ACCEPT_HEADER | |
12 | } | |
13 | ||
14 | return new Bluebird<{ response: request.RequestResponse, body: any }>((res, rej) => { | |
15 | request(requestOptions, (err, response, body) => err ? rej(err) : res({ response, body })) | |
16 | }) | |
17 | } | |
18 | ||
19 | function doRequestAndSaveToFile (requestOptions: request.CoreOptions & request.UriOptions, destPath: string) { | |
20 | return new Bluebird<void>((res, rej) => { | |
21 | const file = createWriteStream(destPath) | |
22 | file.on('finish', () => res()) | |
23 | ||
24 | request(requestOptions) | |
25 | .on('error', err => rej(err)) | |
26 | .pipe(file) | |
27 | }) | |
28 | } | |
29 | ||
30 | // --------------------------------------------------------------------------- | |
31 | ||
32 | export { | |
33 | doRequest, | |
34 | doRequestAndSaveToFile | |
35 | } |