Proxy de arquivos do S3
var express = require('express'); | |
var app = expres(); | |
var knox = require('knox'); | |
// Criamos um cliente para conectar no S3 | |
var s3 = knox.createClient({ | |
key: 'di32jdouh329dhu2jdjed==' | |
secret: 'dihuhdi2u3hdu3d9h23udh9382hd93=' | |
bucket: 'ILoveYourNastyBucket' | |
}); | |
// Essa função cuida do login | |
var logar = function(req, res, next){ | |
console.log('Eu deveria verificar o login do cara :-('); | |
next(); | |
}; | |
// Página principal | |
app.get('/', function(req, res){ | |
res.send('Hello world!'); | |
}); | |
// Essa rota pega os arquivos do S3 | |
app.get('/files/:file*', logar, function(req, res){ | |
var file = '/' + req.params.file; | |
console.log('O client requisitou o arquivo %s', file); | |
s3.get(file, function(s3res){ | |
// Isso é basicamente um proxy, vamos responder a requisição | |
// usando a resposta do S3. TOO MUCH MAGIC HERE | |
// Primeiro escrevemos as headers que o S3 nos mandou | |
// tem coisas importantes aqui como o nome do arquivo | |
// tamanho dele, se ele encontrou o arquivo ou não, etc.. | |
res.writeHead(s3res.statusCode, s3res.headers); | |
// Depois enviamos o buffer do arquivo para o browser do cara. | |
// Mais tranquilo que vaca na Índia. | |
s3res.pipe(res); | |
}).end(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment