wwmd 0.2.20.3

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 (80) hide show
  1. data/History.txt +38 -0
  2. data/README.rdoc +87 -0
  3. data/Rakefile +33 -0
  4. data/examples/config_example.yaml +24 -0
  5. data/examples/wwmd_example.rb +73 -0
  6. data/lib/wwmd.rb +84 -0
  7. data/lib/wwmd/class_extensions.rb +4 -0
  8. data/lib/wwmd/class_extensions/extensions_base.rb +251 -0
  9. data/lib/wwmd/class_extensions/extensions_encoding.rb +79 -0
  10. data/lib/wwmd/class_extensions/extensions_external.rb +18 -0
  11. data/lib/wwmd/class_extensions/extensions_nilclass.rb +11 -0
  12. data/lib/wwmd/class_extensions/extensions_rbkb.rb +193 -0
  13. data/lib/wwmd/class_extensions/mixins_string_encoding.rb +40 -0
  14. data/lib/wwmd/guid.rb +155 -0
  15. data/lib/wwmd/page.rb +3 -0
  16. data/lib/wwmd/page/_fa.old +302 -0
  17. data/lib/wwmd/page/auth.rb +17 -0
  18. data/lib/wwmd/page/constants.rb +63 -0
  19. data/lib/wwmd/page/form.rb +99 -0
  20. data/lib/wwmd/page/form_array.rb +304 -0
  21. data/lib/wwmd/page/headers.rb +118 -0
  22. data/lib/wwmd/page/helpers.rb +41 -0
  23. data/lib/wwmd/page/html2text_hpricot.rb +76 -0
  24. data/lib/wwmd/page/html2text_nokogiri.rb +42 -0
  25. data/lib/wwmd/page/inputs.rb +47 -0
  26. data/lib/wwmd/page/irb_helpers.rb +114 -0
  27. data/lib/wwmd/page/page.rb +257 -0
  28. data/lib/wwmd/page/parsing_convenience.rb +98 -0
  29. data/lib/wwmd/page/reporting_helpers.rb +89 -0
  30. data/lib/wwmd/page/scrape.rb +196 -0
  31. data/lib/wwmd/page/spider.rb +127 -0
  32. data/lib/wwmd/urlparse.rb +125 -0
  33. data/lib/wwmd/viewstate.rb +17 -0
  34. data/lib/wwmd/viewstate/viewstate.rb +101 -0
  35. data/lib/wwmd/viewstate/viewstate_deserializer_methods.rb +217 -0
  36. data/lib/wwmd/viewstate/viewstate_from_xml.rb +129 -0
  37. data/lib/wwmd/viewstate/viewstate_types.rb +51 -0
  38. data/lib/wwmd/viewstate/viewstate_utils.rb +164 -0
  39. data/lib/wwmd/viewstate/viewstate_yaml.rb +25 -0
  40. data/lib/wwmd/viewstate/vs_stubs.rb +22 -0
  41. data/lib/wwmd/viewstate/vs_stubs/vs_array.rb +38 -0
  42. data/lib/wwmd/viewstate/vs_stubs/vs_binary_serialized.rb +30 -0
  43. data/lib/wwmd/viewstate/vs_stubs/vs_hashtable.rb +42 -0
  44. data/lib/wwmd/viewstate/vs_stubs/vs_hybrid_dict.rb +42 -0
  45. data/lib/wwmd/viewstate/vs_stubs/vs_indexed_string.rb +6 -0
  46. data/lib/wwmd/viewstate/vs_stubs/vs_indexed_string_ref.rb +24 -0
  47. data/lib/wwmd/viewstate/vs_stubs/vs_int_enum.rb +27 -0
  48. data/lib/wwmd/viewstate/vs_stubs/vs_list.rb +34 -0
  49. data/lib/wwmd/viewstate/vs_stubs/vs_pair.rb +29 -0
  50. data/lib/wwmd/viewstate/vs_stubs/vs_read_types.rb +11 -0
  51. data/lib/wwmd/viewstate/vs_stubs/vs_read_value.rb +35 -0
  52. data/lib/wwmd/viewstate/vs_stubs/vs_sparse_array.rb +58 -0
  53. data/lib/wwmd/viewstate/vs_stubs/vs_string.rb +33 -0
  54. data/lib/wwmd/viewstate/vs_stubs/vs_string_array.rb +39 -0
  55. data/lib/wwmd/viewstate/vs_stubs/vs_string_formatted.rb +32 -0
  56. data/lib/wwmd/viewstate/vs_stubs/vs_stub_helpers.rb +37 -0
  57. data/lib/wwmd/viewstate/vs_stubs/vs_triplet.rb +31 -0
  58. data/lib/wwmd/viewstate/vs_stubs/vs_type.rb +23 -0
  59. data/lib/wwmd/viewstate/vs_stubs/vs_unit.rb +30 -0
  60. data/lib/wwmd/viewstate/vs_stubs/vs_value.rb +35 -0
  61. data/lib/wwmd/wwmd_config.rb +52 -0
  62. data/lib/wwmd/wwmd_puts.rb +9 -0
  63. data/lib/wwmd/wwmd_utils.rb +28 -0
  64. data/spec/README +3 -0
  65. data/spec/form_array.spec +49 -0
  66. data/spec/spider_csrf_test.spec +28 -0
  67. data/spec/urlparse_test.spec +101 -0
  68. data/tasks/ann.rake +80 -0
  69. data/tasks/bones.rake +20 -0
  70. data/tasks/gem.rake +201 -0
  71. data/tasks/git.rake +40 -0
  72. data/tasks/notes.rake +27 -0
  73. data/tasks/post_load.rake +34 -0
  74. data/tasks/rdoc.rake +51 -0
  75. data/tasks/rubyforge.rake +55 -0
  76. data/tasks/setup.rb +292 -0
  77. data/tasks/spec.rake +54 -0
  78. data/tasks/test.rake +40 -0
  79. data/tasks/zentest.rake +36 -0
  80. metadata +222 -0
