-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlambda_handler.js
More file actions
66 lines (60 loc) · 2.06 KB
/
lambda_handler.js
File metadata and controls
66 lines (60 loc) · 2.06 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
require('dotenv').config()
const log = require('simple-node-logger').createSimpleLogger('logs/pfp.log');
const fs = require('fs');
const path = require('path');
const S3 = require('aws-sdk/clients/s3');
const Twit = require('twit');
const sharp = require('sharp');
const TMP_DIR = '/tmp';
function cleanTmpDir() {
fs.readdir(TMP_DIR, (err, files) => {
if (err) log.error(`Could not glear /tmp: ${err}`);
for (const file of files) {
fs.unlink(path.join(TMP_DIR, file), err => {
if (err) log.error(`Could not delete file: ${err}`);
});
}
})
}
function lambda_handler(event, context) {
log.info('<--BEGIN-->');
let client = new Twit({
consumer_key: process.env.TWITTER_KEY,
consumer_secret: process.env.TWITTER_SECRET,
access_token:process.env.TWITTER_TOKEN,
access_token_secret: process.env.TWITTER_TOKEN_SECRET,
});
var svgName = 'template_pfp.svg'
var svgPath = path.join(TMP_DIR, 'template_pfp.svg');
var name = svgName.replace('.svg', '');
var pngPath = path.join(TMP_DIR, name + '.png');
sharp(svgPath).png().toFile(pngPath).then( _ => {
client.postMediaChunked({ file_path: pngPath }, (err, data, _) => {
if (!err) {
var mediaStr = data.media_id_string;
var altText = name;
var meta_params = { media_id: mediaStr, alt_text: { text: altText }};
client.post('media/metadata/create', meta_params, (err, _, __) => {
if(!err) {
var params = { status: name, media_ids: [mediaStr] };
client.post('statuses/update', params, (err, _, __) =>{
if (!err) {
log.info(`Successfully uploaded ${name}`);
cleanTmpDir()
} else {
log.error(`Could not perform statuses/update: ${err}`);
}
});
} else {
log.error(`Could not perform media/metadata/create: ${err}`);
cleanTmpDir()
}
});
} else {
log.error(`Could not post media chunk: ${err}`);
cleanTmpDir()
}
});
});
}
lambda_handler()