]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/helpers/requests.ts
Fix remote image fetching
[github/Chocobozzz/PeerTube.git] / server / helpers / requests.ts
CommitLineData
6b2ef589 1import * as Bluebird from 'bluebird'
0d0e8dd0 2import { createWriteStream } from 'fs'
571389d4 3import * as request from 'request'
da854ddd
C
4import { ACTIVITY_PUB } from '../initializers'
5
7006bc63
C
6function doRequest (
7 requestOptions: request.CoreOptions & request.UriOptions & { activityPub?: boolean }
633868bc 8): Bluebird<{ response: request.RequestResponse, body: any }> {
da854ddd
C
9 if (requestOptions.activityPub === true) {
10 if (!Array.isArray(requestOptions.headers)) requestOptions.headers = {}
11 requestOptions.headers['accept'] = ACTIVITY_PUB.ACCEPT_HEADER
12 }
e4f97bab 13
6b2ef589 14 return new Bluebird<{ response: request.RequestResponse, body: any }>((res, rej) => {
e4f97bab
C
15 request(requestOptions, (err, response, body) => err ? rej(err) : res({ response, body }))
16 })
17}
dac0a531 18
0d0e8dd0 19function doRequestAndSaveToFile (requestOptions: request.CoreOptions & request.UriOptions, destPath: string) {
02988fdc
C
20 return new Bluebird<void>((res, rej) => {
21 const file = createWriteStream(destPath)
22 file.on('finish', () => res())
23
0d0e8dd0 24 request(requestOptions)
0d0e8dd0 25 .on('error', err => rej(err))
02988fdc 26 .pipe(file)
0d0e8dd0
C
27 })
28}
29
9f10b292 30// ---------------------------------------------------------------------------
dac0a531 31
65fcc311 32export {
e4f97bab 33 doRequest,
571389d4 34 doRequestAndSaveToFile
65fcc311 35}