Add rate limiting to the image processor.

This commit is contained in:
Simo Kinnunen
2014-05-21 14:32:21 +09:00
parent c0d02c4e3a
commit 98470cda20
3 changed files with 53 additions and 19 deletions

View File

@@ -3,6 +3,7 @@ var http = require('http')
var express = require('express')
var logger = require('../../../../util/logger')
var requtil = require('../../../../util/requtil')
var parseCrop = require('./param/crop')
var parseGravity = require('./param/gravity')
@@ -18,26 +19,33 @@ module.exports = function(options) {
app.set('case sensitive routing', true)
app.set('trust proxy', true)
app.get('/api/v1/s/image/:id/*', function(req, res) {
get(req.url, options)
.then(function(stream) {
return transform(stream, {
crop: parseCrop(req.query.crop)
, gravity: parseGravity(req.query.gravity)
})
})
.then(function(out) {
res.status(200)
out.pipe(res)
})
.catch(function(err) {
log.error('Unable to transform resource "%s"', req.params.id, err.stack)
res.status(500)
.json({
success: false
app.get(
'/api/v1/s/image/:id/*'
, requtil.limit(options.concurrency, function(req, res) {
return get(req.url, options)
.then(function(stream) {
return transform(stream, {
crop: parseCrop(req.query.crop)
, gravity: parseGravity(req.query.gravity)
})
})
})
})
.then(function(out) {
res.status(200)
out.pipe(res)
})
.catch(function(err) {
log.error(
'Unable to transform resource "%s"'
, req.params.id
, err.stack
)
res.status(500)
.json({
success: false
})
})
})
)
server.listen(options.port)
log.info('Listening on port %d', options.port)