jimson 0.7.0 → 0.7.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.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.7.1 / 2012-08-16
2
+
3
+ * Bug fixes
4
+
5
+ * Fix handling of array params in client, which were erroneously being flattened
6
+
1
7
  == 0.7.0 / 2012-04-13
2
8
 
3
9
  * Major enhancements
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 0.7.1
data/lib/jimson/client.rb CHANGED
@@ -159,11 +159,11 @@ module Jimson
159
159
  end
160
160
 
161
161
  def method_missing(sym, *args, &block)
162
- self[sym, args]
162
+ @helper.process_call(sym, args)
163
163
  end
164
164
 
165
165
  def [](method, *args)
166
- @helper.process_call(method, args.flatten)
166
+ @helper.process_call(method, args)
167
167
  end
168
168
 
169
169
  end
data/spec/client_spec.rb CHANGED
@@ -24,27 +24,37 @@ module Jimson
24
24
 
25
25
  describe "#[]" do
26
26
  before(:each) do
27
- expected = MultiJson.encode({
28
- 'jsonrpc' => '2.0',
29
- 'method' => 'foo',
30
- 'params' => [1,2,3],
31
- 'id' => 1
32
- })
33
- response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
34
- RestClient.should_receive(:post).with(SPEC_URL, expected, {:content_type => 'application/json'}).and_return(@resp_mock)
35
- @resp_mock.should_receive(:body).at_least(:once).and_return(response)
36
27
  @client = Client.new(SPEC_URL)
37
28
  end
38
29
 
39
- context "when using an array of args" do
40
- it "sends a request with the correct method and args" do
41
- @client['foo', [1,2,3]].should == 42
42
- end
43
- end
44
- context "when using a splat for args" do
30
+ context "when sending positional arguments" do
45
31
  it "sends a request with the correct method and args" do
32
+ expected = MultiJson.encode({
33
+ 'jsonrpc' => '2.0',
34
+ 'method' => 'foo',
35
+ 'params' => [1,2,3],
36
+ 'id' => 1
37
+ })
38
+ response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
39
+ RestClient.should_receive(:post).with(SPEC_URL, expected, {:content_type => 'application/json'}).and_return(@resp_mock)
40
+ @resp_mock.should_receive(:body).at_least(:once).and_return(response)
46
41
  @client['foo', 1, 2, 3].should == 42
47
42
  end
43
+
44
+ context "when one of the args is an array" do
45
+ it "sends a request with the correct method and args" do
46
+ expected = MultiJson.encode({
47
+ 'jsonrpc' => '2.0',
48
+ 'method' => 'foo',
49
+ 'params' => [[1,2],3],
50
+ 'id' => 1
51
+ })
52
+ response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
53
+ RestClient.should_receive(:post).with(SPEC_URL, expected, {:content_type => 'application/json'}).and_return(@resp_mock)
54
+ @resp_mock.should_receive(:body).at_least(:once).and_return(response)
55
+ @client['foo', [1, 2], 3].should == 42
56
+ end
57
+ end
48
58
  end
49
59
  end
50
60
 
@@ -74,6 +84,22 @@ module Jimson
74
84
  client.foo(1,2,3).should == 42
75
85
  end
76
86
  end
87
+
88
+ context "when one of the parameters is an array" do
89
+ it "sends a correct JSON-RPC request (array is preserved) and returns the result" do
90
+ expected = MultiJson.encode({
91
+ 'jsonrpc' => '2.0',
92
+ 'method' => 'foo',
93
+ 'params' => [[1,2],3],
94
+ 'id' => 1
95
+ })
96
+ response = MultiJson.encode(BOILERPLATE.merge({'result' => 42}))
97
+ RestClient.should_receive(:post).with(SPEC_URL, expected, {:content_type => 'application/json'}).and_return(@resp_mock)
98
+ @resp_mock.should_receive(:body).at_least(:once).and_return(response)
99
+ client = Client.new(SPEC_URL)
100
+ client.foo([1,2],3).should == 42
101
+ end
102
+ end
77
103
  end
78
104
 
79
105
  describe "sending a batch request" do
data/spec/router_spec.rb CHANGED
@@ -59,7 +59,7 @@ module Jimson
59
59
  namespace 'foo', RouterBarHandler.new
60
60
  end
61
61
 
62
- router.jimson_methods.should == ['hi', 'foo.bye']
62
+ router.jimson_methods.sort.should == ['hi', 'foo.bye'].sort
63
63
  end
64
64
  end
65
65
 
data/spec/server_spec.rb CHANGED
@@ -20,6 +20,10 @@ module Jimson
20
20
  a + b + c
21
21
  end
22
22
 
23
+ def car(array)
24
+ array.first
25
+ end
26
+
23
27
  def notify_hello(*args)
24
28
  # notification, doesn't do anything
25
29
  end
@@ -96,6 +100,24 @@ module Jimson
96
100
  }
97
101
  end
98
102
 
