UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

107 lines (96 loc) 2.17 kB
define([ 'require', '../util', 'intern/dojo/node!querystring', 'intern/dojo/node!fs' ], function (require, util, qs, fs) { function xml() { return { status: 200, headers: { 'Content-Type': 'application/xml' }, body: [ '<?xml version="1.0" encoding="UTF-8" ?>', '<foo><bar baz="thonk">blargh</bar><bar>blah</bar></foo>' ] }; } function responseType(filename, mimeType) { return util.call(fs.readFile, filename).then(function (buffer) { return { status: 200, headers: { 'Content-Type': mimeType }, body: [ buffer.toString() ] }; }); } return function (request) { var dfd = new util.Promise(function (resolve) { function respond(data) { resolve({ status: 200, headers: { 'Content-Type': 'application/json' }, body: [ JSON.stringify({ method: request.method, query: request.query, headers: request.headers, url : request.nodeRequest.url, payload: data || null }) ] }); } if (request.serviceURL.indexOf('/xml') > -1) { resolve(xml(request)); return; } if (request.serviceURL.indexOf('/responseTypeGif') > -1) { resolve(responseType(require.toUrl('./support/blob.gif'), 'image/gif')); return; } if (request.serviceURL.indexOf('/responseTypeDoc') > -1) { resolve(responseType(require.toUrl('./support/document.html'), 'text/html')); return; } if (request.data) { resolve(request.data.then(function (data) { return { status: 200, headers: { 'Content-Type': 'application/json' }, body: [ JSON.stringify(data) ] }; })); return; } if (request.method !== 'GET') { request.body.join().then(function (data) { respond(qs.parse(data)); }); } else { respond(); } }, true); if (request.query.simulateProgress) { dfd.progress({ type: 'progress' }); } var milliseconds = request.query.delay; if (milliseconds) { milliseconds = parseInt(milliseconds, 10); dfd.promise = util.delay(dfd.promise, milliseconds); } return dfd.promise; }; });