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.
- data/History.txt +38 -0
- data/README.rdoc +87 -0
- data/Rakefile +33 -0
- data/examples/config_example.yaml +24 -0
- data/examples/wwmd_example.rb +73 -0
- data/lib/wwmd.rb +84 -0
- data/lib/wwmd/class_extensions.rb +4 -0
- data/lib/wwmd/class_extensions/extensions_base.rb +251 -0
- data/lib/wwmd/class_extensions/extensions_encoding.rb +79 -0
- data/lib/wwmd/class_extensions/extensions_external.rb +18 -0
- data/lib/wwmd/class_extensions/extensions_nilclass.rb +11 -0
- data/lib/wwmd/class_extensions/extensions_rbkb.rb +193 -0
- data/lib/wwmd/class_extensions/mixins_string_encoding.rb +40 -0
- data/lib/wwmd/guid.rb +155 -0
- data/lib/wwmd/page.rb +3 -0
- data/lib/wwmd/page/_fa.old +302 -0
- data/lib/wwmd/page/auth.rb +17 -0
- data/lib/wwmd/page/constants.rb +63 -0
- data/lib/wwmd/page/form.rb +99 -0
- data/lib/wwmd/page/form_array.rb +304 -0
- data/lib/wwmd/page/headers.rb +118 -0
- data/lib/wwmd/page/helpers.rb +41 -0
- data/lib/wwmd/page/html2text_hpricot.rb +76 -0
- data/lib/wwmd/page/html2text_nokogiri.rb +42 -0
- data/lib/wwmd/page/inputs.rb +47 -0
- data/lib/wwmd/page/irb_helpers.rb +114 -0
- data/lib/wwmd/page/page.rb +257 -0
- data/lib/wwmd/page/parsing_convenience.rb +98 -0
- data/lib/wwmd/page/reporting_helpers.rb +89 -0
- data/lib/wwmd/page/scrape.rb +196 -0
- data/lib/wwmd/page/spider.rb +127 -0
- data/lib/wwmd/urlparse.rb +125 -0
- data/lib/wwmd/viewstate.rb +17 -0
- data/lib/wwmd/viewstate/viewstate.rb +101 -0
- data/lib/wwmd/viewstate/viewstate_deserializer_methods.rb +217 -0
- data/lib/wwmd/viewstate/viewstate_from_xml.rb +129 -0
- data/lib/wwmd/viewstate/viewstate_types.rb +51 -0
- data/lib/wwmd/viewstate/viewstate_utils.rb +164 -0
- data/lib/wwmd/viewstate/viewstate_yaml.rb +25 -0
- data/lib/wwmd/viewstate/vs_stubs.rb +22 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_array.rb +38 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_binary_serialized.rb +30 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_hashtable.rb +42 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_hybrid_dict.rb +42 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_indexed_string.rb +6 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_indexed_string_ref.rb +24 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_int_enum.rb +27 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_list.rb +34 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_pair.rb +29 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_read_types.rb +11 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_read_value.rb +35 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_sparse_array.rb +58 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_string.rb +33 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_string_array.rb +39 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_string_formatted.rb +32 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_stub_helpers.rb +37 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_triplet.rb +31 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_type.rb +23 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_unit.rb +30 -0
- data/lib/wwmd/viewstate/vs_stubs/vs_value.rb +35 -0
- data/lib/wwmd/wwmd_config.rb +52 -0
- data/lib/wwmd/wwmd_puts.rb +9 -0
- data/lib/wwmd/wwmd_utils.rb +28 -0
- data/spec/README +3 -0
- data/spec/form_array.spec +49 -0
- data/spec/spider_csrf_test.spec +28 -0
- data/spec/urlparse_test.spec +101 -0
- data/tasks/ann.rake +80 -0
- data/tasks/bones.rake +20 -0
- data/tasks/gem.rake +201 -0
- data/tasks/git.rake +40 -0
- data/tasks/notes.rake +27 -0
- data/tasks/post_load.rake +34 -0
- data/tasks/rdoc.rake +51 -0
- data/tasks/rubyforge.rake +55 -0
- data/tasks/setup.rb +292 -0
- data/tasks/spec.rake +54 -0
- data/tasks/test.rake +40 -0
- data/tasks/zentest.rake +36 -0
- 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,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
|