| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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)
|