json-rpc-objects 0.3.4 → 0.4.0
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/CHANGES.txt +6 -1
- data/README.md +39 -6
- data/VERSION +1 -1
- data/json-rpc-objects.gemspec +6 -2
- data/lib/json-rpc-objects/error.rb +2 -0
- data/lib/json-rpc-objects/generic.rb +2 -0
- data/lib/json-rpc-objects/generic/object.rb +41 -10
- data/lib/json-rpc-objects/request.rb +7 -3
- data/lib/json-rpc-objects/response.rb +7 -3
- data/lib/json-rpc-objects/serializer.rb +106 -0
- data/lib/json-rpc-objects/serializer/json.rb +56 -0
- data/lib/json-rpc-objects/serializer/marshal.rb +55 -0
- data/lib/json-rpc-objects/serializer/yaml.rb +56 -0
- data/lib/json-rpc-objects/v10/request.rb +3 -3
- data/lib/json-rpc-objects/v10/response.rb +10 -3
- data/lib/json-rpc-objects/v10/tests/test.rb +7 -6
- data/lib/json-rpc-objects/v11/alt/error.rb +1 -1
- data/lib/json-rpc-objects/v11/alt/tests/test.rb +12 -8
- data/lib/json-rpc-objects/v11/wd/error.rb +6 -5
- data/lib/json-rpc-objects/v11/wd/procedure-call.rb +6 -6
- data/lib/json-rpc-objects/v11/wd/procedure-parameter-description.rb +2 -2
- data/lib/json-rpc-objects/v11/wd/procedure-return.rb +8 -7
- data/lib/json-rpc-objects/v11/wd/service-description.rb +8 -8
- data/lib/json-rpc-objects/v11/wd/service-procedure-description.rb +6 -6
- data/lib/json-rpc-objects/v11/wd/tests/test.rb +12 -9
- data/lib/json-rpc-objects/v20/error.rb +3 -3
- data/lib/json-rpc-objects/v20/request.rb +5 -5
- data/lib/json-rpc-objects/v20/response.rb +4 -4
- data/lib/json-rpc-objects/v20/tests/test.rb +10 -6
- data/lib/json-rpc-objects/version.rb +5 -2
- metadata +7 -3
data/CHANGES.txt
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
|
2
|
+
0.4.0 (2011-07-20)
|
3
|
+
* multiple serializers support
|
4
|
+
* minor optimization of the version routine
|
5
|
+
* documentation corrections
|
6
|
+
|
2
7
|
0.3.4 (2011-07-18)
|
3
|
-
* dependency from yajl-ruby to multi_json for compatibility with all
|
8
|
+
* dependency from 'yajl-ruby' to 'multi_json' for compatibility with all
|
4
9
|
other major JSON libraries or unsupported platforms
|
5
10
|
* minor optimizations and corrections
|
6
11
|
* upgrade to modern 'hash-utils' version
|
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
JSON-RPC Objects
|
2
2
|
================
|
3
3
|
|
4
|
-
**JSON-RPC Objects**
|
5
|
-
objects with respect to specifications compliance and API
|
6
|
-
compatibility. It implements all versions of the protocol and
|
7
|
-
for ability to communicate by the same protocol version which
|
8
|
-
other side uses by a transparent way.
|
4
|
+
**JSON-RPC Objects** is complete implementation of by [JSON-RPC][1]
|
5
|
+
defined objects with respect to specifications compliance and API
|
6
|
+
backward compatibility. It implements all versions of the protocol and
|
7
|
+
support for ability to communicate by the same protocol version which
|
8
|
+
the other side uses by a transparent way.
|
9
9
|
|
10
10
|
It means, it implements following JSON-RPC versions:
|
11
11
|
|
@@ -28,7 +28,7 @@ homogenous. Application which can deal with 1.0 can deal with 2.0 too
|
|
28
28
|
without any funcionallity or logic lost.
|
29
29
|
|
30
30
|
### Usage
|
31
|
-
|
31
|
+
|
32
32
|
All object classes have three creating class methods:
|
33
33
|
|
34
34
|
* `#create(<some arguments>, opts = { })` – which creates new
|
@@ -89,6 +89,35 @@ neither 1.0 nor 2.0 implements these objects, so it can simply cause
|
|
89
89
|
Be limited by `Error`, `Request` and `Response` classes here or check
|
90
90
|
the protocol version using `#VERSION` class constant.
|
91
91
|
|
92
|
+
### Serializers
|
93
|
+
|
94
|
+
Multiple serializers support is implemented, so you aren't limited to
|
95
|
+
JSON[8] only, but you can use also built-in serializers to YAML[9] or
|
96
|
+
[Ruby marshaling][10] format. Also support for [BSON][11] serializing
|
97
|
+
format is available standalone through [`json-rpc-objects-bson`][12] gem.
|
98
|
+
|
99
|
+
You can set the default serializer for whole library session (both class
|
100
|
+
and instance of the class are supported):
|
101
|
+
|
102
|
+
require "json-rpc-objects/serializer/marshal"
|
103
|
+
|
104
|
+
JsonRpcObjects::default_serializer(JsonRpcObjects::Serializer::Marshal)
|
105
|
+
|
106
|
+
# it's setting default serializer for all new instances, without
|
107
|
+
# arguments it returns the default serializer
|
108
|
+
|
109
|
+
Or by individual object assigning (only instances are supported):
|
110
|
+
|
111
|
+
require "json-rpc-objects/serializer/marshal"
|
112
|
+
|
113
|
+
serializer = JsonRpcObjects::Serializer::Marshal::new
|
114
|
+
JsonRpcObjects::V10::Request::parse(data, serializer)
|
115
|
+
|
116
|
+
…and the same for constructor. The `#serializer` property is also
|
117
|
+
accessible, both readable and writable on all objects. By the same way,
|
118
|
+
serializer is received by the generic parsers `JsonRpcObjects::Request`
|
119
|
+
and so too.
|
120
|
+
|
92
121
|
Contributing
|
93
122
|
------------
|
94
123
|
|
@@ -113,3 +142,7 @@ further details.
|
|
113
142
|
[5]: http://groups.google.com/group/json-rpc/web/json-rpc-2-0
|
114
143
|
[6]: http://github.com/martinkozak/json-rpc-objects/issues
|
115
144
|
[7]: http://www.martinkozak.net/
|
145
|
+
|
146
|
+
[9]: http://www.yaml.org/
|
147
|
+
[10]: http://ruby-doc.org/core/classes/Marshal.html
|
148
|
+
[11]: http://bsonspec.org/
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/json-rpc-objects.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{json-rpc-objects}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Martin Kozák}]
|
12
|
-
s.date = %q{2011-07-
|
12
|
+
s.date = %q{2011-07-20}
|
13
13
|
s.email = %q{martinkozak@martinkozak.net}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
@@ -33,6 +33,10 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/json-rpc-objects/generic/response.rb",
|
34
34
|
"lib/json-rpc-objects/request.rb",
|
35
35
|
"lib/json-rpc-objects/response.rb",
|
36
|
+
"lib/json-rpc-objects/serializer.rb",
|
37
|
+
"lib/json-rpc-objects/serializer/json.rb",
|
38
|
+
"lib/json-rpc-objects/serializer/marshal.rb",
|
39
|
+
"lib/json-rpc-objects/serializer/yaml.rb",
|
36
40
|
"lib/json-rpc-objects/v10/error.rb",
|
37
41
|
"lib/json-rpc-objects/v10/request.rb",
|
38
42
|
"lib/json-rpc-objects/v10/response.rb",
|
@@ -2,8 +2,8 @@
|
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
4
|
require "hash-utils/hash"
|
5
|
-
require "multi_json"
|
6
5
|
require "abstract"
|
6
|
+
require "json-rpc-objects/serializer"
|
7
7
|
require "json-rpc-objects/version"
|
8
8
|
|
9
9
|
##
|
@@ -25,11 +25,20 @@ module JsonRpcObjects
|
|
25
25
|
|
26
26
|
class Object
|
27
27
|
|
28
|
+
##
|
29
|
+
# Holds assigned serializer.
|
30
|
+
# @since 0.4.0
|
31
|
+
#
|
32
|
+
|
33
|
+
attr_accessor :serializer
|
34
|
+
@serializer
|
35
|
+
|
28
36
|
##
|
29
37
|
# Creates new one.
|
30
38
|
#
|
31
39
|
# @param [Array] args some arguments
|
32
|
-
# @return [
|
40
|
+
# @return [JsonRpcObjects::Generic::Object] new object
|
41
|
+
# @abstract
|
33
42
|
#
|
34
43
|
|
35
44
|
def self.create(*args)
|
@@ -46,31 +55,52 @@ module JsonRpcObjects
|
|
46
55
|
end
|
47
56
|
|
48
57
|
##
|
49
|
-
# Parses
|
58
|
+
# Parses serialized string.
|
50
59
|
#
|
51
|
-
# @param [
|
60
|
+
# @param [Object] object with the serialized data
|
61
|
+
# @param [JsonRpcObjects::Serializer] serializer instance
|
62
|
+
# of serializer class
|
52
63
|
# @return [Generic::Object] of the given class
|
53
64
|
#
|
54
65
|
|
55
|
-
def self.parse(string)
|
56
|
-
self::new(
|
66
|
+
def self.parse(string, serializer = JsonRpcObjects::default_serializer)
|
67
|
+
self::new(serializer.deserialize(string), serializer)
|
57
68
|
end
|
58
|
-
|
69
|
+
|
59
70
|
##
|
60
|
-
# Converts
|
71
|
+
# Converts object to JSON. It's deprecated and ineffective now.
|
72
|
+
# Use the {#serialize} method.
|
73
|
+
#
|
74
|
+
# @see #serialize
|
61
75
|
# @return [String]
|
76
|
+
# @deprecated Since 0.4.0, replaced by +#serialize+.
|
62
77
|
#
|
63
78
|
|
64
79
|
def to_json
|
65
|
-
|
80
|
+
JsonRpcObjects::Serializer::JSON::new.serialize(self.output)
|
81
|
+
end
|
82
|
+
|
83
|
+
##
|
84
|
+
# Serializes the object by the serializer.
|
85
|
+
#
|
86
|
+
# @return [Object]
|
87
|
+
# @since 0.4.0
|
88
|
+
#
|
89
|
+
|
90
|
+
def serialize
|
91
|
+
@serializer.serialize(self.output)
|
66
92
|
end
|
67
93
|
|
68
94
|
##
|
69
95
|
# Constructor.
|
96
|
+
#
|
70
97
|
# @param [Hash] data for initializing the object
|
98
|
+
# @param [JsonRpcObjects::Serializer] serializer instance
|
99
|
+
# of serializer class
|
71
100
|
#
|
72
101
|
|
73
|
-
def initialize(data)
|
102
|
+
def initialize(data, serializer = JsonRpcObjects::default_serializer)
|
103
|
+
@serializer = serializer
|
74
104
|
self.data = data
|
75
105
|
self.check!
|
76
106
|
end
|
@@ -127,3 +157,4 @@ module JsonRpcObjects
|
|
127
157
|
end
|
128
158
|
end
|
129
159
|
end
|
160
|
+
|
@@ -1,7 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
2
4
|
require "json-rpc-objects/v20/request"
|
5
|
+
require "json-rpc-objects/serializer"
|
3
6
|
require "hash-utils/object"
|
4
|
-
require "multi_json"
|
5
7
|
|
6
8
|
##
|
7
9
|
# Main JSON-RPC Objects module.
|
@@ -43,10 +45,12 @@ module JsonRpcObjects
|
|
43
45
|
# @param [String] string JSON string for parse
|
44
46
|
# @param [:wd, :alt] default_v11 type of the eventually returned
|
45
47
|
# 1.1 object
|
48
|
+
# @param [JsonRpcObjects::Serializer] serializer instance of
|
49
|
+
# serializer class
|
46
50
|
#
|
47
51
|
|
48
|
-
def self.parse(string, default_v11 = :wd)
|
49
|
-
data =
|
52
|
+
def self.parse(string, default_v11 = :wd, serializer = JsonRpcObjects::default_serializer)
|
53
|
+
data = serializer.deserialize(string)
|
50
54
|
|
51
55
|
if not data.hash?
|
52
56
|
raise Exception::new("Data in JSON string aren't object.")
|
@@ -1,7 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
2
4
|
require "json-rpc-objects/v20/response"
|
5
|
+
require "json-rpc-objects/serializer"
|
3
6
|
require "hash-utils/object"
|
4
|
-
require "multi_json"
|
5
7
|
|
6
8
|
##
|
7
9
|
# Main JSON-RPC Objects module.
|
@@ -42,10 +44,12 @@ module JsonRpcObjects
|
|
42
44
|
# @param [String] string JSON string for parse
|
43
45
|
# @param [:wd, :alt] default_v11 type of the eventually returned
|
44
46
|
# 1.1 object
|
47
|
+
# @param [JsonRpcObjects::Serializer] serializer instance of
|
48
|
+
# serializer class
|
45
49
|
#
|
46
50
|
|
47
|
-
def self.parse(string, default_v11 = :wd)
|
48
|
-
data =
|
51
|
+
def self.parse(string, default_v11 = :wd, serializer = JsonRpcObjects::default_serializer)
|
52
|
+
data = serializer.deserialize(string)
|
49
53
|
|
50
54
|
if not data.hash?
|
51
55
|
raise Exception::new("Data in JSON string aren't object.")
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
4
|
+
require "json-rpc-objects/serializer/json"
|
5
|
+
require "abstract"
|
6
|
+
|
7
|
+
##
|
8
|
+
# Main JSON-RPC Objects module.
|
9
|
+
#
|
10
|
+
|
11
|
+
module JsonRpcObjects
|
12
|
+
|
13
|
+
##
|
14
|
+
# Holds the serializer.
|
15
|
+
#
|
16
|
+
|
17
|
+
@@serializer = JsonRpcObjects::Serializer::JSON::new
|
18
|
+
|
19
|
+
##
|
20
|
+
# Sets the object serializer.
|
21
|
+
#
|
22
|
+
# @param [Class, Module] serializer the serializer module
|
23
|
+
# @since 0.4.0
|
24
|
+
#
|
25
|
+
|
26
|
+
def self.default_serializer(mod = nil)
|
27
|
+
if mod.kind_of? Class
|
28
|
+
mod = mod::new
|
29
|
+
end
|
30
|
+
|
31
|
+
@@serializer = mod if not mod.nil?
|
32
|
+
@@serializer # returns
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# Serializes data.
|
37
|
+
#
|
38
|
+
# @param [Object] data some data
|
39
|
+
# @return [Object] object in serialized form
|
40
|
+
# @since 0.4.0
|
41
|
+
#
|
42
|
+
|
43
|
+
def self.serialize(data)
|
44
|
+
@@serializer.serialize(data)
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# Deserializes data.
|
49
|
+
#
|
50
|
+
# @param [Object] data data in serialized form
|
51
|
+
# @return [Object] deserialized data
|
52
|
+
# @since 0.4.0
|
53
|
+
#
|
54
|
+
|
55
|
+
def self.deserialize(data)
|
56
|
+
@@serializer.deserialize(data)
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
##
|
61
|
+
# Abstract serializer class.
|
62
|
+
#
|
63
|
+
# @since 0.4.0
|
64
|
+
# @abstract
|
65
|
+
#
|
66
|
+
|
67
|
+
class Serializer
|
68
|
+
|
69
|
+
##
|
70
|
+
# Constructor.
|
71
|
+
#
|
72
|
+
|
73
|
+
def initialize
|
74
|
+
if self.instance_of? Serializer
|
75
|
+
not_implemented
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
##
|
80
|
+
# Serializes data.
|
81
|
+
#
|
82
|
+
# @param [Object] data some data
|
83
|
+
# @return [Object] object in serialized form
|
84
|
+
# @abstract
|
85
|
+
#
|
86
|
+
|
87
|
+
def serialize(data)
|
88
|
+
not_implemented
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# Deserializes data.
|
93
|
+
#
|
94
|
+
# @param [Object] data data in serialized form
|
95
|
+
# @return [Object] deserialized data
|
96
|
+
# @abstract
|
97
|
+
#
|
98
|
+
|
99
|
+
def deserialize(data)
|
100
|
+
not_implemented
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
4
|
+
require "json-rpc-objects/serializer"
|
5
|
+
require "multi_json"
|
6
|
+
|
7
|
+
##
|
8
|
+
# Main JSON-RPC Objects module.
|
9
|
+
#
|
10
|
+
|
11
|
+
module JsonRpcObjects
|
12
|
+
|
13
|
+
##
|
14
|
+
# Abstract serializer class.
|
15
|
+
#
|
16
|
+
# @since 0.4.0
|
17
|
+
# @abstract
|
18
|
+
#
|
19
|
+
|
20
|
+
class Serializer
|
21
|
+
|
22
|
+
##
|
23
|
+
# JSON serializer using +multi_json+.
|
24
|
+
# @since 0.4.0
|
25
|
+
#
|
26
|
+
|
27
|
+
class JSON < Serializer
|
28
|
+
|
29
|
+
##
|
30
|
+
# Serializes data.
|
31
|
+
#
|
32
|
+
# @param [Object] data some data
|
33
|
+
# @return [Object] object in serialized form
|
34
|
+
#
|
35
|
+
|
36
|
+
def serialize(data)
|
37
|
+
MultiJson.encode(data)
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Deserializes data.
|
42
|
+
#
|
43
|
+
# @param [Object] data data in serialized form
|
44
|
+
# @return [Object] deserialized data
|
45
|
+
#
|
46
|
+
|
47
|
+
def deserialize(data)
|
48
|
+
MultiJson.decode(data)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
4
|
+
require "json-rpc-objects/serializer"
|
5
|
+
|
6
|
+
##
|
7
|
+
# Main JSON-RPC Objects module.
|
8
|
+
#
|
9
|
+
|
10
|
+
module JsonRpcObjects
|
11
|
+
|
12
|
+
##
|
13
|
+
# Abstract serializer class.
|
14
|
+
#
|
15
|
+
# @since 0.4.0
|
16
|
+
# @abstract
|
17
|
+
#
|
18
|
+
|
19
|
+
class Serializer
|
20
|
+
|
21
|
+
##
|
22
|
+
# +Marshal+ serializer using internal Ruby marshaling.
|
23
|
+
# @since 0.4.0
|
24
|
+
#
|
25
|
+
|
26
|
+
class Marshal < Serializer
|
27
|
+
|
28
|
+
##
|
29
|
+
# Serializes data.
|
30
|
+
#
|
31
|
+
# @param [Object] data some data
|
32
|
+
# @return [Object] object in serialized form
|
33
|
+
#
|
34
|
+
|
35
|
+
def serialize(data)
|
36
|
+
::Marshal.dump(data)
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Deserializes data.
|
41
|
+
#
|
42
|
+
# @param [Object] data data in serialized form
|
43
|
+
# @return [Object] deserialized data
|
44
|
+
#
|
45
|
+
|
46
|
+
def deserialize(data)
|
47
|
+
::Marshal.load(data)
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
4
|
+
require "json-rpc-objects/serializer"
|
5
|
+
require "yaml"
|
6
|
+
|
7
|
+
##
|
8
|
+
# Main JSON-RPC Objects module.
|
9
|
+
#
|
10
|
+
|
11
|
+
module JsonRpcObjects
|
12
|
+
|
13
|
+
##
|
14
|
+
# Abstract serializer class.
|
15
|
+
#
|
16
|
+
# @since 0.4.0
|
17
|
+
# @abstract
|
18
|
+
#
|
19
|
+
|
20
|
+
class Serializer
|
21
|
+
|
22
|
+
##
|
23
|
+
# YAML serializer using internal Ruby YAML.
|
24
|
+
# @since 0.4.0
|
25
|
+
#
|
26
|
+
|
27
|
+
class YAML < Serializer
|
28
|
+
|
29
|
+
##
|
30
|
+
# Serializes data.
|
31
|
+
#
|
32
|
+
# @param [Object] data some data
|
33
|
+
# @return [Object] object in serialized form
|
34
|
+
#
|
35
|
+
|
36
|
+
def serialize(data)
|
37
|
+
::YAML.dump(data)
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Deserializes data.
|
42
|
+
#
|
43
|
+
# @param [Object] data data in serialized form
|
44
|
+
# @return [Object] deserialized data
|
45
|
+
#
|
46
|
+
|
47
|
+
def deserialize(data)
|
48
|
+
::YAML.load(data)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
@@ -97,10 +97,17 @@ module JsonRpcObjects
|
|
97
97
|
|
98
98
|
def output
|
99
99
|
self.check!
|
100
|
+
|
101
|
+
if @error.nil?
|
102
|
+
error = nil
|
103
|
+
else
|
104
|
+
error = @error.output
|
105
|
+
end
|
106
|
+
|
100
107
|
data = {
|
101
|
-
|
102
|
-
|
103
|
-
|
108
|
+
"result" => @result,
|
109
|
+
"error" => error,
|
110
|
+
"id" => @id
|
104
111
|
}
|
105
112
|
|
106
113
|
return data
|
@@ -2,21 +2,22 @@
|
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
4
|
$:.push("../../..")
|
5
|
+
require "json-rpc-objects/serializer/marshal"
|
6
|
+
JsonRpcObjects::default_serializer(JsonRpcObjects::Serializer::Marshal)
|
5
7
|
|
6
8
|
require "../request"
|
7
9
|
req = JsonRpcObjects::V10::Request::create(:alfa, [:beta], :id => 12345)
|
8
|
-
puts req.
|
10
|
+
puts req.serialize
|
9
11
|
|
10
12
|
require "../response"
|
11
13
|
res = JsonRpcObjects::V10::Response::create(true, nil, :id => 12345)
|
12
|
-
puts res.
|
14
|
+
puts res.serialize
|
13
15
|
|
14
16
|
require "../response"
|
15
17
|
res = JsonRpcObjects::V10::Response::create(nil, "some problem", :id => 12345)
|
16
|
-
puts res.
|
17
|
-
|
18
|
+
puts res.serialize
|
18
19
|
|
19
20
|
require "../../request"
|
20
|
-
puts JsonRpcObjects::Request::parse(req.
|
21
|
+
puts JsonRpcObjects::Request::parse(req.serialize).inspect
|
21
22
|
require "../../response"
|
22
|
-
puts JsonRpcObjects::Response::parse(res.
|
23
|
+
puts JsonRpcObjects::Response::parse(res.serialize).inspect
|
@@ -3,39 +3,43 @@
|
|
3
3
|
|
4
4
|
$:.push("../../../..")
|
5
5
|
|
6
|
+
require "json-rpc-objects/serializer/marshal"
|
7
|
+
JsonRpcObjects::default_serializer(JsonRpcObjects::Serializer::Marshal)
|
8
|
+
|
9
|
+
|
6
10
|
require "../procedure-call"
|
7
11
|
req = JsonRpcObjects::V11::Alt::ProcedureCall::create(:alfa, [:foo, :bar], :kwparams => {"0" => :beta, "something" => :alfa}, :id => 12345, :"$whatever" => false)
|
8
|
-
puts req.
|
12
|
+
puts req.serialize
|
9
13
|
|
10
14
|
require "../error"
|
11
15
|
err = JsonRpcObjects::V11::Alt::Error::create(200, "some problem")
|
12
16
|
|
13
17
|
require "../procedure-return"
|
14
18
|
res = JsonRpcObjects::V11::Alt::ProcedureReturn::create(nil, err, :id => 12345)
|
15
|
-
puts res.
|
19
|
+
puts res.serialize
|
16
20
|
res = JsonRpcObjects::V11::Alt::ProcedureReturn::create(true, nil, :id => 12345)
|
17
|
-
puts res.
|
21
|
+
puts res.serialize
|
18
22
|
|
19
23
|
require "../service-description"
|
20
24
|
sdesc = JsonRpcObjects::V11::Alt::ServiceDescription::create(:alfa, 100)
|
21
|
-
puts sdesc.
|
25
|
+
puts sdesc.serialize
|
22
26
|
|
23
27
|
require "../service-procedure-description"
|
24
28
|
sproc = JsonRpcObjects::V11::Alt::ServiceProcedureDescription::create(:some_proc)
|
25
29
|
sdesc << sproc
|
26
|
-
puts sdesc.
|
30
|
+
puts sdesc.serialize
|
27
31
|
|
28
32
|
require "../procedure-parameter-description"
|
29
33
|
sparam1 = JsonRpcObjects::V11::Alt::ProcedureParameterDescription::create(:param1, :type => :str)
|
30
34
|
sparam2 = JsonRpcObjects::V11::Alt::ProcedureParameterDescription::create(:param2, :type => JsonRpcObjects)
|
31
35
|
sproc << sparam1
|
32
36
|
sproc << sparam2
|
33
|
-
puts sdesc.
|
37
|
+
puts sdesc.serialize
|
34
38
|
|
35
39
|
|
36
40
|
require "../../../request"
|
37
|
-
puts JsonRpcObjects::Request::parse(req.
|
41
|
+
puts JsonRpcObjects::Request::parse(req.serialize).inspect
|
38
42
|
require "../../../response"
|
39
|
-
puts JsonRpcObjects::Response::parse(res.
|
43
|
+
puts JsonRpcObjects::Response::parse(res.serialize, :alt).inspect
|
40
44
|
|
41
45
|
puts req.class::version.response::create(25)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
4
|
require "hash-utils/numeric"
|
5
|
+
require "hash-utils/hash"
|
5
6
|
require "json-rpc-objects/generic"
|
6
7
|
require "json-rpc-objects/v10/error"
|
7
8
|
require "json-rpc-objects/v11/wd/extensions"
|
@@ -115,16 +116,16 @@ module JsonRpcObjects
|
|
115
116
|
def output
|
116
117
|
self.check!
|
117
118
|
data = {
|
118
|
-
|
119
|
-
|
120
|
-
|
119
|
+
"name" => "JSONRPCError",
|
120
|
+
"code" => @code,
|
121
|
+
"message" => @message
|
121
122
|
}
|
122
123
|
|
123
124
|
if not @data.nil?
|
124
|
-
data[
|
125
|
+
data["error"] = @data
|
125
126
|
end
|
126
127
|
|
127
|
-
data.merge! @extensions
|
128
|
+
data.merge! @extensions.map_keys { |k| k.to_s }
|
128
129
|
return data
|
129
130
|
end
|
130
131
|
|
@@ -45,13 +45,13 @@ module JsonRpcObjects
|
|
45
45
|
# Holds JSON-RPC version specification.
|
46
46
|
#
|
47
47
|
|
48
|
-
VERSION_NUMBER =
|
48
|
+
VERSION_NUMBER = "1.1"
|
49
49
|
|
50
50
|
##
|
51
51
|
# Holds JSON-RPC version member identification.
|
52
52
|
#
|
53
53
|
|
54
|
-
VERSION_MEMBER =
|
54
|
+
VERSION_MEMBER = "version"
|
55
55
|
|
56
56
|
##
|
57
57
|
# Holds keyword parameters.
|
@@ -99,7 +99,7 @@ module JsonRpcObjects
|
|
99
99
|
end
|
100
100
|
|
101
101
|
data.merge! @extensions
|
102
|
-
return data
|
102
|
+
return data.map_keys! { |k| k.to_s }
|
103
103
|
end
|
104
104
|
|
105
105
|
|
@@ -168,14 +168,14 @@ module JsonRpcObjects
|
|
168
168
|
|
169
169
|
if not @params.nil?
|
170
170
|
@params.each_index do |i|
|
171
|
-
params[i.to_s
|
171
|
+
params[i.to_s] = @params[i]
|
172
172
|
end
|
173
173
|
end
|
174
174
|
if not @keyword_params.nil?
|
175
175
|
params.merge! @keyword_params
|
176
176
|
end
|
177
177
|
|
178
|
-
data[:params] = params
|
178
|
+
data[:params] = params.map_keys! { |k| k.to_s }
|
179
179
|
end
|
180
180
|
|
181
181
|
##
|
@@ -201,7 +201,7 @@ module JsonRpcObjects
|
|
201
201
|
#
|
202
202
|
|
203
203
|
def __delete_version(data)
|
204
|
-
data.delete(self.class::VERSION_MEMBER)
|
204
|
+
data.delete(self.class::VERSION_MEMBER.to_sym)
|
205
205
|
end
|
206
206
|
|
207
207
|
end
|
@@ -116,10 +116,10 @@ module JsonRpcObjects
|
|
116
116
|
|
117
117
|
def output
|
118
118
|
self.check!
|
119
|
-
data = {
|
119
|
+
data = { "name" => @name.to_s }
|
120
120
|
|
121
121
|
if not @type.nil?
|
122
|
-
data[
|
122
|
+
data["type"] = __object_to_type.to_s
|
123
123
|
end
|
124
124
|
|
125
125
|
return data
|
@@ -5,6 +5,7 @@ require "json-rpc-objects/v10/response"
|
|
5
5
|
require "json-rpc-objects/v11/wd/error"
|
6
6
|
require "json-rpc-objects/v11/wd/extensions"
|
7
7
|
require "hash-utils/object"
|
8
|
+
require "hash-utils/hash"
|
8
9
|
|
9
10
|
##
|
10
11
|
# Main JSON-RPC Objects module.
|
@@ -43,13 +44,13 @@ module JsonRpcObjects
|
|
43
44
|
# Holds JSON-RPC version specification.
|
44
45
|
#
|
45
46
|
|
46
|
-
VERSION_NUMBER =
|
47
|
+
VERSION_NUMBER = "1.1"
|
47
48
|
|
48
49
|
##
|
49
50
|
# Holds JSON-RPC version member identification.
|
50
51
|
#
|
51
52
|
|
52
|
-
VERSION_MEMBER =
|
53
|
+
VERSION_MEMBER = "version"
|
53
54
|
|
54
55
|
##
|
55
56
|
# Identifies the error object class.
|
@@ -80,18 +81,18 @@ module JsonRpcObjects
|
|
80
81
|
__assign_version(data)
|
81
82
|
|
82
83
|
if not @result.nil?
|
83
|
-
data[
|
84
|
+
data["result"] = @result
|
84
85
|
end
|
85
86
|
|
86
87
|
if not @error.nil?
|
87
|
-
data[
|
88
|
+
data["error"] = @error.output
|
88
89
|
end
|
89
90
|
|
90
91
|
if not @id.nil?
|
91
|
-
data[
|
92
|
+
data["id"] = @id
|
92
93
|
end
|
93
94
|
|
94
|
-
data.merge! @extensions
|
95
|
+
data.merge! @extensions.map_keys { |k| k.to_s }
|
95
96
|
return data
|
96
97
|
end
|
97
98
|
|
@@ -149,7 +150,7 @@ module JsonRpcObjects
|
|
149
150
|
#
|
150
151
|
|
151
152
|
def __delete_version(data)
|
152
|
-
data.delete(self.class::VERSION_MEMBER)
|
153
|
+
data.delete(self.class::VERSION_MEMBER.to_sym)
|
153
154
|
end
|
154
155
|
|
155
156
|
end
|
@@ -161,29 +161,29 @@ module JsonRpcObjects
|
|
161
161
|
self.check!
|
162
162
|
|
163
163
|
data = {
|
164
|
-
|
165
|
-
|
166
|
-
|
164
|
+
"sdversion" => "1.0",
|
165
|
+
"name" => @name.to_s,
|
166
|
+
"id" => @id.to_s
|
167
167
|
}
|
168
168
|
|
169
169
|
if not @version.nil?
|
170
|
-
data[
|
170
|
+
data["version"] = @version
|
171
171
|
end
|
172
172
|
|
173
173
|
if not @summary.nil?
|
174
|
-
data[
|
174
|
+
data["summary"] = @summary
|
175
175
|
end
|
176
176
|
|
177
177
|
if not @help.nil?
|
178
|
-
data[
|
178
|
+
data["help"] = @help.to_s
|
179
179
|
end
|
180
180
|
|
181
181
|
if not @address.nil?
|
182
|
-
data[
|
182
|
+
data["address"] = @address.to_s
|
183
183
|
end
|
184
184
|
|
185
185
|
if not @procs.nil?
|
186
|
-
data[
|
186
|
+
data["procs"] = @procs.map { |i| i.output }
|
187
187
|
end
|
188
188
|
|
189
189
|
return data
|
@@ -147,26 +147,26 @@ module JsonRpcObjects
|
|
147
147
|
|
148
148
|
def output
|
149
149
|
self.check!
|
150
|
-
data = {
|
150
|
+
data = { "name" => @name.to_s }
|
151
151
|
|
152
152
|
if not @summary.nil?
|
153
|
-
data[
|
153
|
+
data["summary"] = @summary
|
154
154
|
end
|
155
155
|
|
156
156
|
if not @help.nil?
|
157
|
-
data[
|
157
|
+
data["help"] = @help.to_s
|
158
158
|
end
|
159
159
|
|
160
160
|
if not @idempotent.nil?
|
161
|
-
data[
|
161
|
+
data["idempotent"] = @idempotent
|
162
162
|
end
|
163
163
|
|
164
164
|
if not @params.nil?
|
165
|
-
data[
|
165
|
+
data["params"] = @params.map { |i| i.output }
|
166
166
|
end
|
167
167
|
|
168
168
|
if not @return.nil?
|
169
|
-
data[
|
169
|
+
data["return"] = @return.output
|
170
170
|
end
|
171
171
|
|
172
172
|
return data
|
@@ -3,39 +3,42 @@
|
|
3
3
|
|
4
4
|
$:.push("../../../..")
|
5
5
|
|
6
|
+
require "json-rpc-objects/serializer/marshal"
|
7
|
+
JsonRpcObjects::default_serializer(JsonRpcObjects::Serializer::Marshal)
|
8
|
+
|
9
|
+
|
6
10
|
require "../procedure-call"
|
7
11
|
req = JsonRpcObjects::V11::WD::ProcedureCall::create(:alfa, {"0" => :beta, "something" => :alfa}, :id => 12345, :"$whatever" => false)
|
8
|
-
puts req.
|
12
|
+
puts req.serialize
|
9
13
|
|
10
14
|
require "../error"
|
11
15
|
err = JsonRpcObjects::V11::WD::Error::create(200, "some problem")
|
12
16
|
|
13
17
|
require "../procedure-return"
|
14
18
|
res = JsonRpcObjects::V11::WD::ProcedureReturn::create(nil, err, :id => 12345)
|
15
|
-
puts res.
|
19
|
+
puts res.serialize
|
16
20
|
res = JsonRpcObjects::V11::WD::ProcedureReturn::create(true, nil, :id => 12345)
|
17
|
-
puts res.
|
21
|
+
puts res.serialize
|
18
22
|
|
19
23
|
require "../service-description"
|
20
24
|
sdesc = JsonRpcObjects::V11::WD::ServiceDescription::create(:alfa, 100, :version => "1.2.34")
|
21
|
-
puts sdesc.
|
25
|
+
puts sdesc.serialize
|
22
26
|
|
23
27
|
require "../service-procedure-description"
|
24
28
|
sproc = JsonRpcObjects::V11::WD::ServiceProcedureDescription::create(:some_proc)
|
25
29
|
sdesc << sproc
|
26
|
-
puts sdesc.
|
30
|
+
puts sdesc.serialize
|
27
31
|
|
28
32
|
require "../procedure-parameter-description"
|
29
33
|
sparam1 = JsonRpcObjects::V11::WD::ProcedureParameterDescription::create(:param1, :type => :str)
|
30
34
|
sparam2 = JsonRpcObjects::V11::WD::ProcedureParameterDescription::create(:param2, :type => JsonRpcObjects)
|
31
35
|
sproc << sparam1
|
32
36
|
sproc << sparam2
|
33
|
-
puts sdesc.
|
34
|
-
|
37
|
+
puts sdesc.serialize
|
35
38
|
|
36
39
|
require "../../../request"
|
37
|
-
puts JsonRpcObjects::Request::parse(req.
|
40
|
+
puts JsonRpcObjects::Request::parse(req.serialize).inspect
|
38
41
|
require "../../../response"
|
39
|
-
puts JsonRpcObjects::Response::parse(res.
|
42
|
+
puts JsonRpcObjects::Response::parse(res.serialize).inspect
|
40
43
|
|
41
44
|
puts req.class::version.response::create(25)
|
@@ -55,9 +55,9 @@ module JsonRpcObjects
|
|
55
55
|
def output
|
56
56
|
result = super()
|
57
57
|
|
58
|
-
if result.include?
|
59
|
-
result[
|
60
|
-
result.delete(
|
58
|
+
if result.include? "error"
|
59
|
+
result["data"] = result["error"]
|
60
|
+
result.delete("error")
|
61
61
|
end
|
62
62
|
|
63
63
|
return result
|
@@ -33,13 +33,13 @@ module JsonRpcObjects
|
|
33
33
|
# Holds JSON-RPC version specification.
|
34
34
|
#
|
35
35
|
|
36
|
-
VERSION_NUMBER =
|
36
|
+
VERSION_NUMBER = "2.0"
|
37
37
|
|
38
38
|
##
|
39
39
|
# Holds JSON-RPC version member identification.
|
40
40
|
#
|
41
41
|
|
42
|
-
VERSION_MEMBER =
|
42
|
+
VERSION_MEMBER = "jsonrpc"
|
43
43
|
|
44
44
|
##
|
45
45
|
# Indicates ID has been set.
|
@@ -68,9 +68,9 @@ module JsonRpcObjects
|
|
68
68
|
result = super()
|
69
69
|
|
70
70
|
if @_id_set and @id.nil?
|
71
|
-
result[
|
71
|
+
result["id"] = nil
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
return result
|
75
75
|
end
|
76
76
|
|
@@ -119,7 +119,7 @@ module JsonRpcObjects
|
|
119
119
|
if not @params.nil? and not @params.empty?
|
120
120
|
data[:params] = @params
|
121
121
|
elsif not @keyword_params.nil? and not @keyword_params.empty?
|
122
|
-
data[:params] = @keyword_params
|
122
|
+
data[:params] = @keyword_params.map_keys { |k| k.to_s }
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
@@ -39,13 +39,13 @@ module JsonRpcObjects
|
|
39
39
|
# Holds JSON-RPC version specification.
|
40
40
|
#
|
41
41
|
|
42
|
-
VERSION_NUMBER =
|
42
|
+
VERSION_NUMBER = "2.0"
|
43
43
|
|
44
44
|
##
|
45
45
|
# Holds JSON-RPC version member identification.
|
46
46
|
#
|
47
47
|
|
48
|
-
VERSION_MEMBER =
|
48
|
+
VERSION_MEMBER = "jsonrpc"
|
49
49
|
|
50
50
|
##
|
51
51
|
# Indicates ID has been set.
|
@@ -74,7 +74,7 @@ module JsonRpcObjects
|
|
74
74
|
result = super()
|
75
75
|
|
76
76
|
if @_id_set and @id.nil?
|
77
|
-
result[
|
77
|
+
result["id"] = nil
|
78
78
|
end
|
79
79
|
|
80
80
|
return result
|
@@ -100,7 +100,7 @@ module JsonRpcObjects
|
|
100
100
|
#
|
101
101
|
|
102
102
|
def __assign_version(data)
|
103
|
-
data[
|
103
|
+
data["jsonrpc"] = "2.0"
|
104
104
|
end
|
105
105
|
|
106
106
|
end
|
@@ -3,24 +3,28 @@
|
|
3
3
|
|
4
4
|
$:.push("../../..")
|
5
5
|
|
6
|
+
require "json-rpc-objects/serializer/marshal"
|
7
|
+
JsonRpcObjects::default_serializer(JsonRpcObjects::Serializer::Marshal)
|
8
|
+
|
9
|
+
|
6
10
|
require "../request"
|
7
11
|
req = JsonRpcObjects::V20::Request::create(:alfa, {:alfa => :beta}, :id => :"12345", :"$whatever" => false)
|
8
|
-
puts req.
|
12
|
+
puts req.serialize
|
9
13
|
req = JsonRpcObjects::V20::Request::create(:alfa, [:beta], :"version" => :"1.0")
|
10
|
-
puts req.
|
14
|
+
puts req.serialize
|
11
15
|
|
12
16
|
require "../error"
|
13
17
|
err = JsonRpcObjects::V20::Error::create(200, "some problem", :data => "Additional data.")
|
14
18
|
|
15
19
|
require "../response"
|
16
20
|
res = JsonRpcObjects::V20::Response::create(nil, err, :id => 12345)
|
17
|
-
puts res.
|
21
|
+
puts res.serialize
|
18
22
|
res = JsonRpcObjects::V20::Response::create(true, nil, :id => 12345)
|
19
|
-
puts res.
|
23
|
+
puts res.serialize
|
20
24
|
|
21
25
|
require "../../request"
|
22
|
-
puts JsonRpcObjects::Request::parse(req.
|
26
|
+
puts JsonRpcObjects::Request::parse(req.serialize).inspect
|
23
27
|
require "../../response"
|
24
|
-
puts JsonRpcObjects::Response::parse(res.
|
28
|
+
puts JsonRpcObjects::Response::parse(res.serialize).inspect
|
25
29
|
|
26
30
|
puts req.class::version.response::create(25)
|
@@ -1,5 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
2
4
|
require "hash-utils/object"
|
5
|
+
require "hash-utils/module"
|
3
6
|
|
4
7
|
##
|
5
8
|
# Main JSON-RPC Objects module.
|
@@ -76,7 +79,7 @@ module JsonRpcObjects
|
|
76
79
|
class_name.gsub!(self.class::CLASS_NAME_GENERATOR) { |s| s[1].chr.upcase }
|
77
80
|
|
78
81
|
# Module name
|
79
|
-
module_name = @module.name
|
82
|
+
module_name = @module.name + "::" + class_name
|
80
83
|
|
81
84
|
# File path
|
82
85
|
file_path = "x" << module_name
|
@@ -90,7 +93,7 @@ module JsonRpcObjects
|
|
90
93
|
@@files[file_path] = true
|
91
94
|
end
|
92
95
|
|
93
|
-
return
|
96
|
+
return Module.get_module(module_name)
|
94
97
|
end
|
95
98
|
|
96
99
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: json-rpc-objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.4.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- "Martin Koz\xC3\xA1k"
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
13
|
+
date: 2011-07-20 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: hash-utils
|
@@ -105,6 +105,10 @@ files:
|
|
105
105
|
- lib/json-rpc-objects/generic/response.rb
|
106
106
|
- lib/json-rpc-objects/request.rb
|
107
107
|
- lib/json-rpc-objects/response.rb
|
108
|
+
- lib/json-rpc-objects/serializer.rb
|
109
|
+
- lib/json-rpc-objects/serializer/json.rb
|
110
|
+
- lib/json-rpc-objects/serializer/marshal.rb
|
111
|
+
- lib/json-rpc-objects/serializer/yaml.rb
|
108
112
|
- lib/json-rpc-objects/v10/error.rb
|
109
113
|
- lib/json-rpc-objects/v10/request.rb
|
110
114
|
- lib/json-rpc-objects/v10/response.rb
|
@@ -151,7 +155,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
155
|
requirements:
|
152
156
|
- - ">="
|
153
157
|
- !ruby/object:Gem::Version
|
154
|
-
hash: -
|
158
|
+
hash: -3765115865130944718
|
155
159
|
segments:
|
156
160
|
- 0
|
157
161
|
version: "0"
|