Advertisement
Guest User

Untitled

a guest
Apr 1st, 2013
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var
  2.         https = require('https'),
  3.         AdmZip = require('adm-zip'),
  4.         app = require('express')();
  5.  
  6. app.get("/*", function(req, res) {
  7.  
  8.     var
  9.             parts = req.params[0].split('/'),
  10.             owner = parts[0],
  11.             repo = parts[1],
  12.             branch = parts[2],
  13.             top_dir = repo + '-' + branch + '/',
  14.             zip_address = 'https://nodeload.github.com/' + owner + '/' + repo + '/zip/' + branch;
  15.  
  16.     https.get(zip_address, function(response) {
  17.         var data = [], dataLen = 0;
  18.         response.on('data', function(chunk) {
  19.  
  20.             data.push(chunk);
  21.             dataLen += chunk.length;
  22.  
  23.         }).on('end', function() {
  24.             var buf = new Buffer(dataLen);
  25.             for (var i = 0, len = data.length, pos = 0; i < len; i++) {
  26.                 data[i].copy(buf, pos);
  27.                 pos += data[i].length;
  28.             }
  29.             var zip = new AdmZip(buf);
  30.            
  31.             // Modify zip file, to remove the top-level directory
  32.            
  33.             var out = zip.toBuffer();
  34.             res.header('Content-Type', 'application/zip');
  35.             res.header('Content-Disposition', 'attachment; filename="' + repo + '.zip"');
  36.             res.send(out);
  37.         });
  38.  
  39.     });
  40.  
  41. });
  42.  
  43. app.listen(3000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement