ruby_sol 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +43 -0
  4. data/lib/ruby_sol.rb +113 -0
  5. data/lib/ruby_sol/class_mapping.rb +250 -0
  6. data/lib/ruby_sol/constants.rb +50 -0
  7. data/lib/ruby_sol/extensions.rb +22 -0
  8. data/lib/ruby_sol/pure/deserializer.rb +461 -0
  9. data/lib/ruby_sol/pure/io_helpers.rb +94 -0
  10. data/lib/ruby_sol/pure/serializer.rb +490 -0
  11. data/spec/class_mapping_spec.rb +110 -0
  12. data/spec/deserializer_spec.rb +449 -0
  13. data/spec/fixtures/objects/amf0-boolean.bin +1 -0
  14. data/spec/fixtures/objects/amf0-complex-encoded-string.bin +0 -0
  15. data/spec/fixtures/objects/amf0-date.bin +0 -0
  16. data/spec/fixtures/objects/amf0-ecma-ordinal-array.bin +0 -0
  17. data/spec/fixtures/objects/amf0-hash.bin +0 -0
  18. data/spec/fixtures/objects/amf0-null.bin +1 -0
  19. data/spec/fixtures/objects/amf0-number.bin +0 -0
  20. data/spec/fixtures/objects/amf0-object.bin +0 -0
  21. data/spec/fixtures/objects/amf0-ref-test.bin +0 -0
  22. data/spec/fixtures/objects/amf0-strict-array.bin +0 -0
  23. data/spec/fixtures/objects/amf0-string.bin +0 -0
  24. data/spec/fixtures/objects/amf0-time.bin +0 -0
  25. data/spec/fixtures/objects/amf0-typed-object.bin +0 -0
  26. data/spec/fixtures/objects/amf0-undefined.bin +1 -0
  27. data/spec/fixtures/objects/amf0-untyped-object.bin +0 -0
  28. data/spec/fixtures/objects/amf0-xml-doc.bin +0 -0
  29. data/spec/fixtures/objects/amf3-0.bin +0 -0
  30. data/spec/fixtures/objects/amf3-array-collection.bin +2 -0
  31. data/spec/fixtures/objects/amf3-array-ref.bin +1 -0
  32. data/spec/fixtures/objects/amf3-associative-array.bin +1 -0
  33. data/spec/fixtures/objects/amf3-bigNum.bin +0 -0
  34. data/spec/fixtures/objects/amf3-byte-array-ref.bin +1 -0
  35. data/spec/fixtures/objects/amf3-byte-array.bin +0 -0
  36. data/spec/fixtures/objects/amf3-complex-array-collection.bin +6 -0
  37. data/spec/fixtures/objects/amf3-complex-encoded-string-array.bin +1 -0
  38. data/spec/fixtures/objects/amf3-date-ref.bin +0 -0
  39. data/spec/fixtures/objects/amf3-date.bin +0 -0
  40. data/spec/fixtures/objects/amf3-dictionary.bin +0 -0
  41. data/spec/fixtures/objects/amf3-dynamic-object.bin +2 -0
  42. data/spec/fixtures/objects/amf3-empty-array-ref.bin +1 -0
  43. data/spec/fixtures/objects/amf3-empty-array.bin +1 -0
  44. data/spec/fixtures/objects/amf3-empty-dictionary.bin +0 -0
  45. data/spec/fixtures/objects/amf3-empty-string-ref.bin +1 -0
  46. data/spec/fixtures/objects/amf3-encoded-string-ref.bin +0 -0
  47. data/spec/fixtures/objects/amf3-externalizable.bin +0 -0
  48. data/spec/fixtures/objects/amf3-false.bin +1 -0
  49. data/spec/fixtures/objects/amf3-float.bin +0 -0
  50. data/spec/fixtures/objects/amf3-graph-member.bin +0 -0
  51. data/spec/fixtures/objects/amf3-hash.bin +2 -0
  52. data/spec/fixtures/objects/amf3-large-max.bin +0 -0
  53. data/spec/fixtures/objects/amf3-large-min.bin +0 -0
  54. data/spec/fixtures/objects/amf3-max.bin +1 -0
  55. data/spec/fixtures/objects/amf3-min.bin +0 -0
  56. data/spec/fixtures/objects/amf3-mixed-array.bin +10 -0
  57. data/spec/fixtures/objects/amf3-null.bin +1 -0
  58. data/spec/fixtures/objects/amf3-object-ref.bin +0 -0
  59. data/spec/fixtures/objects/amf3-primitive-array.bin +1 -0
  60. data/spec/fixtures/objects/amf3-string-ref.bin +0 -0
  61. data/spec/fixtures/objects/amf3-string.bin +1 -0
  62. data/spec/fixtures/objects/amf3-symbol.bin +1 -0
  63. data/spec/fixtures/objects/amf3-trait-ref.bin +3 -0
  64. data/spec/fixtures/objects/amf3-true.bin +1 -0
  65. data/spec/fixtures/objects/amf3-typed-object.bin +2 -0
  66. data/spec/fixtures/objects/amf3-vector-double.bin +0 -0
  67. data/spec/fixtures/objects/amf3-vector-int.bin +0 -0
  68. data/spec/fixtures/objects/amf3-vector-object.bin +0 -0
  69. data/spec/fixtures/objects/amf3-vector-uint.bin +0 -0
  70. data/spec/fixtures/objects/amf3-xml-doc.bin +1 -0
  71. data/spec/fixtures/objects/amf3-xml-ref.bin +1 -0
  72. data/spec/fixtures/objects/amf3-xml.bin +1 -0
  73. data/spec/serializer_spec.rb +503 -0
  74. data/spec/spec_helper.rb +59 -0
  75. metadata +128 -0
