Comparing version 0.1.2 to 0.1.3
{ | ||
"name": "koa-ws", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"keywords": [ | ||
@@ -27,7 +27,2 @@ "koa", | ||
}, | ||
"config": { | ||
"travis-cov": { | ||
"threshold": 70 | ||
} | ||
}, | ||
"dependencies": { | ||
@@ -49,6 +44,7 @@ "co": "^3.1.0", | ||
"koa": "^0.8.2", | ||
"koa-generic-session": "^1.2.0", | ||
"mocha": "^1.21.4", | ||
"mocha-lcov-reporter": "0.0.1", | ||
"travis-cov": "^0.2.5" | ||
"supertest": "^0.13.0" | ||
} | ||
} |
@@ -82,6 +82,5 @@ (function(){ | ||
// Add helper handlers for the folowing events | ||
if (client._socket) { | ||
if (typeof client._socket === 'undefined') { | ||
['open', 'close', 'message'] | ||
.forEach(function (type, i) { | ||
return; | ||
if (!client['on' + type]) { | ||
@@ -106,3 +105,3 @@ client['on' + type] = function () { | ||
if (typeof arguments[1] === 'object') { | ||
if (typeof arguments[1] !== 'function' && typeof arguments[1] !== 'undefined') { | ||
payload.params = arguments[1]; | ||
@@ -146,2 +145,3 @@ if (typeof arguments[2] === 'function') { | ||
payload = messageQueue.shift(); | ||
debug('Sending message: %o', payload); | ||
client.send(JSON.stringify(payload)); | ||
@@ -155,4 +155,11 @@ } | ||
debug('Incoming message: %o', payload); | ||
if (payload.result && payload.id && awaitingResults[payload.id]) { | ||
debug('Got result for id %s, sending to callback', payload.id); | ||
if (payload.error && payload.id && awaitingResults[payload.id]) { | ||
debug('Got error for id %s, code %s: %s', payload.id, payload.error.code, payload.error.message); | ||
awaitingResults[payload.id].apply(client, [payload.error]); | ||
} else if (payload.error) { | ||
debug('Error %s: %s', payload.error.code, payload.error.message); | ||
//client.emit('error', payload.error); | ||
//console.error('Error %s: %s', payload.error.code, payload.error.message); | ||
} else if (payload.id && awaitingResults[payload.id]) { | ||
debug('Got result for id %s: %s', payload.id, payload.results); | ||
awaitingResults[payload.id].apply(client, [null, payload.result]); | ||
@@ -164,4 +171,2 @@ } else if (payload.method && Array.isArray(callbacks[payload.method])) { | ||
} | ||
} else if (payload.error) { | ||
console.error('Error %s: %s', payload.error.code, payload.error.message); | ||
} | ||
@@ -168,0 +173,0 @@ }); |
@@ -119,5 +119,15 @@ var co = require('co'); | ||
var request = { | ||
currentId: payload.id, | ||
method: payload.method, | ||
params: payload.params, | ||
session: socket.session | ||
}; | ||
request.error = socket.error.bind(request); | ||
request.result = socket.result.bind(request); | ||
request.respond = socket.result.bind(request); | ||
if (!payload.jsonrpc && payload.jsonrpc !== '2.0') { | ||
debug('Wrong protocol: %s', payload.jsonrpc); | ||
socket.error(-32600, 'Invalid Request'); | ||
socket.error.apply(request, [-32600, 'Invalid Request']); | ||
return; | ||
@@ -128,9 +138,9 @@ } | ||
debug('Missing method: %o', payload); | ||
socket.error(-32600, 'Invalid Request'); | ||
socket.error.apply(request, [-32600, 'Invalid Request']); | ||
return; | ||
} | ||
if (payload.params && (typeof payload.params !== 'object' || !Array.isArray(payload.params))) { | ||
if (typeof payload.params !== 'undefined' && typeof payload.params !== 'object' && !Array.isArray(payload.params)) { | ||
debug('Invalid params: %o', payload.params); | ||
socket.error(-32602, 'Invalid params'); | ||
socket.error.apply(request, [-32602, 'Invalid params']); | ||
return; | ||
@@ -142,11 +152,2 @@ } | ||
if (typeof methods[payload.method] === 'function') { | ||
var request = { | ||
currentId: payload.id, | ||
method: payload.method, | ||
params: payload.params, | ||
session: socket.session | ||
}; | ||
request.error = socket.error.bind(request); | ||
request.result = socket.result.bind(request); | ||
request.respond = socket.result.bind(request); | ||
try { | ||
@@ -156,7 +157,7 @@ methods[payload.method].apply(request); | ||
debug('Internal error: %s', e.stack); | ||
socket.error(-32603, 'Internal error').apply(request); | ||
socket.error.apply(request, [-32603, 'Internal error']); | ||
} | ||
} else { | ||
debug('Method not found: %s', payload.method, payload.params); | ||
socket.error(-32601, 'Method not found'); | ||
socket.error.apply(request, [-32601, 'Method not found']); | ||
} | ||
@@ -176,3 +177,3 @@ }); | ||
(co(function* () { | ||
socket.session = yield _this.app.sessionStore.get(sessionId); | ||
socket.session = yield _this.app.sessionStore.get('koa:sess:' + sessionId); | ||
socket.respond('session', socket.session); | ||
@@ -179,0 +180,0 @@ })()); |
@@ -5,6 +5,17 @@ var fs = require('fs'); | ||
var request = require('supertest'); | ||
var koa = require('koa'); | ||
var http = require('http'); | ||
var session = require('koa-generic-session'); | ||
var app = koa(); | ||
app.keys = ['foo', 'bar']; | ||
app.sessionStore = new session.MemoryStore(); | ||
app.use(session({ | ||
store: app.sessionStore, | ||
allowEmpty: true | ||
})); | ||
app.use(function* (next) { | ||
this.session.testing = true; | ||
if (this.path === '/') { | ||
@@ -50,2 +61,5 @@ this.set('Content-Type', 'text/html'); | ||
}); | ||
request(app.server) | ||
.get('/'); | ||
}); | ||
@@ -83,2 +97,45 @@ | ||
it ('should return error -32700 parse error', function (done) { | ||
client.once('message', function (payload) { | ||
var payload = JSON.parse(payload); | ||
expect(payload.error.code).to.be.equal(-32700); | ||
done(); | ||
}); | ||
client.send({ foo: 'bar' }); | ||
}); | ||
it ('should return error -32600 invalid request', function (done) { | ||
client.once('message', function (payload) { | ||
var payload = JSON.parse(payload); | ||
expect(payload.error.code).to.be.equal(-32600); | ||
done(); | ||
}); | ||
client.send(JSON.stringify({ foo: 'bar' })); | ||
}); | ||
it ('should return error -32602 invalid params', function (done) { | ||
client.method('hello', 'world!', function (err, payload) { | ||
expect(err.code).to.be.equal(-32602); | ||
done(); | ||
}); | ||
}); | ||
it ('should return error -32601 method not found', function (done) { | ||
client.method('foo', function (err, payload) { | ||
expect(err.code).to.be.equal(-32601); | ||
done(); | ||
}); | ||
}); | ||
it ('should serve the client library at /koaws.js', function (done) { | ||
request(app.server) | ||
.get('/koaws.js') | ||
.expect(200) | ||
.expect('Content-Type', 'application/javascript') | ||
.end(function (err, res) { | ||
if (err) throw err; | ||
done(); | ||
}); | ||
}); | ||
}); |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
22039
494
10
1