90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
var exec = require('child_process').exec
|
|
, fs = require('fs')
|
|
, Connect = require('connect')
|
|
, dispatch = require('dispatch')
|
|
, mime = require('mime')
|
|
, DelayedStream = require('delayed-stream')
|
|
|
|
, getMime = function(ext) {
|
|
return mime.lookup(ext == 'jsonp' ? 'js' : ext)
|
|
}
|
|
|
|
var routes = {
|
|
'/': function (req, res) {
|
|
res.write(fs.readFileSync('./tests/tests.html', 'utf8'))
|
|
res.end()
|
|
},
|
|
'/tests/timeout$': function (req, res) {
|
|
var delayed = DelayedStream.create(req)
|
|
setTimeout(function() {
|
|
res.writeHead(200, {
|
|
'Expires': 0
|
|
, 'Cache-Control': 'max-age=0, no-cache, no-store'
|
|
})
|
|
req.query.callback && res.write(req.query.callback + '(')
|
|
res.write(JSON.stringify({ method: req.method, query: req.query, headers: req.headers }))
|
|
req.query.callback && res.write(');')
|
|
delayed.pipe(res)
|
|
}, 2000)
|
|
},
|
|
'/tests/204': function(req, res) {
|
|
res.writeHead(204);
|
|
res.end();
|
|
},
|
|
'(([\\w\\-\\/\\.]+)\\.(css|js|json|jsonp|html|xml)$)': function (req, res, next, uri, file, ext) {
|
|
res.writeHead(200, {
|
|
'Expires': 0
|
|
, 'Cache-Control': 'max-age=0, no-cache, no-store'
|
|
, 'Content-Type': getMime(ext)
|
|
})
|
|
if (req.query.echo !== undefined) {
|
|
ext == 'jsonp' && res.write((req.query.callback || req.query.testCallback || 'echoCallback') + '(')
|
|
res.write(JSON.stringify({ method: req.method, query: req.query, headers: req.headers }))
|
|
ext == 'jsonp' && res.write(');')
|
|
} else {
|
|
res.write(fs.readFileSync('./' + file + '.' + ext))
|
|
}
|
|
res.end()
|
|
}
|
|
}
|
|
|
|
Connect.createServer(Connect.query(), dispatch(routes)).listen(1234)
|
|
|
|
var otherOriginRoutes = {
|
|
'/get-value': function (req, res) {
|
|
res.writeHead(200, {
|
|
'Access-Control-Allow-Origin': req.headers.origin,
|
|
'Content-Type': 'text/plain'
|
|
})
|
|
res.end('hello')
|
|
},
|
|
'/set-cookie': function (req, res) {
|
|
res.writeHead(200, {
|
|
'Access-Control-Allow-Origin': req.headers.origin,
|
|
'Access-Control-Allow-Credentials': 'true',
|
|
'Content-Type': 'text/plain',
|
|
'Set-Cookie': 'cookie=hello'
|
|
})
|
|
res.end('Set a cookie!')
|
|
},
|
|
'/get-cookie-value': function (req, res) {
|
|
var cookies = {}
|
|
, value
|
|
|
|
req.headers.cookie && req.headers.cookie.split(';').forEach(function( cookie ) {
|
|
var parts = cookie.split('=')
|
|
cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim()
|
|
})
|
|
value = cookies.cookie
|
|
|
|
res.writeHead(200, {
|
|
'Access-Control-Allow-Origin': req.headers.origin,
|
|
'Access-Control-Allow-Credentials': 'true',
|
|
'Content-Type': 'text/plain'
|
|
})
|
|
res.end(value)
|
|
}
|
|
}
|
|
|
|
Connect.createServer(Connect.query(), dispatch(otherOriginRoutes)).listen(5678)
|