Class: WashoutBuilder::Document::Generator
- Inherits:
-
Object
- Object
- WashoutBuilder::Document::Generator
- Defined in:
- lib/washout_builder/document/generator.rb
Instance Method Summary collapse
- #complex_types ⇒ Object
- #endpoint ⇒ Object
- #extract_nested_complex_types_from_exceptions(fault_types) ⇒ Object
- #fault_types ⇒ Object
- #get_soap_action_names ⇒ Object
-
#initialize(attrs = {}) ⇒ Generator
constructor
A new instance of Generator.
- #input_types ⇒ Object
- #namespace ⇒ Object
- #operations ⇒ Object
- #output_types ⇒ Object
- #service ⇒ Object
- #service_description ⇒ Object
Constructor Details
#initialize(attrs = {}) ⇒ Generator
Returns a new instance of Generator.
10 11 12 13 14 |
# File 'lib/washout_builder/document/generator.rb', line 10 def initialize(attrs = {}) self.config = attrs[:config] self.service_class = attrs[:service_class] self.soap_actions = attrs[:soap_actions] end |
Instance Method Details
#complex_types ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/washout_builder/document/generator.rb', line 67 def complex_types defined = [] (input_types + output_types).each do |p| defined.concat(p.get_nested_complex_types(config, defined)) end defined.sort_by { |hash| hash[:class].to_s.downcase }.uniq{|hash| hash[:class] } unless defined.blank? end |
#endpoint ⇒ Object
21 22 23 |
# File 'lib/washout_builder/document/generator.rb', line 21 def endpoint namespace.gsub("/wsdl", "/action") end |
#extract_nested_complex_types_from_exceptions(fault_types) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/washout_builder/document/generator.rb', line 93 def extract_nested_complex_types_from_exceptions(fault_types) complex_types = [] fault_types.each do |hash| hash[:structure].each do |attribute, attr_details| complex_class = hash[:fault].get_virtus_member_type_primitive(attr_details) unless complex_class.nil? param_class = complex_class.is_a?(Class) ? complex_class : complex_class.constantize rescue nil if !param_class.nil? && param_class.ancestors.include?(Virtus::Model::Core) param_class.send :extend, WashoutBuilder::Document::VirtusModel param_class.get_fault_class_ancestors( complex_types) elsif !param_class.nil? && !param_class.ancestors.include?(Virtus::Model::Core) raise RuntimeError, "Non-existent use of `#{param_class}` type name or this class does not use Virtus.model. Consider using classified types that include Virtus.mode for exception atribute types." end end end end complex_types end |
#fault_types ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/washout_builder/document/generator.rb', line 76 def fault_types defined = soap_actions.select{|operation, formats| !formats[:raises].blank? } defined = defined.collect {|operation, formats| formats[:raises].is_a?(Array) ? formats[:raises] : [formats[:raises]] }.flatten.select { |x| (x.is_a?(Class) && x.ancestors.detect{ |fault| WashoutBuilder::Type.get_fault_classes.include?(fault) }.present?) || (x.is_a?(Class) && WashoutBuilder::Type.get_fault_classes.include?(x)) } unless defined.blank? fault_types = [] if defined.blank? defined = [WashoutBuilder::Type.get_fault_classes.first] else defined << WashoutBuilder::Type.get_fault_classes.first end defined.each{ |exception_class| exception_class.get_fault_class_ancestors( fault_types, true)} unless defined.blank? complex_types = extract_nested_complex_types_from_exceptions(fault_types) complex_types.delete_if{ |hash| fault_types << hash if (hash[:fault].is_a?(Class) && hash[:fault].ancestors.detect{ |fault| WashoutBuilder::Type.get_fault_classes.include?(fault) }.present?) || (hash[:fault].is_a?(Class) && WashoutBuilder::Type.get_fault_classes.include?(hash[:fault])) } unless complex_types.blank? fault_types = fault_types.sort_by { |hash| hash[:fault].to_s.downcase }.uniq {|hash| hash[:fault] } unless fault_types.blank? complex_types = complex_types.sort_by { |hash| hash[:fault].to_s.downcase }.uniq {|hash| hash[:fault] } unless complex_types.blank? [fault_types, complex_types] end |
#get_soap_action_names ⇒ Object
62 63 64 |
# File 'lib/washout_builder/document/generator.rb', line 62 def get_soap_action_names operations.map(&:to_s).sort_by { |name| name.downcase }.uniq unless soap_actions.blank? end |
#input_types ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/washout_builder/document/generator.rb', line 38 def input_types types = [] unless soap_actions.blank? soap_actions.each do |operation, formats| (formats[:builder_in]).each do |p| types << p end end end types end |
#namespace ⇒ Object
16 17 18 |
# File 'lib/washout_builder/document/generator.rb', line 16 def namespace config.namespace end |
#operations ⇒ Object
33 34 35 |
# File 'lib/washout_builder/document/generator.rb', line 33 def operations soap_actions.map { |operation, formats| operation } end |
#output_types ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/washout_builder/document/generator.rb', line 50 def output_types types = [] unless soap_actions.blank? soap_actions.each do |operation, formats| (formats[:builder_out]).each do |p| types << p end end end types end |
#service ⇒ Object
25 26 27 |
# File 'lib/washout_builder/document/generator.rb', line 25 def service service_class.name.underscore.gsub("_controller", "").camelize end |
#service_description ⇒ Object
29 30 31 |
# File 'lib/washout_builder/document/generator.rb', line 29 def service_description config.respond_to?(:description) ? config.description : nil end |