@@ -0,0 +1,42 @@
1
+ module WWMD
2
+ class VSStubs::VSHashtable
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize()
8
+ @value = []
9
+ end
10
+
11
+ def add(obj1,obj2)
12
+ @value << [obj1,obj2]
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ self.value.each do |k,v|
19
+ stack << k.serialize
20
+ stack << v.serialize
21
+ end
22
+ return stack
23
+ end
24
+
25
+ def to_xml
26
+ xml = super
27
+ xml.add_attribute("size",self.value.size.to_s)
28
+ self.value.each do |k,v|
29
+ pair = REXML::Element.new("Pair")
30
+ key = REXML::Element.new("Key")
31
+ key.add_element(k.to_xml)
32
+ val = REXML::Element.new("Value")
33
+ val.add_element(v.to_xml)
34
+ pair.add_element(key)
35
+ pair.add_element(val)
36
+ xml.add_element(pair)
37
+ end
38
+ xml
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,42 @@
1
+ module WWMD
2
+ class VSStubs::VSHybridDict
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize()
8
+ @value = []
9
+ end
10
+
11
+ def add(obj1,obj2)
12
+ @value << [obj1,obj2]
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ self.value.each do |k,v|
19
+ stack << k.serialize
20
+ stack << v.serialize
21
+ end
22
+ return stack
23
+ end
24
+
25
+ def to_xml
26
+ xml = super
27
+ xml.add_attribute("size",self.value.size.to_s)
28
+ self.value.each do |k,v|
29
+ pair = REXML::Element.new("Pair")
30
+ key = REXML::Element.new("Key")
31
+ key.add_element(k.to_xml)
32
+ val = REXML::Element.new("Value")
33
+ val.add_element(v.to_xml)
34
+ pair.add_element(key)
35
+ pair.add_element(val)
36
+ xml.add_element(pair)
37
+ end
38
+ xml
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,6 @@
1
+ module WWMD
2
+ class VSStubs::VSIndexedString < VSStubs::VSString
3
+ def serialize; super; end
4
+ def to_xml; super; end
5
+ end
6
+ end
@@ -0,0 +1,24 @@
1
+ module WWMD
2
+ class VSStubs::VSIndexedStringRef
3
+ include VSStubHelpers
4
+
5
+ attr_reader :value
6
+
7
+ def initialize(ref)
8
+ @value = ref
9
+ end
10
+
11
+ def serialize
12
+ stack = super
13
+ stack << self.write_int(@value)
14
+ return stack
15
+ end
16
+
17
+ def to_xml
18
+ xml = super
19
+ xml.add_text(self.value.to_s)
20
+ xml
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ module WWMD
2
+ class VSStubs::VSIntEnum
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+ attr_reader :typeref
7
+ attr_reader :typeval
8
+
9
+ def initialize(typeref,typeval,index)
10
+ @typeref = typeref
11
+ @typeval = typeval
12
+ @value = index
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.value)
18
+ end
19
+
20
+ def to_xml
21
+ xml = super
22
+ xml.add_text(self.value.to_s)
23
+ xml
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,34 @@
1
+ module WWMD
2
+ class VSStubs::VSList
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize()
8
+ @value = []
9
+ end
10
+
11
+ def add(obj)
12
+ @value << obj
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ self.value.each do |v|
19
+ stack << v.serialize
20
+ end
21
+ return stack
22
+ end
23
+
24
+ def to_xml
25
+ xml = super
26
+ xml.add_attribute("size",self.value.size.to_s)
27
+ self.value.each do |v|
28
+ xml.add_element(v.to_xml)
29
+ end
30
+ xml
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,29 @@
1
+ module WWMD
2
+ class VSStubs::VSPair
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(obj1,obj2)
8
+ @value = []
9
+ @value << obj1
10
+ @value << obj2
11
+ end
12
+
13
+ def serialize
14
+ stack = super
15
+ self.value.each do |v|
16
+ stack << v.serialize
17
+ end
18
+ return stack
19
+ end
20
+
21
+ def to_xml
22
+ xml = super
23
+ self.value.each do |v|
24
+ xml.add_element(v.to_xml)
25
+ end
26
+ xml
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,11 @@
1
+ module WWMD
2
+ class VSStubs::VSInt16 < VSStubs::VSReadValue; end
3
+ class VSStubs::VSInt32 < VSStubs::VSReadValue; end
4
+ class VSStubs::VSByte < VSStubs::VSReadValue; end
5
+ class VSStubs::VSChar < VSStubs::VSReadValue; end
6
+ class VSStubs::VSDateTime < VSStubs::VSReadValue; end
7
+ class VSStubs::VSDouble < VSStubs::VSReadValue; end
8
+ class VSStubs::VSSingle < VSStubs::VSReadValue; end
9
+ class VSStubs::VSColor < VSStubs::VSReadValue; end
10
+ class VSStubs::VSKnownColor < VSStubs::VSReadValue; end
11
+ end
@@ -0,0 +1,35 @@
1
+ module WWMD
2
+ class VSStubs::VSReadValue
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(val)
8
+ @value = val
9
+ end
10
+
11
+ def serialize
12
+ stack = super
13
+ case self.to_sym
14
+ when :int16; stack << self.write_short(self.value)
15
+ when :int32; stack << self.write_7bit_encoded_int(self.value)
16
+ when :byte; stack << self.write_byte(self.value)
17
+ when :char; stack << self.write_byte(self.value)
18
+ when :date_time; stack << self.write_double(self.value)
19
+ when :double; stack << self.write_double(self.value)
20
+ when :single; stack << self.write_single(self.value)
21
+ when :color; stack << self.write_int32(self.value)
22
+ when :known_color; stack << self.write_7bit_encoded_int(self.value)
23
+ else; raise "unimplemented #{self.to_sym}"
24
+ end
25
+ return stack
26
+ end
27
+
28
+ def to_xml
29
+ xml = super
30
+ xml.add_text(self.value.to_s)
31
+ xml
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,58 @@
1
+ module WWMD
2
+ class VSStubs::VSSparseArray
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+ attr_reader :typeref
7
+ attr_reader :typeval
8
+ attr_reader :size
9
+ attr_reader :elems
10
+
11
+ def initialize(typeref,typeval,size,elems)
12
+ @typeref = typeref
13
+ @typeval = typeval
14
+ @size = size
15
+ @elems = elems
16
+ @value = []
17
+ end
18
+
19
+ def add(idx,obj)
20
+ @value[idx] = obj
21
+ end
22
+
23
+ def serialize
24
+ stack = super
25
+ stack << self.write_7bit_encoded_int(self.size)
26
+ stack << self.write_7bit_encoded_int(self.elems)
27
+ self.value.each_index do |i|
28
+ next if self.value[i].nil?
29
+ stack << self.write_7bit_encoded_int(i)
30
+ stack << self.value[i].serialize
31
+ end
32
+ return stack
33
+ end
34
+
35
+ def to_xml
36
+ xml = super
37
+ siz = REXML::Element.new("Size")
38
+ siz.add_text(self.size.to_s)
39
+ ele = REXML::Element.new("Elements")
40
+ ele.add_text(self.elems.to_s)
41
+ xml.add_element(siz)
42
+ xml.add_element(ele)
43
+ self.value.each_index do |i|
44
+ next if self.value[i].nil?
45
+ pair = REXML::Element.new("Pair")
46
+ idx = REXML::Element.new("Index")
47
+ idx.add_text(i.to_s)
48
+ val = REXML::Element.new("Value")
49
+ val.add_element(value[i].to_xml)
50
+ pair.add_element(idx)
51
+ pair.add_element(val)
52
+ xml.add_element(pair)
53
+ end
54
+ xml
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,33 @@
1
+ module WWMD
2
+ class VSStubs::VSString
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(val)
8
+ @value = val
9
+ end
10
+
11
+ def serialize
12
+ stack = super
13
+ stack << self.write_7bit_encoded_int(self.size)
14
+ stack << self.value
15
+ return stack
16
+ end
17
+
18
+ def to_xml
19
+ xml = super
20
+ # emit quoted-printable if we need to
21
+ if self.value =~ /[^\x20-\x7e]/
22
+ # xml.add_attribute("encoding","quoted-printable")
23
+ # xml.add_text(self.value.to_qp)
24
+ xml.add_attribute("encoding","urlencoded")
25
+ xml.add_text(self.value.escape(/[^\x20-\x7e]/))
26
+ else
27
+ xml.add_text(self.value)
28
+ end
29
+ xml
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ module WWMD
2
+ class VSStubs::VSStringArray
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize()
8
+ @value = []
9
+ end
10
+
11
+ def add(obj)
12
+ @value << obj
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ self.value.each do |v|
19
+ stack << self.write_7bit_encoded_int(v.size)
20
+ stack << v
21
+ end
22
+ return stack
23
+ end
24
+
25
+ def to_xml
26
+ xml = super
27
+ xml.add_attribute("size",self.value.size.to_s)
28
+ self.value.each do |v|
29
+ xml.add_element(VSStubs::VSString.new(v).to_xml)
30
+ end
31
+ xml
32
+ end
33
+
34
+ def from_xml
35
+ # serliazed with VSString (for convenience)
36
+ # make sure not to deserialize the opcode when you write this out
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,32 @@
1
+ module WWMD
2
+ class VSStubs::VSStringFormatted
3
+ include VSStubHelpers
4
+
5
+ attr_accessor :value
6
+ attr_reader :typeref
7
+ attr_reader :typeval
8
+
9
+ def initialize(typeref,typeval,str)
10
+ @typeref = typeref
11
+ @typeval = typeval
12
+ @value = str
13
+ end
14
+
15
+ def serialize
16
+ stack = super
17
+ stack << self.write_7bit_encoded_int(self.size)
18
+ stack << self.value
19
+ end
20
+
21
+ def to_xml
22
+ xml = super
23
+ xml.add_element(VSStubs::VSString.new(self.value).to_xml)
24
+ xml
25
+ end
26
+
27
+ def from_xml
28
+ # deserialize convenience VSString properly
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ module WWMD
2
+ module VSStubHelpers
3
+ include ViewStateUtils
4
+
5
+ def to_sym
6
+ self.class.to_s.split(":").last.gsub(/[A-Z]+/,'\1_\0').downcase[1..-1].gsub(/\Avs/,"").to_sym
7
+ end
8
+
9
+ def opcode
10
+ return VIEWSTATE_TYPES.index(self.to_sym)
11
+ end
12
+
13
+ def size
14
+ return @value.size
15
+ end
16
+
17
+ def serialize
18
+ stack = ""
19
+ stack << self.write_byte(self.opcode)
20
+ if self.respond_to?(:typeref)
21
+ stack << self.serialize_type(self.typeref,self.typeval)
22
+ end
23
+ return stack
24
+ end
25
+
26
+ def to_xml
27
+ xml = REXML::Element.new(self.class.to_s.split(":").last)
28
+ if self.respond_to?(:typeref)
29
+ xml.add_attribute("typeref",self.typeref)
30
+ xml.add_attribute("typeval",self.typeval)
31
+ end
32
+ # xml.add_attribute("size",self.size)
33
+ xml
34
+ end
35
+
36
+ end
37
+ end