rapuncel 0.0.5.RC1 → 0.0.5.RC2

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.
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Time do
4
4
  it 'serialization' do
5
5
  time = Time.now
6
- xml = Rapuncel::XmlRpcSerializer[time]
6
+ xml = Rapuncel::XmlRpc::Serializer[time]
7
7
  xml.should have_xpath('/dateTime.iso8601', :content => time.iso8601)
8
8
  end
9
9
 
@@ -13,7 +13,7 @@ describe Time do
13
13
  <dateTime.iso8601>#{time.iso8601}</dateTime.iso8601>
14
14
  XML
15
15
 
16
- parsed_time = Rapuncel::XmlRpcDeserializer[xml]
16
+ parsed_time = Rapuncel::XmlRpc::Deserializer[xml]
17
17
  parsed_time.should be_a Time
18
18
  parsed_time.to_i.should == time.to_i
19
19
  end
metadata CHANGED
@@ -1,70 +1,97 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rapuncel
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.5.RC1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11094713
5
5
  prerelease: 6
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 5
10
+ - RC
11
+ - 2
12
+ version: 0.0.5.RC2
6
13
  platform: ruby
7
- authors:
14
+ authors:
8
15
  - Michael Eickenberg
9
16
  - Marian Theisen
10
17
  autorequire:
11
18
  bindir: bin
12
19
  cert_chain: []
13
- date: 2011-07-14 00:00:00.000000000 +02:00
20
+
21
+ date: 2011-07-25 00:00:00 +02:00
14
22
  default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
23
+ dependencies:
24
+ - !ruby/object:Gem::Dependency
17
25
  name: nokogiri
18
- requirement: &70327435731900 !ruby/object:Gem::Requirement
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
19
28
  none: false
20
- requirements:
21
- - - ! '>='
22
- - !ruby/object:Gem::Version
23
- version: '0'
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ hash: 3
33
+ segments:
34
+ - 0
35
+ version: "0"
24
36
  type: :runtime
25
- prerelease: false
26
- version_requirements: *70327435731900
27
- - !ruby/object:Gem::Dependency
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
28
39
  name: activesupport
29
- requirement: &70327435731400 !ruby/object:Gem::Requirement
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
30
42
  none: false
31
- requirements:
32
- - - ! '>='
33
- - !ruby/object:Gem::Version
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 7
47
+ segments:
48
+ - 3
49
+ - 0
50
+ - 0
34
51
  version: 3.0.0
35
52
  type: :runtime
36
- prerelease: false
37
- version_requirements: *70327435731400
38
- - !ruby/object:Gem::Dependency
53
+ version_requirements: *id002
54
+ - !ruby/object:Gem::Dependency
39
55
  name: rspec
40
- requirement: &70327435730900 !ruby/object:Gem::Requirement
56
+ prerelease: false
57
+ requirement: &id003 !ruby/object:Gem::Requirement
41
58
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 23
63
+ segments:
64
+ - 2
65
+ - 6
66
+ - 0
45
67
  version: 2.6.0
46
68
  type: :development
47
- prerelease: false
48
- version_requirements: *70327435730900
49
- - !ruby/object:Gem::Dependency
69
+ version_requirements: *id003
70
+ - !ruby/object:Gem::Dependency
50
71
  name: rake
51
- requirement: &70327435730520 !ruby/object:Gem::Requirement
72
+ prerelease: false
73
+ requirement: &id004 !ruby/object:Gem::Requirement
52
74
  none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: '0'
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
57
82
  type: :development
58
- prerelease: false
59
- version_requirements: *70327435730520
60
- description: Rapuncel is a simple XML-RPC Client based on Nokogiri, thus provides
61
- a fast and easy way to interact with XML-RPC services.
83
+ version_requirements: *id004
84
+ description: Rapuncel is a simple XML-RPC Client based on Nokogiri, thus provides a fast and easy way to interact with XML-RPC services.
62
85
  email: marian@cice-online.net
63
86
  executables: []
87
+
64
88
  extensions: []
89
+
65
90
  extra_rdoc_files: []
66
- files:
91
+
92
+ files:
67
93
  - Gemfile
94
+ - Gemfile.lock
68
95
  - lib/rapuncel/adapters/net_http_adapter.rb
69
96
  - lib/rapuncel/base_64_string.rb
70
97
  - lib/rapuncel/client.rb
@@ -72,11 +99,12 @@ files:
72
99
  - lib/rapuncel/proxy.rb
73
100
  - lib/rapuncel/request.rb
