'use strict';
const randomPuppy = require('random-puppy');
const captionBot = require('captionbot');
const whatDog = require('what-dog');
const Observable = require('rx-lite').Observable;
function observableExample() {
const puppyEmitter = randomPuppy.all('puppies');
const awwEmitter = randomPuppy.all('aww');
const catEmitter = randomPuppy.all('cats');
const puppySource = Observable.fromEvent(puppyEmitter, 'data');
const awwSource = Observable.fromEvent(awwEmitter, 'data');
const catsSource = Observable.fromEvent(catEmitter, 'data');
const sharedSource = Observable
.merge(puppySource, awwSource, catsSource)
.filter(url => url.includes('.jpg'))
.take(10)
.flatMap(url => {
return Promise.all([captionBot(url), whatDog(url)]).then(results => {
return {
url: url,
caption: results[0],
breed: results[1].breed,
about: results[1].about
};
});
}
);
return sharedSource;
}
observableExample().subscribe(data => {
console.log(data);
},
err => console.log(err),
() => console.log('done!'));
//module.exports = observableExample;