class Sekken::WSDL::Service

Public Class Methods

new(service_node) click to toggle source
# File lib/sekken/wsdl/service.rb, line 7
def initialize(service_node)
  @service_node = service_node
end

Public Instance Methods

name() click to toggle source
# File lib/sekken/wsdl/service.rb, line 11
def name
  @service_node['name']
end
ports() click to toggle source
# File lib/sekken/wsdl/service.rb, line 15
def ports
  @ports ||= ports!
end
to_hash() click to toggle source
# File lib/sekken/wsdl/service.rb, line 19
def to_hash
  port_hash = ports.values.inject({}) { |memo, port| memo.merge port.to_hash }
  { name => { ports: port_hash } }
end

Private Instance Methods

ports!() click to toggle source
# File lib/sekken/wsdl/service.rb, line 26
def ports!
  ports = {}

  @service_node.element_children.each do |port_node|
    next unless port_node.name == 'port'

    soap_node = port_node.element_children.find { |node|
      namespace = node.namespace.href

      soap_1_1 = namespace == Sekken::NS_SOAP_1_1
      soap_1_2 = namespace == Sekken::NS_SOAP_1_2
      address  = node.name == 'address'

      (soap_1_1 || soap_1_2) && address
    }

    next unless soap_node

    port_name = port_node['name']
    port = Port.new(port_node, soap_node)

    ports[port_name] = port
  end

  ports
end