json-rpc-objects 0.4.3 → 0.4.4
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 +7 -0
- data/CHANGES.txt +5 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +63 -12
- data/LICENSE.txt +1 -1
- data/README.md +40 -41
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/json-rpc-objects.gemspec +25 -11
- data/lib/json-rpc-objects/error.rb +1 -1
- data/lib/json-rpc-objects/exceptions/invalid-code.rb +25 -0
- data/lib/json-rpc-objects/generic.rb +2 -2
- data/lib/json-rpc-objects/generic/error.rb +1 -1
- data/lib/json-rpc-objects/generic/object.rb +4 -5
- data/lib/json-rpc-objects/generic/request.rb +1 -1
- data/lib/json-rpc-objects/generic/response.rb +1 -1
- data/lib/json-rpc-objects/request.rb +4 -5
- data/lib/json-rpc-objects/response.rb +3 -4
- data/lib/json-rpc-objects/serializer.rb +1 -2
- data/lib/json-rpc-objects/serializer/marshal.rb +1 -1
- data/lib/json-rpc-objects/serializer/none.rb +1 -1
- data/lib/json-rpc-objects/utils.rb +6 -0
- data/lib/json-rpc-objects/utils/hash.rb +198 -0
- data/lib/json-rpc-objects/utils/object.rb +85 -0
- data/lib/json-rpc-objects/utils/string.rb +46 -0
- data/lib/json-rpc-objects/v10/error.rb +1 -1
- data/lib/json-rpc-objects/v10/request.rb +4 -5
- data/lib/json-rpc-objects/v10/response.rb +1 -1
- data/lib/json-rpc-objects/v10/tests/test.rb +1 -1
- data/lib/json-rpc-objects/v11/alt/error.rb +1 -1
- data/lib/json-rpc-objects/v11/alt/fakes/request.rb +1 -2
- data/lib/json-rpc-objects/v11/alt/fakes/response.rb +1 -2
- data/lib/json-rpc-objects/v11/alt/procedure-call.rb +4 -4
- data/lib/json-rpc-objects/v11/alt/procedure-parameter-description.rb +1 -1
- data/lib/json-rpc-objects/v11/alt/procedure-return.rb +2 -1
- data/lib/json-rpc-objects/v11/alt/request.rb +1 -1
- data/lib/json-rpc-objects/v11/alt/response.rb +1 -1
- data/lib/json-rpc-objects/v11/alt/service-description.rb +1 -1
- data/lib/json-rpc-objects/v11/alt/service-procedure-description.rb +2 -4
- data/lib/json-rpc-objects/v11/alt/tests/test.rb +1 -1
- data/lib/json-rpc-objects/v11/generic-types.rb +1 -1
- data/lib/json-rpc-objects/v11/wd/error.rb +5 -6
- data/lib/json-rpc-objects/v11/wd/extensions.rb +1 -1
- data/lib/json-rpc-objects/v11/wd/fakes/request.rb +1 -2
- data/lib/json-rpc-objects/v11/wd/fakes/response.rb +1 -2
- data/lib/json-rpc-objects/v11/wd/procedure-call.rb +13 -15
- data/lib/json-rpc-objects/v11/wd/procedure-parameter-description.rb +8 -8
- data/lib/json-rpc-objects/v11/wd/procedure-return.rb +4 -5
- data/lib/json-rpc-objects/v11/wd/request.rb +1 -1
- data/lib/json-rpc-objects/v11/wd/response.rb +1 -1
- data/lib/json-rpc-objects/v11/wd/service-description.rb +6 -8
- data/lib/json-rpc-objects/v11/wd/service-procedure-description.rb +8 -10
- data/lib/json-rpc-objects/v11/wd/tests/test.rb +1 -1
- data/lib/json-rpc-objects/v20/error.rb +6 -4
- data/lib/json-rpc-objects/v20/request.rb +6 -6
- data/lib/json-rpc-objects/v20/response.rb +2 -2
- data/lib/json-rpc-objects/v20/tests/test.rb +2 -2
- data/lib/json-rpc-objects/version.rb +18 -6
- data/spec/request_spec.rb +11 -0
- data/spec/spec_helper.rb +18 -0
- metadata +69 -51
@@ -1,8 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
4
|
require "json-rpc-objects/generic/request"
|
5
|
-
require "hash-utils/object"
|
6
5
|
|
7
6
|
##
|
8
7
|
# Main JSON-RPC Objects module.
|
@@ -134,7 +133,7 @@ module JsonRpcObjects
|
|
134
133
|
#
|
135
134
|
|
136
135
|
def __check_method
|
137
|
-
if not (@method.
|
136
|
+
if not (@method.kind_of? Symbol or @method.kind_of? String)
|
138
137
|
raise Exception::new("Service name must be Symbol or convertable to Symbol.")
|
139
138
|
end
|
140
139
|
end
|
@@ -144,7 +143,7 @@ module JsonRpcObjects
|
|
144
143
|
#
|
145
144
|
|
146
145
|
def __check_params
|
147
|
-
if not @params.
|
146
|
+
if not @params.kind_of? Array
|
148
147
|
raise Exception::new("Params must be Array.")
|
149
148
|
end
|
150
149
|
end
|
@@ -154,7 +153,7 @@ module JsonRpcObjects
|
|
154
153
|
#
|
155
154
|
|
156
155
|
def __normalize_method
|
157
|
-
if @method.
|
156
|
+
if @method.kind_of? String
|
158
157
|
@method = @method.to_sym
|
159
158
|
end
|
160
159
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
|
-
require "hash-utils/hash"
|
5
4
|
require "json-rpc-objects/v11/wd/request"
|
5
|
+
require "json-rpc-objects/utils"
|
6
6
|
|
7
7
|
##
|
8
8
|
# Main JSON-RPC Objects module.
|
@@ -60,9 +60,9 @@ module JsonRpcObjects
|
|
60
60
|
# property.
|
61
61
|
if data.include? :kwparams
|
62
62
|
@keyword_params = data[:kwparams]
|
63
|
-
|
63
|
+
JsonRpcObjects::Utils::Hash.keys_to_sym! @keyword_params
|
64
64
|
end
|
65
|
-
end
|
65
|
+
end
|
66
66
|
|
67
67
|
##
|
68
68
|
# Assigns the parameters settings.
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
|
-
require "hash-utils/array"
|
5
|
-
require "hash-utils/object"
|
6
4
|
require "json-rpc-objects/v11/alt/procedure-parameter-description"
|
7
5
|
require "json-rpc-objects/v11/wd/service-procedure-description"
|
8
6
|
|
@@ -50,7 +48,7 @@ module JsonRpcObjects
|
|
50
48
|
def check!
|
51
49
|
super()
|
52
50
|
|
53
|
-
if @params.
|
51
|
+
if @params.kind_of? Array and (not @params.all? { |v| v.type != JsonRpcObjects::V11::GenericTypes::Nil })
|
54
52
|
raise Exception::new("Nil return type isn't allowed for parameters.")
|
55
53
|
end
|
56
54
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
|
-
require "
|
5
|
-
require "hash-utils/hash"
|
4
|
+
require "json-rpc-objects/utils"
|
6
5
|
require "json-rpc-objects/generic"
|
7
6
|
require "json-rpc-objects/v10/error"
|
8
7
|
require "json-rpc-objects/v11/wd/extensions"
|
@@ -103,8 +102,8 @@ module JsonRpcObjects
|
|
103
102
|
def check!
|
104
103
|
self.normalize!
|
105
104
|
|
106
|
-
if not
|
107
|
-
raise
|
105
|
+
if not (100..999).include? @code
|
106
|
+
raise JsonRpcObjects::Exceptions::InvalidCode::new("Code must be between 100 and 999 including them.")
|
108
107
|
end
|
109
108
|
end
|
110
109
|
|
@@ -125,7 +124,7 @@ module JsonRpcObjects
|
|
125
124
|
data["error"] = @data
|
126
125
|
end
|
127
126
|
|
128
|
-
data.merge! @extensions
|
127
|
+
data.merge! JsonRpcObjects::Utils::Hash.map_keys(@extensions) { |k| k.to_s }
|
129
128
|
return data
|
130
129
|
end
|
131
130
|
|
@@ -1,10 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
|
-
require "
|
5
|
-
require "hash-utils/hash"
|
6
|
-
require "hash-utils/object"
|
7
|
-
require "hash-utils/string"
|
4
|
+
require "json-rpc-objects/utils"
|
8
5
|
require "json-rpc-objects/v10/request"
|
9
6
|
require "json-rpc-objects/v11/wd/extensions"
|
10
7
|
|
@@ -32,7 +29,6 @@ module JsonRpcObjects
|
|
32
29
|
#
|
33
30
|
|
34
31
|
class ProcedureCall < JsonRpcObjects::V10::Request
|
35
|
-
|
36
32
|
include Extensions
|
37
33
|
|
38
34
|
##
|
@@ -68,7 +64,7 @@ module JsonRpcObjects
|
|
68
64
|
def check!
|
69
65
|
super()
|
70
66
|
|
71
|
-
if not @keyword_params.nil? and not @keyword_params.
|
67
|
+
if not @keyword_params.nil? and not @keyword_params.kind_of? Hash
|
72
68
|
raise Exception::new("Keyword params must be Hash.")
|
73
69
|
end
|
74
70
|
end
|
@@ -99,7 +95,7 @@ module JsonRpcObjects
|
|
99
95
|
end
|
100
96
|
|
101
97
|
data.merge! @extensions
|
102
|
-
return
|
98
|
+
return JsonRpcObjects::Utils::Hash.map_keys!(data) { |k| k.to_s }
|
103
99
|
end
|
104
100
|
|
105
101
|
|
@@ -147,15 +143,18 @@ module JsonRpcObjects
|
|
147
143
|
# If named arguments used, assigns keys as symbols
|
148
144
|
# but keeps numeric arguments as integers
|
149
145
|
|
150
|
-
if @params.
|
146
|
+
if @params.kind_of? Hash
|
151
147
|
@params = @params.dup
|
152
|
-
@keyword_params =
|
153
|
-
|
148
|
+
@keyword_params = JsonRpcObjects::Utils::Hash.remove!(@params) do |k, v|
|
149
|
+
not JsonRpcObjects::Utils::String.numeric? k
|
150
|
+
end
|
151
|
+
|
152
|
+
@params = @params.sort_by { |i| i[0].to_i }.map { |i| i[1] }
|
154
153
|
else
|
155
154
|
@keyword_params = { }
|
156
155
|
end
|
157
156
|
|
158
|
-
|
157
|
+
JsonRpcObjects::Utils::Hash.keys_to_sym! @keyword_params
|
159
158
|
|
160
159
|
end
|
161
160
|
|
@@ -175,7 +174,7 @@ module JsonRpcObjects
|
|
175
174
|
params.merge! @keyword_params
|
176
175
|
end
|
177
176
|
|
178
|
-
data[:params] =
|
177
|
+
data[:params] = Utils::Hash.map_keys!(params) { |k| k.to_s }
|
179
178
|
end
|
180
179
|
|
181
180
|
##
|
@@ -183,7 +182,7 @@ module JsonRpcObjects
|
|
183
182
|
#
|
184
183
|
|
185
184
|
def __check_params
|
186
|
-
if not @params.nil? and not @params.
|
185
|
+
if not @params.nil? and not @params.kind_of? Array
|
187
186
|
raise Exception::new("Params must be Array.")
|
188
187
|
end
|
189
188
|
end
|
@@ -208,4 +207,3 @@ module JsonRpcObjects
|
|
208
207
|
end
|
209
208
|
end
|
210
209
|
end
|
211
|
-
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
4
|
require "json-rpc-objects/v11/generic-types"
|
5
5
|
require "json-rpc-objects/generic"
|
6
|
-
require "
|
6
|
+
require "json-rpc-objects/utils"
|
7
7
|
|
8
8
|
##
|
9
9
|
# Main JSON-RPC Objects module.
|
@@ -40,7 +40,7 @@ module JsonRpcObjects
|
|
40
40
|
# Maps type to object (class).
|
41
41
|
#
|
42
42
|
|
43
|
-
TYPE_TO_OBJECT = Hash::define({
|
43
|
+
TYPE_TO_OBJECT = Utils::Hash::define({
|
44
44
|
:num => Integer,
|
45
45
|
:str => String,
|
46
46
|
:arr => Array,
|
@@ -54,7 +54,7 @@ module JsonRpcObjects
|
|
54
54
|
# Maps object (class) to type.
|
55
55
|
#
|
56
56
|
|
57
|
-
OBJECT_TO_TYPE = Hash::define({
|
57
|
+
OBJECT_TO_TYPE = Utils::Hash::define({
|
58
58
|
Integer => :num,
|
59
59
|
String => :str,
|
60
60
|
Array => :arr,
|
@@ -100,11 +100,11 @@ module JsonRpcObjects
|
|
100
100
|
def check!
|
101
101
|
self.normalize!
|
102
102
|
|
103
|
-
if not @name.
|
103
|
+
if not @name.kind_of? Symbol
|
104
104
|
raise Exception::new("Parameter name must be Symbol or convertable to Symbol.")
|
105
105
|
end
|
106
106
|
|
107
|
-
if (not @type.nil?) and (not
|
107
|
+
if (not @type.nil?) and (not Utils::Object.kind_of_any?(@type, [GenericTypes::Any, GenericTypes::Nil, GenericTypes::Boolean, Integer, String, Array, Object]))
|
108
108
|
raise Exception::new("Type if defined can be only Any, Nil, Boolean, Integer, String, Array or Object.")
|
109
109
|
end
|
110
110
|
end
|
@@ -144,11 +144,11 @@ module JsonRpcObjects
|
|
144
144
|
#
|
145
145
|
|
146
146
|
def normalize!
|
147
|
-
if @name.
|
147
|
+
if @name.kind_of? String
|
148
148
|
@name = @name.to_sym
|
149
149
|
end
|
150
150
|
|
151
|
-
if
|
151
|
+
if Utils::Object.kind_of_any?(@type, [String, Symbol])
|
152
152
|
@type = __normalize_type
|
153
153
|
end
|
154
154
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
|
+
require "json-rpc-objects/utils"
|
4
5
|
require "json-rpc-objects/v10/response"
|
5
6
|
require "json-rpc-objects/v11/wd/error"
|
6
7
|
require "json-rpc-objects/v11/wd/extensions"
|
7
|
-
require "hash-utils/object"
|
8
|
-
require "hash-utils/hash"
|
9
8
|
|
10
9
|
##
|
11
10
|
# Main JSON-RPC Objects module.
|
@@ -92,7 +91,7 @@ module JsonRpcObjects
|
|
92
91
|
data["id"] = @id
|
93
92
|
end
|
94
93
|
|
95
|
-
data.merge! @extensions
|
94
|
+
data.merge! Utils::Hash.map_keys(@extensions) { |k| k.to_s }
|
96
95
|
return data
|
97
96
|
end
|
98
97
|
|
@@ -132,7 +131,7 @@ module JsonRpcObjects
|
|
132
131
|
#
|
133
132
|
|
134
133
|
def __create_error
|
135
|
-
if @error.
|
134
|
+
if @error.kind_of? Hash
|
136
135
|
@error = self.class::ERROR_CLASS::new(@error)
|
137
136
|
end
|
138
137
|
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin
|
2
|
+
# (c) 2011-2015 Martin Poljak (martin@poljak.cz)
|
3
3
|
|
4
4
|
require "addressable/uri"
|
5
5
|
require "json-rpc-objects/v11/wd/service-procedure-description"
|
6
6
|
require "json-rpc-objects/generic"
|
7
|
-
require "hash-utils/array"
|
8
|
-
require "hash-utils/object"
|
9
7
|
|
10
8
|
##
|
11
9
|
# Main JSON-RPC Objects module.
|
@@ -133,7 +131,7 @@ module JsonRpcObjects
|
|
133
131
|
def check!
|
134
132
|
self.normalize!
|
135
133
|
|
136
|
-
if not @name.
|
134
|
+
if not @name.kind_of? Symbol
|
137
135
|
raise Exception::new("Service name must be Symbol or convertable to Symbol.")
|
138
136
|
end
|
139
137
|
|
@@ -142,11 +140,11 @@ module JsonRpcObjects
|
|
142
140
|
end
|
143
141
|
|
144
142
|
if (not @procs.nil?)
|
145
|
-
if (not @procs.
|
143
|
+
if (not @procs.kind_of? Array) or (not @procs.all? { |v| v.kind_of? self.class::PROCEDURE_DESCRIPTION_CLASS })
|
146
144
|
raise Exception::new("If procs is defined, must be an Array of " << self.class::PROCEDURE_DESCRIPTION_CLASS.name << " objects.")
|
147
145
|
end
|
148
146
|
|
149
|
-
if @procs.
|
147
|
+
if @procs.kind_of? Array
|
150
148
|
@procs.each { |proc| proc.check! }
|
151
149
|
end
|
152
150
|
end
|
@@ -225,7 +223,7 @@ module JsonRpcObjects
|
|
225
223
|
@address = data[:address]
|
226
224
|
@procs = data[:procs]
|
227
225
|
|
228
|
-
if @procs.
|
226
|
+
if @procs.kind_of? Array
|
229
227
|
@procs = @procs.map { |v| self.class::PROCEDURE_DESCRIPTION_CLASS::new(v) }
|
230
228
|
end
|
231
229
|
end
|
@@ -235,7 +233,7 @@ module JsonRpcObjects
|
|
235
233
|
#
|
236
234
|
|
237
235
|
def normalize!
|
238
|
-
if @name.
|
236
|
+
if @name.kind_of? String
|
239
237
|
@name = @name.to_sym
|
240
238
|
end
|
241
239
|
|