103
+ it "handles an array in the parameters" do
104
+ req = {
105
+ 'jsonrpc' => '2.0',
106
+ 'method' => 'car',
107
+ 'params' => [['a', 'b']],
108
+ 'id' => 1
109
+ }
110
+ post_json(req)
111
+
112
+ last_response.should be_ok
113
+ resp = MultiJson.decode(last_response.body)
114
+ resp.should == {
115
+ 'jsonrpc' => '2.0',
116
+ 'result' => 'a',
117
+ 'id' => 1
118
+ }
119
+ end
120
+
99
121
  it "handles bignums" do
100
122
  req = {
101
123
  'jsonrpc' => '2.0',
@@ -368,7 +390,7 @@ module Jimson
368
390
  resp = MultiJson.decode(last_response.body)
369
391
  resp['jsonrpc'].should == '2.0'
370
392
  resp['id'].should == 1
371
- expected = ['get_data', 'notify_hello', 'subtract', 'sum', 'ugly_method', 'update', 'system.isAlive', 'system.listMethods', 'other.multiply']
393
+ expected = ['get_data', 'notify_hello', 'subtract', 'sum', 'car', 'ugly_method', 'update', 'system.isAlive', 'system.listMethods', 'other.multiply']
372
394
  (resp['result'] - expected).should == []
373
395
  end
374
396
  end
metadata CHANGED
@@ -1,134 +1,120 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jimson
3
- version: !ruby/object:Gem::Version
4
- version: 0.7.0
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.7.1
6
6
  platform: ruby
7
- authors:
8
- - Chris Kite
7
+ authors:
8
+ - Chris Kite
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-13 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: blankslate
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 2.1.2.3
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: 2.1.2.3
30
- - !ruby/object:Gem::Dependency
31
- name: rest-client
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: 1.6.3
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: 1.6.3
46
- - !ruby/object:Gem::Dependency
47
- name: multi_json
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 1.1.0
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.1.0
62
- - !ruby/object:Gem::Dependency
63
- name: rack
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '1.3'
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '1.3'
12
+
13
+ date: 2012-08-16 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: blankslate
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.1.2.3
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: rest-client
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.6.3
35
+ type: :runtime
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: multi_json
39
+ prerelease: false
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.0
46
+ type: :runtime
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: rack
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "1.3"
57
+ type: :runtime
58
+ version_requirements: *id004
78
59
  description:
79
60
  email:
80
61
  executables: []
62
+
81
63
  extensions: []
82
- extra_rdoc_files:
83
- - README.md
84
- files:
85
- - VERSION
86
- - LICENSE.txt
87
- - CHANGELOG.rdoc
88
- - README.md
89
- - Rakefile
90
- - lib/jimson/request.rb
91
- - lib/jimson/router.rb
92
- - lib/jimson/response.rb
93
- - lib/jimson/router/map.rb
94
- - lib/jimson/server.rb
95
- - lib/jimson/client/error.rb
96
- - lib/jimson/client.rb
97
- - lib/jimson/handler.rb
98
- - lib/jimson/server/error.rb
99
- - lib/jimson.rb
100
- - spec/spec_helper.rb
101
- - spec/router_spec.rb
102
- - spec/client_spec.rb
103
- - spec/handler_spec.rb
104
- - spec/server_spec.rb
64
+
65
+ extra_rdoc_files:
66
+ - README.md
67
+ files:
68
+ - VERSION
69
+ - LICENSE.txt
70
+ - CHANGELOG.rdoc
71
+ - README.md
72
+ - Rakefile
73
+ - lib/jimson.rb
74
+ - lib/jimson/request.rb
75
+ - lib/jimson/router.rb
76
+ - lib/jimson/response.rb
77
+ - lib/jimson/server.rb
78
+ - lib/jimson/client.rb
79
+ - lib/jimson/handler.rb
80
+ - lib/jimson/router/map.rb
81
+ - lib/jimson/client/error.rb
82
+ - lib/jimson/server/error.rb
83
+ - spec/spec_helper.rb
84
+ - spec/router_spec.rb
85
+ - spec/client_spec.rb
86
+ - spec/handler_spec.rb
87
+ - spec/server_spec.rb
105
88
  homepage: http://www.github.com/chriskite/jimson
106
89
  licenses: []
90
+
107
91
  post_install_message:
108
92
  rdoc_options: []
109
- require_paths:
110
- - lib
111
- required_ruby_version: !ruby/object:Gem::Requirement
93
+
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
112
97
  none: false
113
- requirements:
114
- - - ! '>='
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: "0"
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
103
  none: false
119
- requirements:
120
- - - ! '>='
121
- - !ruby/object:Gem::Version
122
- version: '0'
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: "0"
123
108
  requirements: []
109
+
124
110
  rubyforge_project:
125
- rubygems_version: 1.8.21
111
+ rubygems_version: 1.8.15
126
112
  signing_key:
127
113
  specification_version: 3
128
114
  summary: JSON-RPC 2.0 client and server
129
- test_files:
130
- - spec/spec_helper.rb
131
- - spec/router_spec.rb
132
- - spec/client_spec.rb
133
- - spec/handler_spec.rb
134
- - spec/server_spec.rb
115
+ test_files:
116
+ - spec/spec_helper.rb
117
+ - spec/router_spec.rb
118
+ - spec/client_spec.rb
119
+ - spec/handler_spec.rb
120
+ - spec/server_spec.rb