ruby_sol 0.1

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.
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