Comparing version 1.0.0 to 1.0.1
16
index.js
@@ -5,10 +5,20 @@ #! /usr/bin/env node | ||
var Interfake = require('./lib/server'); | ||
var interfake = new Interfake(); | ||
var packageInfo = require('./package.json'); | ||
program | ||
.version('0.0.2') | ||
.version(packageInfo.version) | ||
.option('-f, --file [file]', 'Load an API from a JSON file [file]') | ||
.option('-p --port [port]', 'Specify a port for Interfake to listen on', 3000) | ||
.option('-d --debug', 'Debug mode, turns on console messages') | ||
.parse(process.argv); | ||
var file; | ||
var opts = { | ||
debug: false | ||
}; | ||
if (program.debug) { | ||
opts.debug = true; | ||
} | ||
var interfake = new Interfake(opts); | ||
if (program.file) { | ||
@@ -15,0 +25,0 @@ interfake.loadFile(program.file); |
@@ -8,7 +8,10 @@ var express = require('express'); | ||
function Interfake() { | ||
function Interfake(o) { | ||
o = o || { debug: false }; | ||
var app = express(); | ||
var server; | ||
app.configure(function(){ | ||
app.use(express.bodyParser()); | ||
app.use(express.json()); | ||
app.use(express.urlencoded()); | ||
app.use(app.router); | ||
@@ -22,7 +25,13 @@ }); | ||
} catch (e) { | ||
console.log('Error: ', e); | ||
this.debug('Error: ', e); | ||
res.send(400, e); | ||
} | ||
}); | ||
}.bind(this)); | ||
this.debug = function () { | ||
if (o.debug) { | ||
console.log.apply(console, arguments); | ||
} | ||
}; | ||
function clearRouteForRequest(request) { | ||
@@ -33,3 +42,3 @@ var i,j; | ||
if (app.routes[request.method][i].path === request.url) { | ||
console.log('Clearing existing route at ' + request.method + ': ' + request.url + ' (1/2)'); | ||
this.debug('Clearing existing route at ' + request.method + ': ' + request.url + ' (1/2)'); | ||
app.routes[request.method].shift(i); | ||
@@ -41,3 +50,3 @@ break; | ||
this.createRoute = function createRoute (data) { | ||
this.createRoute = function (data) { | ||
var specifiedRequest, specifiedResponse, afterSpecifiedResponse; | ||
@@ -49,7 +58,7 @@ if (!data.request || !data.request.method || !data.request.url || !data.response || !data.response.code) { | ||
if (data.response.body) { | ||
console.log('Setting up ' + data.request.method + ' ' + data.request.url + ' to return ' + data.response.code + ' with a body of length ' + JSON.stringify(data.response.body).length); | ||
this.debug('Setting up ' + data.request.method + ' ' + data.request.url + ' to return ' + data.response.code + ' with a body of length ' + JSON.stringify(data.response.body).length); | ||
} else { | ||
console.log('Setting up ' + data.request.method + ' ' + data.request.url + ' to return ' + data.response.code + ' with no body'); | ||
this.debug('Setting up ' + data.request.method + ' ' + data.request.url + ' to return ' + data.response.code + ' with no body'); | ||
} | ||
// console.log('ROUTER obj: \n' + JSON.stringify(app._router.map)); | ||
// this.debug('ROUTER obj: \n' + JSON.stringify(app._router.map)); | ||
@@ -64,3 +73,3 @@ specifiedRequest = data.request; | ||
var responseBody = specifiedResponse.body; | ||
console.log('Request to ' + specifiedRequest.url); | ||
this.debug('Request to ' + specifiedRequest.url); | ||
@@ -70,4 +79,5 @@ res.setHeader('Content-Type', 'application/json'); | ||
if (req.query.callback) { | ||
console.log('Request is asking for jsonp'); | ||
responseBody = req.query.callback.trim() + '(' + responseBody + ')'; | ||
this.debug('Request is asking for jsonp'); | ||
if (typeof responseBody !== 'string') responseBody = JSON.stringify(responseBody); | ||
responseBody = req.query.callback.trim() + '(' + responseBody + ');'; | ||
} | ||
@@ -79,6 +89,6 @@ | ||
afterSpecifiedResponse.endpoints.forEach(function (endpoint) { | ||
createRoute(endpoint); | ||
}); | ||
this.createRoute(endpoint); | ||
}.bind(this)); | ||
} | ||
}); | ||
}.bind(this)); | ||
}; | ||
@@ -88,5 +98,16 @@ | ||
port = port || 3000; | ||
app.listen(port); | ||
console.log('Interfake is listening for requests on port ' + port); | ||
server = app.listen(port, function () { | ||
this.debug('Interfake is listening for requests on port ' + port); | ||
}.bind(this)); | ||
}; | ||
this.stop = function () { | ||
if (server) { | ||
this.debug('Interfake is stopping'); | ||
server.close(function () { | ||
this.debug('Interfake has stopped'); | ||
server = undefined; | ||
}.bind(this)); | ||
} | ||
}; | ||
} | ||
@@ -93,0 +114,0 @@ |
{ | ||
"name": "interfake", | ||
"preferGlobal": true, | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"author": "Daniel Hough <daniel.hough@gmail.com>", | ||
@@ -15,3 +15,3 @@ "description": "A simple way to create dummy APIs", | ||
"scripts": { | ||
"test":"vows tests/test.js" | ||
"test": "mocha tests/*.test.js --reporter spec" | ||
}, | ||
@@ -38,3 +38,3 @@ "files": [ | ||
"dependencies": { | ||
"express": "3.4.5", | ||
"express": "^3.4.5", | ||
"commander": "2.1.0" | ||
@@ -51,4 +51,5 @@ }, | ||
"vows": "^0.7.0", | ||
"request": "^2.34.0" | ||
"request": "^2.34.0", | ||
"q": "^1.0.1" | ||
} | ||
} |
@@ -89,2 +89,10 @@ # Interfake: Mocked JSON APIs for any platform | ||
### API | ||
* `new Interfake(options)`: creates an Interfake object. Options are: | ||
* `debug`: If `true`, outputs lots of annoying but helpful log messages. Default is `false`. | ||
* `#createRoute(route)`: Takes a JSON object with `request`, `response` and optionally `afterResponse` properties | ||
* `#listen(port)`: Takes a port and starts the server | ||
* `#stop()`: Stops the server if it's been started | ||
## Method 2: Command line | ||
@@ -91,0 +99,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
12652
115
221
0
4
+ Addedaccepts@1.2.131.3.8(transitive)
+ Addedbase64-url@1.2.1(transitive)
+ Addedbasic-auth@1.0.4(transitive)
+ Addedbasic-auth-connect@1.0.0(transitive)
+ Addedbatch@0.5.3(transitive)
+ Addedbody-parser@1.13.3(transitive)
+ Addedbytes@2.1.02.4.0(transitive)
+ Addedcommander@2.6.0(transitive)
+ Addedcompressible@2.0.18(transitive)
+ Addedcompression@1.5.2(transitive)
+ Addedconnect@2.30.2(transitive)
+ Addedconnect-timeout@1.6.2(transitive)
+ Addedcontent-disposition@0.5.0(transitive)
+ Addedcontent-type@1.0.5(transitive)
+ Addedcookie@0.1.3(transitive)
+ Addedcookie-parser@1.3.5(transitive)
+ Addedcookie-signature@1.0.6(transitive)
+ Addedcrc@3.3.0(transitive)
+ Addedcsrf@3.0.6(transitive)
+ Addedcsurf@1.8.3(transitive)
+ Addeddebug@2.2.02.6.9(transitive)
+ Addeddepd@1.0.11.1.22.0.0(transitive)
+ Addeddestroy@1.0.31.0.4(transitive)
+ Addedee-first@1.1.1(transitive)
+ Addederrorhandler@1.4.3(transitive)
+ Addedescape-html@1.0.21.0.3(transitive)
+ Addedetag@1.7.0(transitive)
+ Addedexpress@3.21.2(transitive)
+ Addedexpress-session@1.11.3(transitive)
+ Addedfinalhandler@0.4.0(transitive)
+ Addedforwarded@0.1.2(transitive)
+ Addedfresh@0.3.0(transitive)
+ Addedhttp-errors@1.3.1(transitive)
+ Addediconv-lite@0.4.110.4.13(transitive)
+ Addedipaddr.js@1.0.5(transitive)
+ Addedmedia-typer@0.3.0(transitive)
+ Addedmerge-descriptors@1.0.0(transitive)
+ Addedmethod-override@2.3.10(transitive)
+ Addedmethods@1.1.2(transitive)
+ Addedmime@1.3.4(transitive)
+ Addedmime-db@1.52.01.53.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedminimist@0.0.8(transitive)
+ Addedmkdirp@0.5.1(transitive)
+ Addedmorgan@1.6.1(transitive)
+ Addedms@0.7.10.7.22.0.0(transitive)
+ Addedmultiparty@3.3.2(transitive)
+ Addednegotiator@0.5.30.6.3(transitive)
+ Addedon-finished@2.3.0(transitive)
+ Addedon-headers@1.0.2(transitive)
+ Addedparseurl@1.3.3(transitive)
+ Addedpause@0.1.0(transitive)
+ Addedproxy-addr@1.0.10(transitive)
+ Addedqs@4.0.0(transitive)
+ Addedrandom-bytes@1.0.0(transitive)
+ Addedrange-parser@1.0.3(transitive)
+ Addedraw-body@2.1.7(transitive)
+ Addedresponse-time@2.3.3(transitive)
+ Addedrndm@1.2.0(transitive)
+ Addedsend@0.13.00.13.2(transitive)
+ Addedserve-favicon@2.3.2(transitive)
+ Addedserve-index@1.7.3(transitive)
+ Addedserve-static@1.10.3(transitive)
+ Addedstatuses@1.2.11.5.0(transitive)
+ Addedtsscmp@1.0.5(transitive)
+ Addedtype-is@1.6.18(transitive)
+ Addeduid-safe@2.0.02.1.4(transitive)
+ Addedunpipe@1.0.0(transitive)
+ Addedutils-merge@1.0.0(transitive)
+ Addedvary@1.0.11.1.2(transitive)
+ Addedvhost@3.0.2(transitive)
- Removedbuffer-crc32@0.2.1(transitive)
- Removedbytes@0.2.1(transitive)
- Removedcommander@1.3.2(transitive)
- Removedconnect@2.11.1(transitive)
- Removedcookie@0.1.0(transitive)
- Removedcookie-signature@1.0.1(transitive)
- Removeddebug@0.8.1(transitive)
- Removedexpress@3.4.5(transitive)
- Removedfresh@0.2.0(transitive)
- Removedkeypress@0.1.0(transitive)
- Removedmethods@0.1.0(transitive)
- Removedmime@1.2.11(transitive)
- Removedmkdirp@0.3.5(transitive)
- Removedmultiparty@2.2.0(transitive)
- Removednegotiator@0.3.0(transitive)
- Removedpause@0.0.1(transitive)
- Removedqs@0.6.5(transitive)
- Removedrange-parser@0.0.4(transitive)
- Removedraw-body@1.1.1(transitive)
- Removedsend@0.1.4(transitive)
- Removeduid2@0.0.3(transitive)
Updatedexpress@^3.4.5