rapuncel 0.0.5.RC1 → 0.0.5.RC2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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