Skip to content

Instantly share code, notes, and snippets.

@alanhoff
Created October 14, 2014 21:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alanhoff/32684ebbbdbbb15b4212 to your computer and use it in GitHub Desktop.
Save alanhoff/32684ebbbdbbb15b4212 to your computer and use it in GitHub Desktop.
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