Compare commits

...

9 Commits

Author SHA1 Message Date
Douglas Christopher Wilson
ea7b37f19b 1.1.5 2014-07-27 18:16:38 -04:00
Douglas Christopher Wilson
d613373f78 docs: add Gittip badge 2014-07-27 18:16:28 -04:00
Douglas Christopher Wilson
afb181df84 deps: istanbul@0.3.0 2014-07-27 18:08:51 -04:00
Douglas Christopher Wilson
a70edf46cd deps: mocha@~1.21.1 2014-07-27 18:07:51 -04:00
Douglas Christopher Wilson
9ccd58738b deps: accepts@~1.0.7 2014-07-27 18:07:19 -04:00
Yad Smood
db905a6d8a Fix Content-Length calculation for multi-byte file names
closes #12
2014-07-27 17:42:18 -04:00
Douglas Christopher Wilson
eeda184dbd deps: istanbul@0.2.11 2014-06-24 21:12:07 -04:00
Douglas Christopher Wilson
a879aee5e5 1.1.4 2014-06-20 15:38:46 -04:00
Douglas Christopher Wilson
7ba4f7cf44 deps: accepts@~1.0.5 2014-06-20 15:38:04 -04:00
6 changed files with 47 additions and 24 deletions

View File

@@ -1,3 +1,15 @@
1.1.5 / 2014-07-27
==================
* Fix Content-Length calculation for multi-byte file names
* deps: accepts@~1.0.7
- deps: negotiator@0.4.7
1.1.4 / 2014-06-20
==================
* deps: accepts@~1.0.5
1.1.3 / 2014-06-20
==================

View File

