diff --git a/index.js b/index.js index bdda6db..17b8854 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,9 @@ var fs = require('fs'); var url = require('url'); var path = require('path'); +var mime = require('mime'); var gitteh = require('gitteh'); +var extname = require('path').extname; var GIT_DIR = '.git'; @@ -94,7 +96,7 @@ function setup(repoPath, options) { if (err.code === 'ENOENT') return next(); else return next(err); } - serveBuffer(buf, res); + serveBuffer(buf, res, gitPath); }); } else { // Is a bare repo, serve file from resolved HEAD @@ -149,7 +151,7 @@ function serveGitFile(repo, tree, parts, res, next) { repo.getRawObject(entry.id, function(err, buf) { if (err) return next(err); if (!buf.data) return next(); - serveBuffer(buf.data, res); + serveBuffer(buf.data, res, parts.join('/')); }); } else { repo.getTree(entry.id, function(err, entryTree) { @@ -161,8 +163,9 @@ function serveGitFile(repo, tree, parts, res, next) { } -function serveBuffer(buf, res) { +function serveBuffer(buf, res, filename) { res.setHeader('Content-Length', buf.length); + res.setHeader('Content-Type', mime.lookup(extname(filename)) ); res.end(buf); } diff --git a/package.json b/package.json index b0bb88b..d1b769d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "author": "Nathan Rajlich (http://tootallnate.net)", "main": "./index.js", "dependencies": { - "gitteh": ">= 0.0.3" + "gitteh": ">= 0.0.3", + "mime": ">= 1.2.1" }, "directories": { "lib": "." @@ -20,4 +21,4 @@ "files": [ "" ] -} \ No newline at end of file +}