@@ -0,0 +1,59 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+ require 'rspec/autorun'
4
+
5
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
6
+ require "date"
7
+ require "stringio"
8
+ require 'ruby_sol'
9
+ require 'ruby_sol/extensions'
10
+ require 'ruby_sol/class_mapping'
11
+ require 'ruby_sol/constants'
12
+ require 'ruby_sol/pure/deserializer'
13
+ require 'ruby_sol/pure/serializer'
14
+ require 'ruby_sol/pure/io_helpers' # Just to make sure they get loaded
15
+
16
+ def request_fixture(binary_path)
17
+ data = File.open(File.dirname(__FILE__) + '/fixtures/request/' + binary_path, "rb").read
18
+ data.force_encoding("ASCII-8BIT") if data.respond_to?(:force_encoding)
19
+ data
20
+ end
21
+
22
+ def object_fixture(binary_path)
23
+ data = File.open(File.dirname(__FILE__) + '/fixtures/objects/' + binary_path, "rb").read
24
+ data.force_encoding("ASCII-8BIT") if data.respond_to?(:force_encoding)
25
+ data
26
+ end
27
+
28
+ # Helper classes
29
+ class RubyClass; attr_accessor :baz, :foo; end;
30
+ class OtherClass; attr_accessor :bar, :foo; end;
31
+ class ClassMappingTest
32
+ attr_accessor :prop_a
33
+ attr_accessor :prop_b
34
+ end
35
+ class ClassMappingTest2 < ClassMappingTest
36
+ attr_accessor :prop_c
37
+ end
38
+ module ANamespace; class TestRubyClass; end; end
39
+
40
+ class ExternalizableTest
41
+ include RubySol::Pure::ReadIOHelpers
42
+ include RubySol::Pure::WriteIOHelpers
43
+
44
+ attr_accessor :one, :two
45
+
46
+ def encode_amf serializer
47
+ serializer.write_object(self, nil, {:class_name => 'ExternalizableTest', :dynamic => false, :externalizable => true, :members => []})
48
+ end
49
+
50
+ def read_external des
51
+ @one = read_double(des.source)
52
+ @two = read_double(des.source)
53
+ end
54
+
55
+ def write_external ser
56
+ ser.stream << pack_double(@one)
57
+ ser.stream << pack_double(@two)
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_sol
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Mikhail Filimonov
8
+ - Jacob Henry
9
+ - Stephen Augenstein
10
+ - Joc O'Connor
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2013-05-06 00:00:00.000000000 Z
15
+ dependencies: []
16
+ description: " RubySol allows to read/write files in sol format, used by Flash
17
+ Player. \n RubySol is based on RocketAMF code.\n"
18
+ email:
19
+ - filimonov.mikhail@gmail.com
20
+ executables: []
21
+ extensions: []
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ files:
25
+ - README.rdoc
26
+ - Rakefile
27
+ - lib/ruby_sol.rb
28
+ - lib/ruby_sol/class_mapping.rb
29
+ - lib/ruby_sol/extensions.rb
30
+ - lib/ruby_sol/constants.rb
31
+ - lib/ruby_sol/pure/deserializer.rb
32
+ - lib/ruby_sol/pure/io_helpers.rb
33
+ - lib/ruby_sol/pure/serializer.rb
34
+ - spec/spec_helper.rb
35
+ - spec/deserializer_spec.rb
36
+ - spec/class_mapping_spec.rb
37
+ - spec/serializer_spec.rb
38
+ - spec/fixtures/objects/amf3-vector-uint.bin
39
+ - spec/fixtures/objects/amf3-xml-ref.bin
40
+ - spec/fixtures/objects/amf3-vector-object.bin
41
+ - spec/fixtures/objects/amf3-encoded-string-ref.bin
42
+ - spec/fixtures/objects/amf3-typed-object.bin
43
+ - spec/fixtures/objects/amf3-associative-array.bin
44
+ - spec/fixtures/objects/amf3-mixed-array.bin
45
+ - spec/fixtures/objects/amf3-date-ref.bin
46
+ - spec/fixtures/objects/amf0-number.bin
47
+ - spec/fixtures/objects/amf0-hash.bin
48
+ - spec/fixtures/objects/amf0-ecma-ordinal-array.bin
49
+ - spec/fixtures/objects/amf3-dynamic-object.bin
50
+ - spec/fixtures/objects/amf3-vector-double.bin
51
+ - spec/fixtures/objects/amf0-null.bin
52
+ - spec/fixtures/objects/amf3-large-min.bin
53
+ - spec/fixtures/objects/amf3-primitive-array.bin
54
+ - spec/fixtures/objects/amf3-dictionary.bin
55
+ - spec/fixtures/objects/amf3-large-max.bin
56
+ - spec/fixtures/objects/amf3-empty-string-ref.bin
57
+ - spec/fixtures/objects/amf3-complex-encoded-string-array.bin
58
+ - spec/fixtures/objects/amf3-array-collection.bin
59
+ - spec/fixtures/objects/amf3-vector-int.bin
60
+ - spec/fixtures/objects/amf0-complex-encoded-string.bin
61
+ - spec/fixtures/objects/amf3-xml.bin
62
+ - spec/fixtures/objects/amf3-null.bin
63
+ - spec/fixtures/objects/amf3-0.bin
64
+ - spec/fixtures/objects/amf3-hash.bin
65
+ - spec/fixtures/objects/amf3-object-ref.bin
66
+ - spec/fixtures/objects/amf0-strict-array.bin
67
+ - spec/fixtures/objects/amf3-empty-array-ref.bin
68
+ - spec/fixtures/objects/amf3-byte-array-ref.bin
69
+ - spec/fixtures/objects/amf3-complex-array-collection.bin
70
+ - spec/fixtures/objects/amf3-xml-doc.bin
71
+ - spec/fixtures/objects/amf0-time.bin
72
+ - spec/fixtures/objects/amf0-string.bin
73
+ - spec/fixtures/objects/amf0-undefined.bin
74
+ - spec/fixtures/objects/amf3-date.bin
75
+ - spec/fixtures/objects/amf0-date.bin
76
+ - spec/fixtures/objects/amf3-max.bin
77
+ - spec/fixtures/objects/amf3-true.bin
78
+ - spec/fixtures/objects/amf0-xml-doc.bin
79
+ - spec/fixtures/objects/amf0-object.bin
80
+ - spec/fixtures/objects/amf3-string-ref.bin
81
+ - spec/fixtures/objects/amf3-empty-array.bin
82
+ - spec/fixtures/objects/amf3-symbol.bin
83
+ - spec/fixtures/objects/amf0-ref-test.bin
84
+ - spec/fixtures/objects/amf3-array-ref.bin
85
+ - spec/fixtures/objects/amf3-bigNum.bin
86
+ - spec/fixtures/objects/amf3-string.bin
87
+ - spec/fixtures/objects/amf3-trait-ref.bin
88
+ - spec/fixtures/objects/amf0-boolean.bin
89
+ - spec/fixtures/objects/amf3-float.bin
90
+ - spec/fixtures/objects/amf3-externalizable.bin
91
+ - spec/fixtures/objects/amf0-untyped-object.bin
92
+ - spec/fixtures/objects/amf3-min.bin
93
+ - spec/fixtures/objects/amf3-empty-dictionary.bin
94
+ - spec/fixtures/objects/amf3-graph-member.bin
95
+ - spec/fixtures/objects/amf3-false.bin
96
+ - spec/fixtures/objects/amf0-typed-object.bin
97
+ - spec/fixtures/objects/amf3-byte-array.bin
98
+ homepage: http://github.com/filimonov/ruby_sol
99
+ licenses:
100
+ - MIT
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options:
104
+ - --line-numbers
105
+ - --main
106
+ - README.rdoc
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 2.0.3
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: Based on RocketAMF reader/write of Flash Player's .sol files
125
+ test_files:
126
+ - spec/deserializer_spec.rb
127
+ - spec/class_mapping_spec.rb
128
+ - spec/serializer_spec.rb