rack-amf 0.0.1 → 0.0.2
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/Rakefile +1 -1
- data/lib/amf/class_mapping.rb +2 -1
- data/lib/amf/constants.rb +6 -6
- data/lib/amf/pure/serializer.rb +3 -6
- data/lib/amf/values/messages.rb +1 -1
- data/spec/amf/class_mapping_spec.rb +11 -0
- data/spec/amf/remoting_spec.rb +12 -0
- data/spec/amf/values/messages_spec.rb +1 -1
- metadata +2 -2
data/Rakefile
CHANGED
@@ -23,7 +23,7 @@ end
|
|
23
23
|
|
24
24
|
spec = Gem::Specification.new do |s|
|
25
25
|
s.name = 'rack-amf'
|
26
|
-
s.version = '0.0.
|
26
|
+
s.version = '0.0.2'
|
27
27
|
s.summary = 'AMF serializer/deserializer and AMF gateway packaged as a rack middleware'
|
28
28
|
|
29
29
|
s.files = FileList['README.rdoc', 'Rakefile', 'lib/**/*.rb', 'spec/**/*.rb']
|
data/lib/amf/class_mapping.rb
CHANGED
@@ -194,7 +194,8 @@ module AMF
|
|
194
194
|
|
195
195
|
# Fallback serializer
|
196
196
|
props = {}
|
197
|
-
|
197
|
+
@ignored_props ||= Object.new.public_methods
|
198
|
+
(ruby_obj.public_methods - @ignored_props).each do |method_name|
|
198
199
|
# Add them to the prop hash if they take no arguments
|
199
200
|
method_def = ruby_obj.method(method_name)
|
200
201
|
props[method_name] = ruby_obj.send(method_name) if method_def.arity == 0
|
data/lib/amf/constants.rb
CHANGED
@@ -34,12 +34,12 @@ module AMF
|
|
34
34
|
AMF3_XML_MARKER = 0x0B #"\v"
|
35
35
|
AMF3_BYTE_ARRAY_MARKER = 0x0C #"\f"
|
36
36
|
|
37
|
-
# Other Markers
|
38
|
-
EMPTY_STRING =
|
39
|
-
ANONYMOUS_OBJECT =
|
40
|
-
DYNAMIC_OBJECT =
|
41
|
-
CLOSE_DYNAMIC_OBJECT =
|
42
|
-
CLOSE_DYNAMIC_ARRAY =
|
37
|
+
# Other Markers
|
38
|
+
EMPTY_STRING = 0x01
|
39
|
+
ANONYMOUS_OBJECT = 0x01
|
40
|
+
DYNAMIC_OBJECT = 0x0B
|
41
|
+
CLOSE_DYNAMIC_OBJECT = 0x01
|
42
|
+
CLOSE_DYNAMIC_ARRAY = 0x01
|
43
43
|
|
44
44
|
MAX_INTEGER = 268435455
|
45
45
|
MIN_INTEGER = -268435456
|
data/lib/amf/pure/serializer.rb
CHANGED
@@ -136,14 +136,11 @@ module AMF
|
|
136
136
|
# Cache object
|
137
137
|
@object_cache.add_obj obj
|
138
138
|
|
139
|
-
|
140
|
-
|
141
|
-
# Any object that has a class name isn't dynamic
|
142
|
-
unless class_name
|
143
|
-
stream << DYNAMIC_OBJECT
|
144
|
-
end
|
139
|
+
# Always serialize things as dynamic objects
|
140
|
+
stream << DYNAMIC_OBJECT
|
145
141
|
|
146
142
|
# Write class name/anonymous
|
143
|
+
class_name = ClassMapper.get_as_class_name obj
|
147
144
|
if class_name
|
148
145
|
write_utf8_vr class_name, stream
|
149
146
|
else
|
data/lib/amf/values/messages.rb
CHANGED
@@ -92,6 +92,17 @@ describe AMF::ClassMapping do
|
|
92
92
|
hash.should == {'prop_a' => 'Test A', 'prop_b' => 'Test B', 'prop_c' => nil}
|
93
93
|
end
|
94
94
|
|
95
|
+
it "should extract inherited object properties" do
|
96
|
+
class RubyClass2 < RubyClass
|
97
|
+
end
|
98
|
+
obj = RubyClass2.new
|
99
|
+
obj.prop_a = 'Test A'
|
100
|
+
obj.prop_b = 'Test B'
|
101
|
+
|
102
|
+
hash = @mapper.props_for_serialization obj
|
103
|
+
hash.should == {'prop_a' => 'Test A', 'prop_b' => 'Test B', 'prop_c' => nil}
|
104
|
+
end
|
105
|
+
|
95
106
|
it "should allow custom serializers" do
|
96
107
|
class CustomSerializer
|
97
108
|
def can_handle? obj
|
data/spec/amf/remoting_spec.rb
CHANGED
@@ -34,4 +34,16 @@ describe "when handling responses" do
|
|
34
34
|
expected = request_fixture('simple-response.bin')
|
35
35
|
resp.serialize.should == expected
|
36
36
|
end
|
37
|
+
|
38
|
+
it "should serialize a AcknowledgeMessage response" do
|
39
|
+
ak = AMF::Values::AcknowledgeMessage.new
|
40
|
+
ak.clientId = "7B0ACE15-8D57-6AE5-B9D4-99C2D32C8246"
|
41
|
+
ak.messageId = "7B0ACE15-8D57-6AE5-B9D4-99C2D32C8246"
|
42
|
+
ak.timestamp = 0
|
43
|
+
resp = AMF::Response.new
|
44
|
+
resp.messages << AMF::Message.new('/1/onResult', '', ak)
|
45
|
+
|
46
|
+
expected = request_fixture('acknowledge-response.bin')
|
47
|
+
resp.serialize.should == expected
|
48
|
+
end
|
37
49
|
end
|
@@ -6,7 +6,7 @@ describe AMF::Values::AbstractMessage do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
it "should generate conforming uuids" do
|
9
|
-
@message.rand_uuid.should =~ /[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}/i
|
9
|
+
@message.send(:rand_uuid).should =~ /[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}/i
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-amf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Hillerson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-10-
|
13
|
+
date: 2009-10-04 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|