74
101
  - lib/rapuncel/response.rb
75
- - lib/rapuncel/xml_rpc_deserializer.rb
76
- - lib/rapuncel/xml_rpc_serializer.rb
102
+ - lib/rapuncel/xml_rpc/deserializer.rb
103
+ - lib/rapuncel/xml_rpc/serializer.rb
77
104
  - lib/rapuncel.rb
78
105
  - MIT-LICENSE
79
106
  - Rakefile
107
+ - rapuncel-0.0.5.RC1.gem
80
108
  - rapuncel.gemspec
81
109
  - README.md
82
110
  - spec/functional/client_spec.rb
@@ -86,6 +114,7 @@ files:
86
114
  - spec/unit/base64_spec.rb
87
115
  - spec/unit/boolean_spec.rb
88
116
  - spec/unit/connection_spec.rb
117
+ - spec/unit/custom_serialization_spec.rb
89
118
  - spec/unit/float_spec.rb
90
119
  - spec/unit/hash_spec.rb
91
120
  - spec/unit/int_spec.rb
@@ -99,26 +128,38 @@ files:
99
128
  has_rdoc: true
100
129
  homepage: http://github.com/cice/rapuncel
101
130
  licenses: []
131
+
102
132
  post_install_message:
103
133
  rdoc_options: []
104
- require_paths:
134
+
135
+ require_paths:
105
136
  - lib
106
- required_ruby_version: !ruby/object:Gem::Requirement
137
+ required_ruby_version: !ruby/object:Gem::Requirement
107
138
  none: false
108
- requirements:
109
- - - ! '>='
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ hash: 3
143
+ segments:
144
+ - 0
145
+ version: "0"
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
147
  none: false
114
- requirements:
115
- - - ! '>'
116
- - !ruby/object:Gem::Version
148
+ requirements:
149
+ - - ">"
150
+ - !ruby/object:Gem::Version
151
+ hash: 25
152
+ segments:
153
+ - 1
154
+ - 3
155
+ - 1
117
156
  version: 1.3.1
118
157
  requirements: []
158
+
119
159
  rubyforge_project:
120
160
  rubygems_version: 1.6.2
121
161
  signing_key:
122
162
  specification_version: 3
123
163
  summary: Simple XML-RPC Client
124
164
  test_files: []
