/* Copyright IBM Corp. 2018 */ import { createWriteStream } from 'graceful-fs'; import { OptionsWithUrl } from 'request'; import * as request from 'request'; import { Observable, Observer } from 'rxjs'; const random_ua = require('random-ua'); function _rxGetJson(aSrcUrl: string): Observable { // the options const options: OptionsWithUrl = { url: aSrcUrl, headers: { 'User-Agent': random_ua.generate(), 'Accept': 'application/json' }, json: true }; // handle return Observable.create((aObserver: Observer) => { // assembled data const data = []; // read request(options, (reqError, resp, data) => { if (reqError) { aObserver.error(reqError); } else { aObserver.next(data); aObserver.complete(); } }); }); } function _rxDownloadFile(aSrcUrl: string, aDstFile: string): Observable { // the options const options = { url: aSrcUrl, headers: { 'User-Agent': random_ua.generate() } }; // handle return Observable.create((aObserver: Observer) => { // read request(options) .on('error', (reqError: any) => aObserver.error(reqError)) .pipe(createWriteStream(aDstFile)) .on('error', (unzipError: any) => aObserver.error(unzipError)) .on('close', () => { aObserver.next(aDstFile); aObserver.complete(); }); }); } export { _rxDownloadFile as rxDownloadFile, _rxGetJson as rxGetJson };