convert processMoreComments to use async function

This commit is contained in:
teddit 2021-09-09 18:19:27 +02:00
parent 4cc8dd7bd5
commit 813fb3566c

View File

@ -1,54 +1,56 @@
module.exports = function() { const config = require('../config');
const config = require('../config') const { redisAsync } = require('./redis');
this.moreComments = (fetch, redis, post_url, comment_ids, id) => {
return new Promise(resolve => { async function moreComments(fetch, redis, post_url, comment_ids, id) {
(async () => { if (post_url) {
let key = `${post_url}:morechildren:comment_ids:${comment_ids}` let key = `${post_url}:morechildren:comment_ids:${comment_ids}`
redis.get(key, (error, json) => { redis.get(key, (error, json) => {
if(error) { if (error) {
console.error(`Error getting the ${key} key from redis (moreComments()).`, error) console.error(`Error getting the ${key} key from redis (moreComments()).`, error)
resolve(false) return null;
} }
if(json) { if (json) {
json = JSON.parse(json) json = JSON.parse(json)
resolve(json) return json;
} else { } else {
let url = `https://oauth.reddit.com/api/morechildren?api_type=json&children=${comment_ids}&limit_children=false&link_id=t3_${id}` let url = `https://oauth.reddit.com/api/morechildren?api_type=json&children=${comment_ids}&limit_children=false&link_id=t3_${id}`
fetch(encodeURI(url), redditApiGETHeaders()) fetch(encodeURI(url), redditApiGETHeaders())
.then(result => { .then(result => {
if(result.status === 200) { if (result.status === 200) {
result.json() result.json()
.then(json => { .then(json => {
if(json.json.data) { if (json.json.data) {
if(json.json.data.things) { if (json.json.data.things) {
let comments = json.json.data.things let comments = json.json.data.things
redis.setex(key, config.setexs.posts, JSON.stringify(comments), (error) => { redis.setex(key, config.setexs.posts, JSON.stringify(comments), (error) => {
if(error) { if (error) {
console.error(`Error setting the ${key} key to redis (moreComments()).`, error) console.error(`Error setting the ${key} key to redis (moreComments()).`, error)
resolve(false) return null;
} else {
console.log(`Fetched the JSON from Reddit (endpoint "morechildren") for URL: ${post_url}. (moreComments())`)
resolve(comments)
}
})
} else { } else {
resolve(false) console.log(`Fetched the JSON from Reddit (endpoint "morechildren") for URL: ${post_url}. (moreComments())`)
return comments;
} }
} else { })
resolve(false) } else {
} return null;
}) }
} else { } else {
console.error(`Something went wrong while fetching data from Reddit. ${result.status} ${result.statusText} (moreComments())`) return null;
resolve(false)
} }
}).catch(error => {
console.log(`Error fetching the JSON from Reddit (endpoint "morechildren") with url: ${url}. (moreComments())`, error)
resolve(false)
}) })
} else {
console.error(`Something went wrong while fetching data from Reddit. ${result.status} ${result.statusText} (moreComments())`)
return null;
} }
}).catch(error => {
console.log(`Error fetching the JSON from Reddit (endpoint "morechildren") with url: ${url}. (moreComments())`, error)
return null;
}) })
})() }
}) })
} else {
return null;
} }
} }
module.exports = moreComments;