summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2017-10-21 18:07:44 +0300
committerYuval Adam <_@yuv.al>2017-10-21 18:07:44 +0300
commit8d1cd6e8711cad3550ebbe69e2a2dcf471f3ee67 (patch)
treed117316bd219a711f8178f682c596a7c570ed808
parentab998ad8580cb6b96e39d26ac77acc36cd604385 (diff)
Handle loading latest images
-rw-r--r--package.json1
-rw-r--r--server.js35
-rw-r--r--yarn.lock4
3 files changed, 38 insertions, 2 deletions
diff --git a/package.json b/package.json
index 572e8b5..f2f13f3 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
"aws-sdk": "^2.138.0",
"express": "^4.16.2",
"mapbox-gl": "^0.40.1",
+ "moment": "^2.19.1",
"pug": "^2.0.0-rc.4",
"redis": "^2.8.0",
"request": "^2.83.0",
diff --git a/server.js b/server.js
index 6d2b33c..e612391 100644
--- a/server.js
+++ b/server.js
@@ -4,6 +4,8 @@ const app = express()
const redis = require('redis')
const client = redis.createClient(process.env.REDIS_URL)
+const moment = require('moment')
+
const request = require('request')
const aws = require('aws-sdk')
const s3 = new aws.S3()
@@ -38,7 +40,7 @@ function fetchImages() {
console.log(`Uploading to bucket`)
s3.putObject({
Bucket: 'imgs.geshem.space',
- Key: `${r}/${d}/${t}.png`,
+ Key: `${d}/${t}/${r}.png`,
ContentType: response.headers['content-type'],
ContentLength: response.headers['content-length'],
Body: body,
@@ -49,7 +51,10 @@ function fetchImages() {
client.del(key)
}
else {
- client.set(key, data.ETag.slice(1, -1))
+ client.multi([
+ ['set', key, data.ETag.slice(1, -1)],
+ ['del', 'images:latest']
+ ]).exec()
}
})
}
@@ -87,6 +92,32 @@ app.use('/', function (req, res, next){
next()
});
+app.get('/imgs', function (req, res) {
+ res.setHeader('Content-Type', 'application/json');
+ client.get('images:latest', (err, reply) => {
+ if (err) {
+ console.log(err)
+ }
+ else if (!reply) {
+ s3.listObjectsV2({
+ Bucket: 'imgs.geshem.space',
+ //StartAfter: moment().subtract(1, 'days').format('YYYYMMDD')
+ }, (err, data) => {
+ const imgs = data.Contents.slice(-20).map( (d) => d.Key)
+ const imgres = JSON.stringify({
+ '140': imgs.filter( (d) => d.endsWith('140.png') ),
+ '280': imgs.filter( (d) => d.endsWith('280.png') )
+ })
+ client.set('images:latest', imgres)
+ res.send(imgres)
+ })
+ }
+ else {
+ res.send(reply)
+ }
+ })
+})
+
app.get('/', function (req, res) {
res.render('index', { prod: process.env.NODE_ENV === 'production' })
})
diff --git a/yarn.lock b/yarn.lock
index 11d4776..f5f2dae 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2991,6 +2991,10 @@ mixin-object@^2.0.1:
dependencies:
minimist "0.0.8"
+moment@^2.19.1:
+ version "2.19.1"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167"
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"