shapewear 0.1.5 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.7
4
+ * Better key lookup on hashes.
5
+ * Changed #camelize to work the same way as in Rails.
6
+
3
7
  ## 0.1.5
4
8
  * #camelize in parameters and complex types is only called if they are declared as symbols.
5
9
  This allows usage of custom character casing when writing the SOAP services.
@@ -27,18 +27,18 @@ end
27
27
  # defines String.camelize and String.underscore, if it is not defined by, e.g. Rails
28
28
  class String
29
29
  unless ''.respond_to? :camelize
30
- def camelize(first_letter_in_uppercase = true)
31
- if first_letter_in_uppercase
32
- self.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
30
+ def camelize(first_letter = :upper)
31
+ if first_letter == :upper
32
+ self.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
33
33
  else
34
- self.to_s[0].chr.downcase + self.camelize[1..-1]
34
+ self[0].chr.downcase + self.camelize[1..-1]
35
35
  end
36
36
  end
37
37
  end
38
38
 
39
39
  unless ''.respond_to? :underscore
40
40
  def underscore
41
- word = self.to_s.dup
41
+ word = self.dup
42
42
  word.gsub!(/::/, '/')
43
43
  word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
44
44
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
@@ -50,11 +50,11 @@ class String
50
50
  end
51
51
 
52
52
  class Object
53
- def camelize_if_symbol(first_letter_in_uppercase = true)
54
- if is_a?(Symbol) then
55
- to_s.camelize(first_letter_in_uppercase)
53
+ def camelize_if_symbol(first_letter = :upper)
54
+ if self.is_a?(Symbol)
55
+ self.to_s.camelize(first_letter)
56
56
  else
57
- to_s
57
+ self.to_s
58
58
  end
59
59
  end
60
- end
60
+ end
@@ -67,12 +67,17 @@ module Shapewear::Request
67
67
  raise "Operation not found: #{@op_node.name}"
68
68
  end
69
69
 
70
+ # Extracts all parameters from the operation node, and return as an array.
71
+ #
72
+ # @param op_options [Hash] The operation options.
73
+ # @param node [Nokogiri::XML] The operation node.
74
+ # @return [Array] The parsed parameters.
70
75
  def extract_parameters(op_options, node)
71
76
  logger.debug "Operation node: #{node.inspect}"
72
77
  r = []
73
78
  op_options[:parameters].each do |p|
74
- logger.debug " Looking for: tns:#{p.first.camelize_if_symbol(false)}"
75
- v = node.xpath("tns:#{p.first.camelize_if_symbol(false)}", namespaces).first
79
+ logger.debug " Looking for: tns:#{p.first.camelize_if_symbol(:lower)}"
80
+ v = node.xpath("tns:#{p.first.camelize_if_symbol(:lower)}", namespaces).first
76
81
  if v.nil?
77
82
  # does nothing
78
83
  elsif p.last == Fixnum
@@ -88,6 +93,10 @@ module Shapewear::Request
88
93
  r
89
94
  end
90
95
 
96
+ # Serializes the result of an operation as a SOAP Envelope.
97
+ #
98
+ # @param op_options [Hash] The operation options.
99
+ # @param r [Hash,Object] The operation result.
91
100
  #noinspection RubyArgCount
92
101
  def serialize_soap_result(op_options, r)
93
102
  xb = Builder::XmlMarkup.new
@@ -96,7 +105,6 @@ module Shapewear::Request
96
105
  xb.Envelope :xmlns => soap_env_ns, 'xmlns:xsi' => namespaces['xsi'] do |xenv|
97
106
  xenv.Body do |xbody|
98
107
  xbody.tag! "#{op_options[:public_name]}Response", :xmlns => namespaces['tns'] do |xresp|
99
-
100
108
  if r.nil?
101
109
  xresp.tag! "#{op_options[:public_name]}Result", 'xsi:nil' => 'true'
102
110
  else
@@ -119,9 +127,15 @@ module Shapewear::Request
119
127
  end
120
128
  end
121
129
 
130
+ # Extracts a field from an object, casts it to the appropriate type, and serializes as XML.
131
+ #
132
+ # @param builder [Builder::XmlMarkup] The XML builder.
133
+ # @param obj [Hash,Object] The resulting object.
134
+ # @param field [Symbol,String] The field to extract.
135
+ # @param type [Class] The type to convert.
122
136
  def extract_and_serialize_value(builder, obj, field, type)
123
137
  v = if obj.is_a?(Hash)
124
- obj[field]
138
+ obj[field] or obj[field.underscore]
125
139
  elsif obj.respond_to?(field)
126
140
  obj.send(field)
127
141
  elsif obj.respond_to?(field.underscore)
@@ -137,6 +151,10 @@ module Shapewear::Request
137
151
  end
138
152
  end
139
153
 
154
+ # Serializes an exception as a SOAP Envelope containing a SOAP Fault.
155
+ #
156
+ # @param ex [Exception] The Exception to serialize.
157
+ # @return [String] The SOAP Envelope containing the Fault.
140
158
  #noinspection RubyArgCount
141
159
  def serialize_soap_fault(ex)
142
160
  logger.debug "Serializing SOAP Fault: #{ex.inspect}"
@@ -167,6 +185,9 @@ module Shapewear::Request
167
185
  end
168
186
  end
169
187
 
188
+ # Returns the correct SOAP Envelope namespace.
189
+ #
190
+ # @return [String] The correct SOAP Envelope namespace.
170
191
  def soap_env_ns
171
192
  case soap_version
172
193
  when :soap11
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Shapewear
4
4
 
5
- Version = "0.1.5"
5
+ Version = "0.1.7"
6
6
 
7
7
  end
@@ -92,7 +92,7 @@ module Shapewear::WSDL
92
92
  params.each do |p|
93
93
  t = p.last
94
94
  param_name = p.first
95
- param_name = param_name.camelize_if_symbol(false)
95
+ param_name = param_name.camelize_if_symbol(:lower)
96
96
  if t.nil?
97
97
  xseq.element :name => param_name, :minOccurs => 0, :maxOccurs => 1, :type => 'xsd:any'
98
98
  elsif t.is_a?(Class)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shapewear
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 5
10
- version: 0.1.5
9
+ - 7
10
+ version: 0.1.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - "F\xC3\xA1bio Batista"