convert processSubredditAbout to async function
This commit is contained in:
parent
1c7a3a8f5a
commit
aae3e00ab1
|
@ -1,106 +1,119 @@
|
||||||
module.exports = function() {
|
const config = require('../config');
|
||||||
const config = require('../config')
|
|
||||||
this.processSubredditAbout = (subreddit, redis, fetch, RedditAPI) => {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
(async () => {
|
|
||||||
if(subreddit && !subreddit.includes('+') && subreddit !== 'all') {
|
|
||||||
function returnRelevantKeys(json) {
|
|
||||||
return {
|
|
||||||
title: json.data.title,
|
|
||||||
public_description_html: json.data.public_description_html,
|
|
||||||
active_user_count: json.data.active_user_count,
|
|
||||||
subscribers: json.data.subscribers,
|
|
||||||
created_utc: json.data.created_utc,
|
|
||||||
over18: json.data.over18,
|
|
||||||
description_html: json.data.description_html,
|
|
||||||
moderators: json.moderators
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let key = `${subreddit}:sidebar`
|
async function processSubredditAbout(subreddit, redis, fetch, RedditAPI) {
|
||||||
redis.get(key, (error, json) => {
|
if (subreddit && !subreddit.includes('+') && subreddit !== 'all') {
|
||||||
if(error) {
|
function returnRelevantKeys(json) {
|
||||||
console.error(`Error getting the ${subreddit}:sidebar key from redis.`, error)
|
return {
|
||||||
resolve(null)
|
title: json.data.title,
|
||||||
}
|
public_description_html: json.data.public_description_html,
|
||||||
if(json) {
|
active_user_count: json.data.active_user_count,
|
||||||
json = JSON.parse(json)
|
subscribers: json.data.subscribers,
|
||||||
resolve(returnRelevantKeys(json))
|
created_utc: json.data.created_utc,
|
||||||
} else {
|
over18: json.data.over18,
|
||||||
let url = `https://reddit.com/r/${subreddit}/about.json`
|
description_html: json.data.description_html,
|
||||||
if(config.use_reddit_oauth) {
|
moderators: json.moderators,
|
||||||
url = `https://oauth.reddit.com/r/${subreddit}/about`
|
};
|
||||||
}
|
}
|
||||||
fetch(encodeURI(url), redditApiGETHeaders())
|
|
||||||
.then(result => {
|
|
||||||
if(result.status === 200) {
|
|
||||||
result.json()
|
|
||||||
.then(json => {
|
|
||||||
json.moderators = []
|
|
||||||
redis.setex(key, config.setexs.sidebar, JSON.stringify(json), (error) => {
|
|
||||||
if(error) {
|
|
||||||
console.error('Error setting the sidebar key to redis.', error)
|
|
||||||
return res.render('index', { json: null, user_preferences: req.cookies })
|
|
||||||
} else {
|
|
||||||
console.log('Fetched the sidebar from reddit API.')
|
|
||||||
let moderators_url = `https://reddit.com/r/${subreddit}/about/moderators.json`
|
|
||||||
if(config.use_reddit_oauth) {
|
|
||||||
moderators_url = `https://oauth.reddit.com/r/${subreddit}/about/moderators`
|
|
||||||
}
|
|
||||||
resolve(returnRelevantKeys(json))
|
|
||||||
/*
|
|
||||||
* The following code is commented out because Reddit doesn't
|
|
||||||
* anymore support fetching moderators for subreddits
|
|
||||||
* when not logged in.
|
|
||||||
* This might change in the future though.
|
|
||||||
* https://codeberg.org/teddit/teddit/issues/207
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
let key = `${subreddit}:sidebar`;
|
||||||
fetch(encodeURI(moderators_url), redditApiGETHeaders())
|
redis.get(key, (error, json) => {
|
||||||
.then(mod_result => {
|
if (error) {
|
||||||
if(mod_result.status === 200) {
|
console.error(
|
||||||
mod_result.json()
|
`Error getting the ${subreddit}:sidebar key from redis.`,
|
||||||
.then(mod_json => {
|
error
|
||||||
json.moderators = mod_json
|
);
|
||||||
redis.setex(key, config.setexs.sidebar, JSON.stringify(json), (error) => {
|
return null;
|
||||||
if(error) {
|
}
|
||||||
console.error('Error setting the sidebar with moderators key to redis.', error)
|
if (json) {
|
||||||
return res.render('index', { json: null, user_preferences: req.cookies })
|
json = JSON.parse(json);
|
||||||
} else {
|
return returnRelevantKeys(json);
|
||||||
console.log('Fetched the moderators from reddit API.')
|
} else {
|
||||||
resolve(returnRelevantKeys(json))
|
let url = `https://reddit.com/r/${subreddit}/about.json`;
|
||||||
}
|
if (config.use_reddit_oauth) {
|
||||||
})
|
url = `https://oauth.reddit.com/r/${subreddit}/about`;
|
||||||
})
|
}
|
||||||
} else {
|
fetch(encodeURI(url), redditApiGETHeaders())
|
||||||
console.error(`Something went wrong while fetching moderators data from reddit API. ${mod_result.status} – ${mod_result.statusText}`)
|
.then((result) => {
|
||||||
console.error(config.reddit_api_error_text)
|
if (result.status === 200) {
|
||||||
resolve(returnRelevantKeys(json))
|
result.json().then((json) => {
|
||||||
}
|
json.moderators = [];
|
||||||
}).catch(error => {
|
redis.setex(
|
||||||
console.error('Error fetching moderators.', error)
|
key,
|
||||||
resolve(returnRelevantKeys(json))
|
config.setexs.sidebar,
|
||||||
})
|
JSON.stringify(json),
|
||||||
*/
|
(error) => {
|
||||||
|
if (error) {
|
||||||
|
console.error(
|
||||||
|
'Error setting the sidebar key to redis.',
|
||||||
|
error
|
||||||
|
);
|
||||||
|
return res.render('index', {
|
||||||
|
json: null,
|
||||||
|
user_preferences: req.cookies,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('Fetched the sidebar from reddit API.');
|
||||||
|
let moderators_url = `https://reddit.com/r/${subreddit}/about/moderators.json`;
|
||||||
|
if (config.use_reddit_oauth) {
|
||||||
|
moderators_url = `https://oauth.reddit.com/r/${subreddit}/about/moderators`;
|
||||||
}
|
}
|
||||||
})
|
return returnRelevantKeys(json);
|
||||||
|
/*
|
||||||
|
* The following code is commented out because Reddit doesn't
|
||||||
|
* anymore support fetching moderators for subreddits
|
||||||
|
* when not logged in.
|
||||||
|
* This might change in the future though.
|
||||||
|
* https://codeberg.org/teddit/teddit/issues/207
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
fetch(encodeURI(moderators_url), redditApiGETHeaders())
|
||||||
|
.then(mod_result => {
|
||||||
|
if(mod_result.status === 200) {
|
||||||
|
mod_result.json()
|
||||||
|
.then(mod_json => {
|
||||||
|
json.moderators = mod_json
|
||||||
|
redis.setex(key, config.setexs.sidebar, JSON.stringify(json), (error) => {
|
||||||
|
if(error) {
|
||||||
|
console.error('Error setting the sidebar with moderators key to redis.', error)
|
||||||
|
return res.render('index', { json: null, user_preferences: req.cookies })
|
||||||
|
} else {
|
||||||
|
console.log('Fetched the moderators from reddit API.')
|
||||||
|
return(returnRelevantKeys(json))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
console.error(`Something went wrong while fetching moderators data from reddit API. ${mod_result.status} – ${mod_result.statusText}`)
|
||||||
|
console.error(config.reddit_api_error_text)
|
||||||
|
return(returnRelevantKeys(json))
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('Error fetching moderators.', error)
|
||||||
|
return(returnRelevantKeys(json))
|
||||||
})
|
})
|
||||||
} else {
|
*/
|
||||||
console.error(`Something went wrong while fetching data from reddit API. ${result.status} – ${result.statusText}`)
|
}
|
||||||
console.error(config.reddit_api_error_text)
|
}
|
||||||
resolve(null)
|
);
|
||||||
}
|
});
|
||||||
}).catch(error => {
|
} else {
|
||||||
console.error('Error fetching the sidebar.', error)
|
console.error(
|
||||||
resolve(null)
|
`Something went wrong while fetching data from reddit API. ${result.status} – ${result.statusText}`
|
||||||
})
|
);
|
||||||
|
console.error(config.reddit_api_error_text);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
.catch((error) => {
|
||||||
resolve(null)
|
console.error('Error fetching the sidebar.', error);
|
||||||
}
|
return null;
|
||||||
})()
|
});
|
||||||
})
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.exports = processSubredditAbout;
|
||||||
|
|
|
@ -6,7 +6,7 @@ const {
|
||||||
processJsonPost,
|
processJsonPost,
|
||||||
finalizeJsonPost,
|
finalizeJsonPost,
|
||||||
} = require('../inc/processJsonPost.js');
|
} = require('../inc/processJsonPost.js');
|
||||||
const processAbout = require('../inc/processSubredditAbout.js')();
|
const processSubredditAbout = require('../inc/processSubredditAbout.js');
|
||||||
const tedditApiUser = require('../inc/teddit_api/handleUser.js')();
|
const tedditApiUser = require('../inc/teddit_api/handleUser.js')();
|
||||||
const processSearches = require('../inc/processSearchResults.js')();
|
const processSearches = require('../inc/processSearchResults.js')();
|
||||||
const processSubreddit = require('../inc/processJsonSubreddit.js')();
|
const processSubreddit = require('../inc/processJsonSubreddit.js')();
|
||||||
|
|
Loading…
Reference in New Issue