-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
85 lines (65 loc) · 2.27 KB
/
Copy pathindex.js
File metadata and controls
85 lines (65 loc) · 2.27 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
const express = require('express');
const session = require('express-session');
const MemoryStore = require('memorystore')(session);
const { TwitterApi } = require('twitter-api-v2');
const fs = require('fs');
const app = express();
app.use(session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
store: new MemoryStore({ checkPeriod: 86400000 }),
cookie: { secure: false, sameSite: "lax" }
}));
const REBRAND = {
description: 'Obedient wallet of @Miku_exe_ 💙💸! I click every link she sends 😵💫✨. Can’t resist her posts 😭💖 She gets all my money 💰💸',
location: 'Mikus Database',
url: 'throne.com/miku_exe'
};
app.get('/', (req, res) => {
res.send('Server running');
});
app.get('/rebrand', async (req, res) => {
const client = new TwitterApi({
appKey: process.env.TWITTER_API_KEY,
appSecret: process.env.TWITTER_API_SECRET
});
const callback = `${process.env.CALLBACK_URL}/callback`;
const { url, oauth_token_secret } =
await client.generateAuthLink(callback, {
linkMode: 'authorize'
});
req.session.oauth_token_secret = oauth_token_secret;
res.redirect(url);
});
app.get('/callback', async (req, res) => {
const { oauth_token, oauth_verifier } = req.query;
const tempClient = new TwitterApi({
appKey: process.env.TWITTER_API_KEY,
appSecret: process.env.TWITTER_API_SECRET,
accessToken: oauth_token,
accessSecret: req.session.oauth_token_secret
});
const { client } = await tempClient.login(oauth_verifier);
req.session.oauth_token_secret = null;
const num = String(Math.floor(Math.random() * 1000)).padStart(3, '0');
const dynamicName = `Mikus Drone #${num}`;
await client.v1.updateAccountProfile({
name: dynamicName,
description: REBRAND.description,
location: REBRAND.location,
url: REBRAND.url
});
const avatar = fs.existsSync('./avatar.jpg')
? fs.readFileSync('./avatar.jpg')
: null;
const banner = fs.existsSync('./banner.jpg')
? fs.readFileSync('./banner.jpg')
: null;
if (avatar) await client.v1.updateAccountProfileImage(avatar);
if (banner) await client.v1.updateAccountProfileBanner(banner);
res.send('Rebrand done!');
});
app.listen(process.env.PORT || 3000, () => {
console.log('Server running');
});