-
Notifications
You must be signed in to change notification settings - Fork 0
/
profile.js
31 lines (30 loc) · 979 Bytes
/
profile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const request = require("request")
const bluebird = require("bluebird")
const redis = require("redis"),
client = bluebird.promisifyAll(redis.createClient("redis://redis"))
const profile = {
get_profile: function(screen_name, size) {
return new Promise((resolve, reject) => {
request.get({url: `https://twitter.com/${screen_name}/profile_image?size=${size}`, followRedirect: false}, function(err, res, body){
if(err) return reject(err)
if(res.statusCode == 302)
{
resolve(res.headers.location)
}
})
})
},
get: async function(screen_name, size) {
let key = `${screen_name}:${size}`
let exists = await client.existsAsync(key)
let profile_path
if(exists) {
profile_path = await client.getAsync(key)
}else{
profile_path = await this.get_profile(screen_name, size)
await client.setexAsync(key, 300, profile_path)
}
return profile_path
}
}
module.exports = profile