Created
October 14, 2014 21:35
-
-
Save alanhoff/32684ebbbdbbb15b4212 to your computer and use it in GitHub Desktop.
Proxy de arquivos do S3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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