- requestParams.json['signature'] = {
- host, // Which host we pretend to be
- signature: sign(dataToSign)
- }
- }
+function doRequestAndSaveToFile (
+ requestOptions: request.CoreOptions & request.UriOptions,
+ destPath: string,
+ bodyKBLimit = 10000 // 10MB
+) {
+ if (!requestOptions.headers) requestOptions.headers = {}
+ requestOptions.headers['User-Agent'] = getUserAgent()
+
+ return new Bluebird<void>((res, rej) => {
+ const file = createWriteStream(destPath)
+ file.on('finish', () => res())
+
+ request(requestOptions)
+ .on('data', onRequestDataLengthCheck(bodyKBLimit))
+ .on('error', err => {
+ file.close()
+
+ remove(destPath)
+ .catch(err => logger.error('Cannot remove %s after request failure.', destPath, { err }))
+
+ return rej(err)
+ })
+ .pipe(file)
+ })
+}