Skip to content

Commit 6eab121

Browse files
author
Martin Naumann
committed
Initial version
1 parent 3b9405b commit 6eab121

File tree

6 files changed

+139
-0
lines changed

6 files changed

+139
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

.jshintrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"asi": true
3+
}

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# jsonrpc-client
2+
3+
A really, really simple JSON-RPC 2.0 client.
4+
5+
## Installation
6+
7+
```shell
8+
npm install --save jsonrpc-client
9+
```
10+
11+
## Usage
12+
13+
```javascript
14+
var jsonRpc = require('jsonrpc-client')
15+
16+
// Our API server is at http://example.org/api
17+
jsonRpc.setUrl('http://example.org/api')
18+
// Let's call the 'saySomething' method that takes two parameters, 'to' and 'message'
19+
jsonRpc.call('saySomething', {to: 'Alice', message: 'Hi, Bob!'})
20+
.then(function success(result) {
21+
// The 'saySomething' method has a field 'output'
22+
console.log('output', result.output)
23+
}, function failure(err) {
24+
// oops, something went wrong!
25+
console.error('Oops! Error code ' + err.code + ': ' + err.message)
26+
// additional data might be in 'err.data'
27+
})
28+
```

index.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
var Promise = require('bluebird'),
2+
Request = require('request-promise'),
3+
UUID = require('uuid')
4+
5+
var settings = {
6+
url: null
7+
}
8+
9+
function JsonRpcError(message, code, data) {
10+
this.name = 'JsonRpcError';
11+
this.message = message || 'Server returned an error response';
12+
this.stack = (new Error()).stack;
13+
}
14+
JsonRpcError.prototype = Object.create(Error.prototype);
15+
JsonRpcError.prototype.constructor = JsonRpcError;
16+
17+
module.exports = {
18+
JsonRpcError: JsonRpcError,
19+
20+
setUrl: function(url) {
21+
settings.url = url
22+
},
23+
24+
call: function(method, params) {
25+
return new Promise(function(resolve, reject) {
26+
Request({
27+
method: 'POST',
28+
uri: settings.url,
29+
json: true,
30+
headers: {
31+
'Content-Type': 'application/json'
32+
},
33+
body: {
34+
id: UUID.v4(),
35+
jsonrpc: '2.0',
36+
method: method,
37+
params: params
38+
}
39+
})
40+
.then(function(result) {
41+
resolve(result)
42+
})
43+
.catch(function(err) {
44+
var actualError = err.error.error
45+
reject({
46+
message: actualError.message,
47+
code: actualError.code,
48+
data: actualError.data
49+
})
50+
})
51+
})
52+
}
53+
}

jsonrpc-client.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _requestPromise = require('request-promise');
8+
9+
var _requestPromise2 = _interopRequireDefault(_requestPromise);
10+
11+
var _uuid = require('uuid');
12+
13+
var _uuid2 = _interopRequireDefault(_uuid);
14+
15+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16+
17+
var settings = {
18+
url: null
19+
};
20+
21+
exports.default = {
22+
setUrl: function setUrl(url) {
23+
settings.url = url;
24+
},
25+
call: function call(method, params) {
26+
(0, _requestPromise2.default)({
27+
method: 'POST',
28+
body: {
29+
id: _uuid2.default.v4(),
30+
jsonrpc: '2.0',
31+
method: method,
32+
params: params
33+
}
34+
});
35+
}
36+
};

package.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "jsonrpc-client",
3+
"version": "1.0.0",
4+
"description": "A lightweight JSON-RPC 2.0 client",
5+
"main": "index.js",
6+
"keywords": [
7+
"jsonrpc"
8+
],
9+
"author": "Martin Naumann <naumann@archilogic.com>",
10+
"license": "ISC",
11+
"dependencies": {
12+
"bluebird": "^3.1.1",
13+
"request": "^2.67.0",
14+
"request-promise": "^1.0.2",
15+
"uuid": "^2.0.1"
16+
},
17+
"devDependencies": {}
18+
}

0 commit comments

Comments
 (0)