@@ -3,6 +3,7 @@
[![NPM version](https://badge.fury.io/js/serve-index.svg)](http://badge.fury.io/js/serve-index)
[![Build Status](https://travis-ci.org/expressjs/serve-index.svg?branch=master)](https://travis-ci.org/expressjs/serve-index)
[![Coverage Status](https://img.shields.io/coveralls/expressjs/serve-index.svg?branch=master)](https://coveralls.io/r/expressjs/serve-index)
[![Gittip](http://img.shields.io/gittip/dougwilson.svg)](https://www.gittip.com/dougwilson/)
Serves pages that contain directory listings for a given path.

View File

@@ -160,9 +160,11 @@ exports.html = function(req, res, files, next, dir, showUp, icons, path, view, t
.replace('{files}', html(files, dir, icons, view))
.replace('{directory}', dir)
.replace('{linked-path}', htmlPath(dir));
res.setHeader('Content-Type', 'text/html');
res.setHeader('Content-Length', str.length);
res.end(str);
var buf = new Buffer(str, 'utf8');
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.setHeader('Content-Length', buf.length);
res.end(buf);
});
});
});
@@ -173,10 +175,12 @@ exports.html = function(req, res, files, next, dir, showUp, icons, path, view, t
*/
exports.json = function(req, res, files){
files = JSON.stringify(files);
res.setHeader('Content-Type', 'application/json');
res.setHeader('Content-Length', files.length);
res.end(files);
var body = JSON.stringify(files);
var buf = new Buffer(body, 'utf8');
res.setHeader('Content-Type', 'application/json; charset=utf-8');
res.setHeader('Content-Length', buf.length);
res.end(buf);
};
/**
@@ -184,10 +188,12 @@ exports.json = function(req, res, files){
*/
exports.plain = function(req, res, files){
files = files.join('\n') + '\n';
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Content-Length', files.length);
res.end(files);
var body = files.join('\n') + '\n';
var buf = new Buffer(body, 'utf8');
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.setHeader('Content-Length', buf.length);
res.end(buf);
};
/**

View File

@@ -1,17 +1,17 @@
{
"name": "serve-index",
"description": "Serve directory listings",
"version": "1.1.3",
"version": "1.1.5",
"author": "Douglas Christopher Wilson <doug@somethingdoug.com>",
"license": "MIT",
"repository": "expressjs/serve-index",
"dependencies": {
"accepts": "1.0.4",
"accepts": "~1.0.7",
"batch": "0.5.1"
},
"devDependencies": {
"istanbul": "0.2.10",
"mocha": "~1.20.0",
"istanbul": "0.3.0",
"mocha": "~1.21.1",
"should": "~4.0.0",
"supertest": "~0.13.0"
},

0
test/fixtures/さくら.txt vendored Normal file
View File

View File

@@ -15,7 +15,7 @@ describe('serveIndex(root)', function () {
request(server)
.get('/')
.expect('Content-Type', 'text/html')
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(200, done)
})
@@ -107,6 +107,7 @@ describe('serveIndex(root)', function () {
.expect(/file #1\.txt/)
.expect(/nums/)
.expect(/todo\.txt/)
.expect(/さくら\.txt/)
.expect(200, done)
});
});
@@ -119,11 +120,12 @@ describe('serveIndex(root)', function () {
.get('/')
.set('Accept', 'text/html')
.expect(200)
.expect('Content-Type', /html/)
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(/<a href="\/g%23%20%253%20o%20%252525%20%2537%20dir"/)
.expect(/<a href="\/users"/)
.expect(/<a href="\/file%20%231.txt"/)
.expect(/<a href="\/todo.txt"/)
.expect(/<a href="\/%E3%81%95%E3%81%8F%E3%82%89\.txt"/)
.end(done);
});
@@ -134,7 +136,7 @@ describe('serveIndex(root)', function () {
.get('/')
.set('Accept', 'text/html')
.expect(200)
.expect('Content-Type', /html/)
.expect('Content-Type', 'text/html; charset=utf-8')
.end(function (err, res) {
if (err) throw err;
var urls = res.text.split(/<a href="([^"]*)"/).filter(function(s, i){ return i%2; });
@@ -146,6 +148,7 @@ describe('serveIndex(root)', function () {
'/foo%20bar',
'/nums',
'/todo.txt',
'/%E3%81%95%E3%81%8F%E3%82%89.txt'
]);
done();
});
@@ -160,11 +163,12 @@ describe('serveIndex(root)', function () {
.get('/')
.set('Accept', 'text/plain')
.expect(200)
.expect('Content-Type', /plain/)
.expect('Content-Type', 'text/plain; charset=utf-8')
.expect(/users/)
.expect(/g# %3 o %2525 %37 dir/)
.expect(/file #1.txt/)
.expect(/todo.txt/)
.expect(/さくら\.txt/)
.end(done);
});
});
@@ -304,7 +308,7 @@ describe('serveIndex(root)', function () {
request(server)
.get('/')
.set('Accept', 'text/html')
.expect(200, '<b>2 text files</b>', done)
.expect(200, '<b>3 text files</b>', done)
});
it('should get dir name', function (done) {
@@ -419,7 +423,7 @@ describe('serveIndex(root)', function () {
.get('/users/')
.set('Accept', 'text/html')
.expect(200)
.expect('Content-Type', /html/)
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(/<a href="\/users\/index.html"/)
.expect(/<a href="\/users\/tobi.txt"/)
.end(done);
@@ -432,7 +436,7 @@ describe('serveIndex(root)', function () {
.get('/%23directory/')
.set('Accept', 'text/html')
.expect(200)
.expect('Content-Type', /html/)
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(/<a href="\/%23directory"/)
.expect(/<a href="\/%23directory\/index.html"/)
.end(done);
@@ -445,7 +449,7 @@ describe('serveIndex(root)', function () {
.get('/g%23%20%253%20o%20%252525%20%2537%20dir/')
.set('Accept', 'text/html')
.expect(200)
.expect('Content-Type', /html/)
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(/<a href="\/g%23%20%253%20o%20%252525%20%2537%20dir"/)
.expect(/<a href="\/g%23%20%253%20o%20%252525%20%2537%20dir\/empty.txt"/)
.end(done);
@@ -504,7 +508,7 @@ describe('serveIndex(root)', function () {
.get('/')
.set('Accept', 'text/html')
.expect(200)
.expect('Content-Type', /html/)
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(/color: #00ff00;/)
.end(done);
});