@@ -9,6 +9,7 @@ var exec = require( 'child_process' ).exec
9
9
var spawn = require ( 'child_process' ) . spawn
10
10
var mime = require ( 'mime-types' )
11
11
12
+ var zlib = require ( 'zlib' )
12
13
var ETag = require ( 'ETag' )
13
14
var stmd = require ( 'stmd' )
14
15
var parser = new stmd . DocParser ( )
@@ -81,9 +82,19 @@ http.createServer( function ( req, res ) {
81
82
var slashless = uri . replace ( / ^ \/ ( .* ) \/ ? $ / ig, '$1' )
82
83
var manualId = false
83
84
var mdfilename = false
85
+ var acceptGzip = / \b g z i p \b / i. test ( req . headers [ 'accept-encoding' ] ) ? true : false
84
86
var filename
85
87
var etag
86
88
89
+ function resWrite ( data , binary ) {
90
+ if ( binary ) {
91
+ res . write ( data , 'binary' )
92
+ res . end ( )
93
+ return
94
+ }
95
+ res . end ( data )
96
+ }
97
+
87
98
function httpRespond ( code , data , headers , binary ) {
88
99
var headers = headers || { }
89
100
var data = data || ''
@@ -101,14 +112,20 @@ http.createServer( function ( req, res ) {
101
112
return
102
113
}
103
114
104
- res . writeHead ( code , headers )
105
-
106
- if ( binary ) {
107
- res . write ( data , 'binary' )
108
- res . end ( )
115
+ if ( acceptGzip ) {
116
+ headers [ 'Content-Encoding' ] = 'gzip'
117
+ zlib . gzip ( new Buffer ( data , binary ? 'binary' : 'utf-8' ) , function ( err , data ) {
118
+ if ( err ) {
119
+ responseWithError ( 500 )
120
+ return
121
+ }
122
+ res . writeHead ( code , headers )
123
+ resWrite ( data , binary )
124
+ } )
109
125
return
110
126
}
111
- res . end ( data )
127
+ res . writeHead ( code , headers )
128
+ resWrite ( data , binary )
112
129
}
113
130
114
131
function responseWithError ( code ) {
@@ -171,10 +188,7 @@ http.createServer( function ( req, res ) {
171
188
} )
172
189
173
190
// check for file existence
174
- } else if (
175
- ( ! exists || / m a n i f e s t .a p p c a c h e / . test ( filename ) ) &&
176
- ( ! exists && ! / ^ \/ m a n u a l ( \/ .* ) ? $ / . test ( uri ) )
177
- ) {
191
+ } else if ( ! exists && ! / ^ \/ m a n u a l ( \/ .* ) ? $ / . test ( uri ) ) {
178
192
responseWithError ( 404 )
179
193
return
180
194
@@ -237,8 +251,8 @@ http.createServer( function ( req, res ) {
237
251
html = html
238
252
. replace ( / \{ \{ m a n u a l \- p a g e \- i d \} \} / gi, manualId )
239
253
. replace ( / \{ \{ m a n u a l \- p a g e \- t i t l e \} \} / gi, ret [ 0 ] )
240
- . replace ( / \{ \{ h a n \- v e r s i o n \} \} / gi, LANG [ 'han-version' ] )
241
254
. replace ( '{{parsed-article-html}}' , ret [ 1 ] )
255
+ . replace ( / \{ \{ h a n \- v e r s i o n \} \} / gi, LANG [ 'han-version' ] )
242
256
243
257
httpRespond ( 200 , html , {
244
258
'Content-Type' : HTML_CNTT ,
@@ -257,17 +271,14 @@ http.createServer( function ( req, res ) {
257
271
} else {
258
272
fs . readFile ( filename , 'binary' , function ( err , file ) {
259
273
var ext
260
-
261
274
if ( err ) {
262
275
responseWithError ( 500 )
263
276
return
264
277
}
265
-
266
278
ext = path . extname ( filename ) . slice ( 1 )
267
-
268
279
httpRespond ( 200 , file , {
269
280
'Access-Control-Allow-Origin' : '*' ,
270
- 'Content-Type' : mime . contentType ( ext ) ,
281
+ 'Content-Type' : mime . contentType ( ext ) ,
271
282
'ETag' : etag
272
283
} , true )
273
284
} )
0 commit comments