const express = require('express') const app = express(); const axios = require('axios'); const querystring = require('querystring'); let tokenExpirationDate = false; let bearerToken; const data = { grant_type:'password', username:process.env.REDDITUSR, password:process.env.REDDITPWD } const auth = { username: process.env.APPID, password: process.env.APPSECRET } const getToken = async ()=>{ if(tokenExpirationDate === false || Date.now() > tokenExpirationDate){ const response = await axios({ url:'https://www.reddit.com/api/v1/access_token', method:'post', auth:auth, data:querystring.stringify(data) }) bearerToken = response.data.access_token tokenExpirationDate = Date.now()+(response.data.expires_in*1000) } const config = { headers:{ Authorization: 'bearer '+ bearerToken } } return config } const generate = async (req, res)=>{ let url = `https://oauth.reddit.com/user/mahuntington/saved?count=100`; if(req.params.direction){ url += `&${req.params.direction}=${req.params.page}` } const config = await getToken() const response = await axios.get(url, config) res.render('all.ejs', { posts: response.data.data.children.filter(post => post.data.subreddit === 'ProgrammerHumor' && post.data.removed_by_category === null), next: response.data.data.after, previous: response.data.data.before }) } getToken(); app.get('/', generate) app.get('/:direction/:page', generate) app.listen(3002, ()=>{ console.log('listening'); })