165
+
@@ -1,110 +0,0 @@
1
- module Rapuncel
2
- class XmlRpcDeserializer
3
- XML_ENCODING = 'UTF-8'
4
-
5
- def initialize xml
6
- @xml_doc = Nokogiri::XML.parse xml
7
- end
8
-
9
- def deserialize xml_node = root_node
10
- send "deserialize_#{xml_node.name}", xml_node
11
- end
12
-
13
- def deserialize_base64 xml_node
14
- Base64String.decode_base64 xml_node.text.strip
15
- end
16
-
17
- def deserialize_string xml_node
18
- xml_node.text.gsub(/(\r\n|\r)/, "\n")
19
- end
20
-
21
- def deserialize_array xml_node
22
- values = xml_node.first_element_child.element_children
23
-
24
- values.map do |value|
25
- deserialize value.first_element_child
26
- end
27
- end
28
-
29
- def deserialize_boolean xml_node
30
- xml_node.text == "1"
31
- end
32
-
33
- def deserialize_double xml_node
34
- text = xml_node.text.strip
35
-
36
- if double_as_bigdecimal?
37
- BigDecimal.new text
38
- else
39
- text.to_f
40
- end
41
- end
42
-
43
- def deserialize_struct xml_node
44
- keys_and_values = xml_node.element_children
45
-
46
- {}.tap do |hash|
47
- keys_and_values.each do |key_value|
48
- key = key_value.first_element_child.text.strip
49
- key = key.to_sym unless hash_keys_as_string?
50
-
51
- value = deserialize key_value.last_element_child.first_element_child
52
-
53
- hash[key] = value
54
- end
55
- end
56
- end
57
-
58
- def deserialize_int xml_node
59
- xml_node.text.strip.to_i
60
- end
61
- alias_method :deserialize_i4, :deserialize_int
62
-
63
- define_method "deserialize_dateTime.iso8601" do |xml_node|
64
- Time.parse xml_node.text.strip
65
- end
66
-
67
- def deserialize_methodResponse xml_node
68
- response = xml_node.first_element_child
69
-
70
- if response.name == 'fault'
71
- deserialize_methodResponse_fault response
72
- else
73
- deserialize_methodResponse_params response
74
- end
75
- end
76
-
77
- def deserialize_methodResponse_params xml_node
78
- deserialize xml_node.first_element_child.first_element_child.first_element_child
79
- end
80
-
81
- def deserialize_methodResponse_fault xml_node
82
- deserialize xml_node.first_element_child.first_element_child
83
- end
84
-
85
- def to_ruby
86
- deserialize
87
- end
88
-
89
- protected
90
- def root_node
91
- @xml_doc.root
92
- end
93
-
94
- def double_as_bigdecimal?
95
- !!self.class.double_as_bigdecimal
96
- end
97
-
98
- def hash_keys_as_string?
99
- !!self.class.hash_keys_as_string
100
- end
101
-
102
- class << self
103
- attr_accessor :double_as_bigdecimal, :hash_keys_as_string
104
-
105
- def [] xml
106
- new(xml).to_ruby
107
- end
108
- end
109
- end
110
- end
@@ -1,148 +0,0 @@
1
- require 'bigdecimal'
2
- require 'time'
3
-
4
- module Rapuncel
5
- class XmlRpcSerializer
6
- XML_ENCODING = 'UTF-8'
7
-
8
- attr_reader :builder
9
-
10
- def initialize object
11
- @builder = Nokogiri::XML::Builder.new :encoding => XML_ENCODING
12
-
13
- serialize object
14
- end
15
-
16
- def serialize object
17
- case object
18
- when Base64String
19
- serialize_base64 object
20
- when Array
21
- serialize_array object
22
- when String, Symbol
23
- serialize_string object.to_s
24
- when TrueClass
25
- serialize_true
26
- when FalseClass
27
- serialize_false
28
- when Float
29
- serialize_float object
30
- when BigDecimal
31
- serialize_big_decimal object
32
- when Hash
33
- serialize_hash object
34
- when Integer
35
- serialize_integer object
36
- when NilClass
37
- serialize_nil
38
- when Time
39
- serialize_time object
40
- when Request
41
- serialize_request object
42
- else
43
- if object.respond_to?(:acts_like?) && object.acts_like?(:time)
44
- serialize_time object
45
- else
46
- serialize_hash instance_variable_hash(object)
47
- end
48
- end
49
-
50
- self
51
- end
52
-
53
- def serialize_base64 string
54
- builder.base64 string.base64_encoded
55
- end
56
-
57
- def serialize_array array
58
- builder.array do |builder|
59
- builder.data do |builder|
60
- array.each do |element|
61
- builder.value do |_|
62
- serialize element
63
- end
64
- end
65
- end
66
- end
67
- end
68
-
69
- def serialize_string string
70
- builder.string string
71
- end
72
-
73
- def serialize_true
74
- builder.boolean "1"
75
- end
76
-
77
- def serialize_false
78
- builder.boolean "0"
79
- end
80
- alias_method :serialize_nil, :serialize_false
81
-
82
- def serialize_float float
83
- builder.double float.to_s
84
- end
85
-
86
- def serialize_big_decimal big_decimal
87
- builder.double big_decimal.to_s("F")
88
- end
89
-
90
- def serialize_hash hash
91
- builder.struct do |builder|
92
- hash.each_pair do |key, value|
93
- builder.member do |builder|
94
- # Get a better string representation of BigDecimals
95
- key = key.to_s("F") if BigDecimal === key
96
- builder.name key.to_s
97
-
98
- builder.value do |builder|
99
- serialize value
100
- end
101
- end
102
- end
103
- end
104
- end
105
-
106
- def serialize_integer int
107
- builder.int int.to_s
108
- end
109
-
110
- def serialize_time time
111
- builder.send "dateTime.iso8601", time.iso8601
112
- end
113
-
114
- def serialize_request request
115
- builder.methodCall do |builder|
116
- builder.methodName request.method_name
117
- builder.params do |builder|
118
- request.arguments.each do |argument|
119
- builder.param do |builder|
120
- builder.value do |builder|
121
- serialize argument
122
- end
123
- end
124
- end
125
- end
126
- end
127
- end
128
-
129
- def to_xml
130
- @builder.to_xml
131
- end
132
-
133
- protected
134
- def instance_variable_hash object
135
- {}.tap do |hash|
136
- object.instance_variables.each do |ivar|
137
- hash[ivar[1..-1]] = object.instance_variable_get ivar
138
- end
139
- end
140
- end
141
-
142
- class << self
143
- def [] object
144
- new(object).to_xml
145
- end
146
- end
147
- end
148
- end