jsonrpc-client 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -2
- data/lib/jsonrpc/client.rb +2 -1
- data/lib/jsonrpc/version.rb +1 -1
- data/spec/client_spec.rb +14 -12
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16df1f4675b321e958dcc829f856d38cc7e070f5
|
4
|
+
data.tar.gz: 5d90364902453e6c0f8407d0fabe17aa7b92099e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce33b474fabf9f6a9f4ca64d3fe711a2a804e4d5ed7283d83912e96966fe0194d046540de44dedcb2ce13fd78c4af9cb2316cedbb87f51eb1fcd898ff21d0bbe
|
7
|
+
data.tar.gz: a766a37ba9bee715802abb5f0e1c2b9a660d47cdf85adcd1a19dc1b5221e3f27327ab589f1f4eb354bc9ae876361322b47454341608e5ca67c29ff952d9fe4e1
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# JSONRPC::Client
|
2
2
|
|
3
|
-
|
3
|
+
Simple JSON-RPC 2.0 client implementation. See the [specification](http://www.jsonrpc.org/specification).
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,7 +18,10 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
```
|
22
|
+
client = JSONRPC::Client.new('http://example.com')
|
23
|
+
client.add_numbers(1, 2, 3)
|
24
|
+
```
|
22
25
|
|
23
26
|
## Contributing
|
24
27
|
|
data/lib/jsonrpc/client.rb
CHANGED
@@ -28,6 +28,7 @@ module JSONRPC
|
|
28
28
|
def initialize(options)
|
29
29
|
@options = options
|
30
30
|
@options[:content_type] ||= 'application/json'
|
31
|
+
@connection = @options.delete(:connection)
|
31
32
|
end
|
32
33
|
|
33
34
|
def options(additional_options = nil)
|
@@ -39,7 +40,7 @@ module JSONRPC
|
|
39
40
|
end
|
40
41
|
|
41
42
|
def connection
|
42
|
-
@
|
43
|
+
@connection || ::Faraday.new { |connection|
|
43
44
|
connection.response :logger, ::JSONRPC.logger
|
44
45
|
connection.adapter ::Faraday.default_adapter
|
45
46
|
}
|
data/lib/jsonrpc/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -4,6 +4,8 @@ module JSONRPC
|
|
4
4
|
describe Client do
|
5
5
|
BOILERPLATE = {'jsonrpc' => '2.0', 'id' => 1}
|
6
6
|
|
7
|
+
let(:connection) { double('connection') }
|
8
|
+
|
7
9
|
before(:each) do
|
8
10
|
@resp_mock = double('http_response')
|
9
11
|
Base.stub(:make_id).and_return(1)
|
@@ -34,19 +36,19 @@ module JSONRPC
|
|
34
36
|
before(:each) do
|
35
37
|
response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
|
36
38
|
@resp_mock.should_receive(:body).at_least(:once).and_return(response)
|
37
|
-
@client = Client.new(SPEC_URL)
|
39
|
+
@client = Client.new(SPEC_URL, :connection => connection)
|
38
40
|
end
|
39
41
|
|
40
42
|
context "when using an array of args" do
|
41
43
|
it "sends a request with the correct method and args" do
|
42
|
-
|
44
|
+
connection.should_receive(:post).with(SPEC_URL, expected, {:content_type => 'application/json'}).and_return(@resp_mock)
|
43
45
|
@client.invoke('foo', [1, 2, 3]).should == 42
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
47
49
|
context "with headers" do
|
48
50
|
it "adds additional headers" do
|
49
|
-
|
51
|
+
connection.should_receive(:post).with(SPEC_URL, expected, {:content_type => 'application/json', "X-FOO" => "BAR"}).and_return(@resp_mock)
|
50
52
|
@client.invoke('foo', [1, 2, 3], "X-FOO" => "BAR").should == 42
|
51
53
|
end
|
52
54
|
end
|
@@ -64,25 +66,25 @@ module JSONRPC
|
|
64
66
|
end
|
65
67
|
it "sends a valid JSON-RPC request and returns the result" do
|
66
68
|
response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
|
67
|
-
|
69
|
+
connection.should_receive(:post).with(SPEC_URL, @expected, {:content_type => 'application/json'}).and_return(@resp_mock)
|
68
70
|
@resp_mock.should_receive(:body).at_least(:once).and_return(response)
|
69
|
-
client = Client.new(SPEC_URL)
|
71
|
+
client = Client.new(SPEC_URL, :connection => connection)
|
70
72
|
client.foo(1,2,3).should == 42
|
71
73
|
end
|
72
74
|
|
73
75
|
it "sends a valid JSON-RPC request with custom options" do
|
74
76
|
response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
|
75
|
-
|
77
|
+
connection.should_receive(:post).with(SPEC_URL, @expected, {:content_type => 'application/json', :timeout => 10000}).and_return(@resp_mock)
|
76
78
|
@resp_mock.should_receive(:body).at_least(:once).and_return(response)
|
77
|
-
client = Client.new(SPEC_URL, :timeout => 10000)
|
79
|
+
client = Client.new(SPEC_URL, :timeout => 10000, :connection => connection)
|
78
80
|
client.foo(1,2,3).should == 42
|
79
81
|
end
|
80
82
|
|
81
83
|
it "sends a valid JSON-RPC request with custom content_type" do
|
82
84
|
response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
|
83
|
-
|
85
|
+
connection.should_receive(:post).with(SPEC_URL, @expected, {:content_type => 'application/json-rpc', :timeout => 10000}).and_return(@resp_mock)
|
84
86
|
@resp_mock.should_receive(:body).at_least(:once).and_return(response)
|
85
|
-
client = Client.new(SPEC_URL, :timeout => 10000, :content_type => 'application/json-rpc')
|
87
|
+
client = Client.new(SPEC_URL, :timeout => 10000, :content_type => 'application/json-rpc', :connection => connection)
|
86
88
|
client.foo(1,2,3).should == 42
|
87
89
|
end
|
88
90
|
end
|
@@ -105,12 +107,12 @@ module JSONRPC
|
|
105
107
|
])
|
106
108
|
|
107
109
|
Base.stub(:make_id).and_return('1', '2', '5', '9')
|
108
|
-
|
110
|
+
connection.should_receive(:post).with(SPEC_URL, batch, {:content_type => 'application/json'}).and_return(@resp_mock)
|
109
111
|
@resp_mock.should_receive(:body).at_least(:once).and_return(response)
|
110
|
-
client = Client.new(SPEC_URL)
|
112
|
+
client = Client.new(SPEC_URL, :connection => connection)
|
111
113
|
|
112
114
|
sum = subtract = foo = data = nil
|
113
|
-
client = BatchClient.new(SPEC_URL) do |batch|
|
115
|
+
client = BatchClient.new(SPEC_URL, :connection => connection) do |batch|
|
114
116
|
sum = batch.sum(1,2,4)
|
115
117
|
subtract = batch.subtract(42,23)
|
116
118
|
foo = batch.foo_get('name' => 'myself')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonrpc-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Forkert
|
@@ -113,3 +113,4 @@ summary: JSON-RPC 2.0 client
|
|
113
113
|
test_files:
|
114
114
|
- spec/client_spec.rb
|
115
115
|
- spec/spec_helper.rb
|
116
|
+
has_rdoc:
|