washout_builder 0.7.0 → 0.7.1
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.
- checksums.yaml +8 -8
- data/app/helpers/washout_builder_helper.rb +14 -7
- data/lib/washout_builder/soap.rb +2 -2
- data/lib/washout_builder/version.rb +1 -1
- data/lib/washout_builder.rb +25 -2
- metadata +1 -2
- data/lib/washout_builder/param.rb +0 -51
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzRiMTIyODljY2ViMjJhYTllMjU4YTg3MWVmMDM0MzM2MjJhOTA0MA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
M2E3NjEwZjNlZGE0ZWU5MDAwZDNjZDE0ZWE3NWQ5ZTJmMjk4ZTQ5YQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWZiZGVmNjM3MmM0Y2IyNmMyMzQ2NDdjOWJjOGMwNDAxNzNmOTI0MTMxNzg3
|
10
|
+
YTE3NmQwMzkwZTM0ZjMyMmI5OTZkN2ZlM2QxM2Q4ZjYwZWJmYWFjYzU0OTY5
|
11
|
+
NmFiN2MyZDQ3YjUxZjk1ZjU0ZThjMDc5M2EwZmNiZTY3NGU3ZWM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZTM2MDJiZmZkODVkZGZiZDQ3ZGQ5NDI3OTBkYzQwNmM4MDlkM2ExY2QxZTUx
|
14
|
+
NWY5NzNiMmViNTlkNTM1NDBkZjVmMzRkZTJkNGVmMmE2NmI2MzcxZDc0ZGNk
|
15
|
+
ZTljNTk5MTkzMjE1YzQwMGU0Nzk2MTg3MjhiMGEzMjk0MmIxYTY=
|
@@ -2,8 +2,9 @@ module WashoutBuilderHelper
|
|
2
2
|
include WashOutHelper
|
3
3
|
|
4
4
|
def get_complex_class_name(p, defined = [])
|
5
|
-
complex_class = p.
|
6
|
-
|
5
|
+
complex_class = p.struct? ? p.basic_type : nil
|
6
|
+
complex_class = complex_class.include?(".") ? complex_class.gsub(".","/").camelize : complex_class.to_s.classify unless complex_class.nil?
|
7
|
+
|
7
8
|
unless complex_class.nil? || defined.blank?
|
8
9
|
|
9
10
|
complex_obj_found = defined.detect {|hash| hash[:class] == complex_class}
|
@@ -12,7 +13,7 @@ module WashoutBuilderHelper
|
|
12
13
|
raise RuntimeError, "Duplicate use of `#{p.basic_type}` type name. Consider using classified types."
|
13
14
|
end
|
14
15
|
end
|
15
|
-
|
16
|
+
|
16
17
|
return complex_class
|
17
18
|
end
|
18
19
|
|
@@ -47,7 +48,7 @@ module WashoutBuilderHelper
|
|
47
48
|
ancestors = (param_class.ancestors - param_class.included_modules).delete_if{ |x| x.to_s.downcase == class_name.to_s.downcase || x.to_s == "ActiveRecord::Base" || x.to_s == "Object" || x.to_s =="BasicObject" || x.to_s == "WashOut::Type" }
|
48
49
|
unless ancestors.blank?
|
49
50
|
ancestor_structure = { ancestors[0].to_s.downcase => ancestors[0].columns_hash.inject({}) {|h, (k,v)| h["#{k}"]="#{v.type}".to_sym; h } }
|
50
|
-
ancestor_object =
|
51
|
+
ancestor_object = WashOut::Param.parse_def(@soap_config,ancestor_structure)[0]
|
51
52
|
bool_the_same = same_structure_as_ancestor?(param, ancestor_object)
|
52
53
|
unless bool_the_same
|
53
54
|
top_ancestors = get_class_ancestors(ancestor_class, defined)
|
@@ -61,8 +62,13 @@ module WashoutBuilderHelper
|
|
61
62
|
def get_nested_complex_types(param, defined)
|
62
63
|
defined = [] if defined.blank?
|
63
64
|
complex_class = get_complex_class_name(param, defined)
|
65
|
+
param_class = complex_class.is_a?(Class) ? complex_class : complex_class.constantize rescue nil
|
66
|
+
if !param_class.nil? && param_class.ancestors.include?(WashOut::Type)
|
67
|
+
param.name = param.map[0].name
|
68
|
+
param.map = param.map[0].map
|
69
|
+
end
|
64
70
|
defined << {:class =>complex_class, :obj => param, :ancestors => param.classified? ? get_class_ancestors(param, complex_class, defined) : nil } unless complex_class.nil?
|
65
|
-
if param.
|
71
|
+
if param.struct?
|
66
72
|
c_names = []
|
67
73
|
param.map.each { |obj| c_names.concat(get_nested_complex_types(obj, defined)) }
|
68
74
|
defined.concat(c_names)
|
@@ -102,7 +108,7 @@ module WashoutBuilderHelper
|
|
102
108
|
xml.a( "name" => "#{class_name}") { }
|
103
109
|
xml.h3 { |pre| pre << "#{class_name} #{ancestors.blank? ? "" : "<small>(extends <a href='##{ancestors[0].to_s.classify}'>#{ancestors[0].to_s.classify}</a>)</small>" } " }
|
104
110
|
|
105
|
-
if param.is_a?(
|
111
|
+
if param.is_a?(WashOut::Param)
|
106
112
|
xml.ul("class" => "pre") {
|
107
113
|
|
108
114
|
param.map.each do |element|
|
@@ -140,7 +146,8 @@ module WashoutBuilderHelper
|
|
140
146
|
end
|
141
147
|
|
142
148
|
def create_html_fault_type(xml, param)
|
143
|
-
|
149
|
+
ancestor_class = defined?(WashOut::Dispatcher::SOAPError) ? WashOut::Dispatcher::SOAPError : Washout::SoapError
|
150
|
+
if param.class.ancestors.include?(ancestor_class)
|
144
151
|
xml.h3 "#{param.class}"
|
145
152
|
xml.a("name" => "#{param.class}") {}
|
146
153
|
xml.ul("class" => "pre") {
|
data/lib/washout_builder/soap.rb
CHANGED
@@ -20,8 +20,8 @@ module WashoutBuilder
|
|
20
20
|
|
21
21
|
current_action = self.soap_actions[action]
|
22
22
|
|
23
|
-
current_action[:input] =
|
24
|
-
current_action[:output] =
|
23
|
+
current_action[:input] = WashOut::Param.parse_builder_def(soap_config, options[:args])
|
24
|
+
current_action[:output] = WashOut::Param.parse_builder_def(soap_config, options[:return])
|
25
25
|
|
26
26
|
end
|
27
27
|
end
|
data/lib/washout_builder.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'wash_out'
|
2
2
|
|
3
3
|
require 'washout_builder/soap'
|
4
|
-
require 'washout_builder/param'
|
5
4
|
require 'washout_builder/engine'
|
6
5
|
require 'washout_builder/dispatcher'
|
7
6
|
require 'washout_builder/type'
|
@@ -34,7 +33,7 @@ WashOut::Dispatcher::SOAPError.send :include, ActiveModel::MassAssignmentSecurit
|
|
34
33
|
WashOut::SOAPError.send :include, ActiveModel::MassAssignmentSecurity if defined?(WashOut::SOAPError)
|
35
34
|
|
36
35
|
|
37
|
-
if defined?(WashOut::
|
36
|
+
if defined?(WashOut::SOAP)
|
38
37
|
WashOut::SOAP::ClassMethods.class_eval do
|
39
38
|
alias_method :original_soap_action, :soap_action
|
40
39
|
end
|
@@ -50,6 +49,30 @@ ActionController::Renderers.add :soap do |what, options|
|
|
50
49
|
_render_soap(what, options)
|
51
50
|
end
|
52
51
|
|
52
|
+
WashOut::Param.class_eval do
|
53
|
+
|
54
|
+
def self.parse_builder_def(soap_config, definition)
|
55
|
+
raise RuntimeError, "[] should not be used in your params. Use nil if you want to mark empty set." if definition == []
|
56
|
+
return [] if definition == nil
|
57
|
+
|
58
|
+
definition = { :value => definition } unless definition.is_a?(Hash)
|
59
|
+
|
60
|
+
definition.collect do |name, opt|
|
61
|
+
if opt.is_a? WashOut::Param
|
62
|
+
opt
|
63
|
+
elsif opt.is_a? Array
|
64
|
+
WashOut::Param.new(soap_config, name, opt[0], true)
|
65
|
+
else
|
66
|
+
WashOut::Param.new(soap_config, name, opt)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
53
76
|
ActionController::Base.class_eval do
|
54
77
|
|
55
78
|
# Define a SOAP service. The function has no required +options+:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: washout_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bogdanRada
|
@@ -61,7 +61,6 @@ files:
|
|
61
61
|
- lib/washout_builder.rb
|
62
62
|
- lib/washout_builder/dispatcher.rb
|
63
63
|
- lib/washout_builder/engine.rb
|
64
|
-
- lib/washout_builder/param.rb
|
65
64
|
- lib/washout_builder/soap.rb
|
66
65
|
- lib/washout_builder/type.rb
|
67
66
|
- lib/washout_builder/version.rb
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module WashoutBuilder
|
2
|
-
class Param < WashOut::Param
|
3
|
-
|
4
|
-
attr_accessor :source_class_name
|
5
|
-
|
6
|
-
def initialize(soap_config, name, type, class_name, multiplied = false)
|
7
|
-
@source_class_name = class_name
|
8
|
-
super(soap_config, name, type, multiplied )
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.parse_def(soap_config, definition)
|
12
|
-
raise RuntimeError, "[] should not be used in your params. Use nil if you want to mark empty set." if definition == []
|
13
|
-
return [] if definition == nil
|
14
|
-
|
15
|
-
definition_class_name = nil
|
16
|
-
if definition.is_a?(Class) && definition.ancestors.include?(WashOut::Type)
|
17
|
-
definition_class_name = definition.to_s.classify
|
18
|
-
definition = definition.wash_out_param_map
|
19
|
-
end
|
20
|
-
|
21
|
-
if [Array, Symbol].include?(definition.class)
|
22
|
-
definition = { :value => definition }
|
23
|
-
end
|
24
|
-
|
25
|
-
if definition.is_a? Hash
|
26
|
-
definition.map do |name, opt|
|
27
|
-
if opt.is_a? WashoutBuilder::Param
|
28
|
-
opt
|
29
|
-
elsif opt.is_a? Array
|
30
|
-
WashoutBuilder::Param.new(soap_config, name, opt[0],definition_class_name, true)
|
31
|
-
else
|
32
|
-
WashoutBuilder::Param.new(soap_config, name, opt, definition_class_name)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
else
|
36
|
-
raise RuntimeError, "Wrong definition: #{definition.inspect}"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def basic_type
|
41
|
-
return source_class_name unless source_class_name.nil?
|
42
|
-
super
|
43
|
-
end
|
44
|
-
|
45
|
-
def is_complex?
|
46
|
-
!source_class_name.nil? || (struct? && classified? ) || struct?
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|