Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F102353527
index.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Feb 19, 19:46
Size
2 KB
Mime Type
text/html
Expires
Fri, Feb 21, 19:46 (2 d)
Engine
blob
Format
Raw Data
Handle
24327941
Attached To
R2664 SHRINE MedCo Fork
index.js
View Options
/*!
* serve-static
* Copyright(c) 2010 Sencha Inc.
* Copyright(c) 2011 TJ Holowaychuk
* Copyright(c) 2014 Douglas Christopher Wilson
* MIT Licensed
*/
/**
* Module dependencies.
*/
var
escapeHtml
=
require
(
'escape-html'
);
var
merge
=
require
(
'utils-merge'
);
var
parseurl
=
require
(
'parseurl'
);
var
resolve
=
require
(
'path'
).
resolve
;
var
send
=
require
(
'send'
);
var
url
=
require
(
'url'
);
/**
* @param {String} root
* @param {Object} options
* @return {Function}
* @api public
*/
exports
=
module
.
exports
=
function
serveStatic
(
root
,
options
)
{
if
(
!
root
)
{
throw
new
TypeError
(
'root path required'
)
}
// copy options object
options
=
merge
({},
options
)
// resolve root to absolute
root
=
resolve
(
root
)
// default redirect
var
redirect
=
options
.
redirect
!==
false
// headers listener
var
setHeaders
=
options
.
setHeaders
delete
options
.
setHeaders
if
(
setHeaders
&&
typeof
setHeaders
!==
'function'
)
{
throw
new
TypeError
(
'option setHeaders must be function'
)
}
// setup options for send
options
.
maxage
=
options
.
maxage
||
options
.
maxAge
||
0
options
.
root
=
root
return
function
serveStatic
(
req
,
res
,
next
)
{
if
(
req
.
method
!==
'GET'
&&
req
.
method
!==
'HEAD'
)
{
return
next
()
}
var
opts
=
merge
({},
options
)
var
originalUrl
=
parseurl
.
original
(
req
)
var
path
=
parseurl
(
req
).
pathname
if
(
path
===
'/'
&&
originalUrl
.
pathname
[
originalUrl
.
pathname
.
length
-
1
]
!==
'/'
)
{
// make sure redirect occurs at mount
path
=
''
}
// create send stream
var
stream
=
send
(
req
,
path
,
opts
)
if
(
redirect
)
{
// redirect relative to originalUrl
stream
.
on
(
'directory'
,
function
redirect
()
{
originalUrl
.
pathname
+=
'/'
var
target
=
url
.
format
(
originalUrl
)
res
.
statusCode
=
303
res
.
setHeader
(
'Content-Type'
,
'text/html; charset=utf-8'
)
res
.
setHeader
(
'Location'
,
target
)
res
.
end
(
'Redirecting to <a href="'
+
escapeHtml
(
target
)
+
'">'
+
escapeHtml
(
target
)
+
'</a>\n'
)
})
}
else
{
// forward to next middleware on directory
stream
.
on
(
'directory'
,
next
)
}
// add headers listener
if
(
setHeaders
)
{
stream
.
on
(
'headers'
,
setHeaders
)
}
// forward non-404 errors
stream
.
on
(
'error'
,
function
error
(
err
)
{
next
(
err
.
status
===
404
?
null
:
err
)
})
// pipe
stream
.
pipe
(
res
)
}
}
/**
* Expose mime module.
*
* If you wish to extend the mime table use this
* reference to the "mime" module in the npm registry.
*/
exports
.
mime
=
send
.
mime
Event Timeline
Log In to Comment