Feature/8 return a promise #5

Merged
Vylpes merged 7 commits from feature/8-return-a-promise into develop 2021-04-12 20:22:57 +01:00
Showing only changes of commit 58f4e629d8 - Show all commits

View file

@ -58,10 +58,64 @@ function randomBunny(subreddit, sortBy, cb) {
}); });
} }
function promise(subreddit, sortBy) {
return new Promise((resolve, reject) => {
// If the sortable list doesn't include sortBy, default to 'hot'
if (!sortable.includes(sortBy)) sortBy = 'hot';
// Fetch the json from reddit
// For example, if you're getting a random image from r/rabbits, sorted by new:
// https://www.reddit.com/r/rabbits/new.json
fetch(`https://www.reddit.com/r/${subreddit}/${sortBy}.json`).then(res => {
res.json().then(res => {
// Get the part of the json string which the data comes from
const data = res.data.children;
const size = data.length;
// Found is used for the while loop in order to break out of the loop.
// We need to loop as the json string will contain invalid data for what we need
// Specifically videos.
let found = false;
// Loop until a valid image post is found
while (!found) {
// Generate random number
const random = getRandom(0, size - 1);
// Get variables from json to pass back
const randomSelect = data[random].data;
// The json string to send back
const json = {
archived: randomSelect['archived'],
downs: randomSelect['downs'],
hidden: randomSelect['hidden'],
permalink: randomSelect['permalink'],
subreddit: randomSelect['subreddit'],
subredditSubscribers: randomSelect['subreddit_subscribers'],
title: randomSelect['title'],
hound[bot] commented 2021-04-12 20:17:55 +01:00 (Migrated from github.com)
Review

Unexpected trailing comma comma-dangle

Unexpected trailing comma comma-dangle
ups: randomSelect['ups'],
url: randomSelect['url']
};
// If the post is a .jpg, send back the data and stop looping
if (json.url.includes('.jpg')) {
found = true;
resolve(json);
}
}
});
});
})
}
// Generate a random number // Generate a random number
function getRandom(min, max) { function getRandom(min, max) {
return Math.floor((Math.random() * max) + min); return Math.floor((Math.random() * max) + min);
} }
// Export Functions // Export Functions
module.exports = randomBunny; module.exports = {
randomBunny,
promise,
}