json-rpc-objects 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|