class Sekken::WSDL
Attributes
documents[R]
Public: Returns the DocumentCollection
.
schemas[R]
Public: Returns the SchemaCollection.
Public Class Methods
new(wsdl, http)
click to toggle source
# File lib/sekken/wsdl.rb, line 10 def initialize(wsdl, http) @documents = WSDL::DocumentCollection.new @schemas = XS::SchemaCollection.new resolver = Resolver.new(http) importer = Importer.new(resolver, @documents, @schemas) importer.import(wsdl) end
Public Instance Methods
operation(service_name, port_name, operation_name)
click to toggle source
Public: Returns an Operation
by service, port and operation name.
# File lib/sekken/wsdl.rb, line 46 def operation(service_name, port_name, operation_name) verify_operation_exists! service_name, port_name, operation_name port = @documents.service_port(service_name, port_name) endpoint = port.location binding = port.fetch_binding(@documents) binding_operation = binding.operations.fetch(operation_name) port_type = binding.fetch_port_type(@documents) port_type_operation = port_type.operations.fetch(operation_name) Operation.new(operation_name, endpoint, binding_operation, port_type_operation, self) end
operations(service_name, port_name)
click to toggle source
Public: Returns an Hash of operation names to Operations by service and port name.
# File lib/sekken/wsdl.rb, line 36 def operations(service_name, port_name) verify_service_and_port_exist! service_name, port_name port = @documents.service_port(service_name, port_name) binding = port.fetch_binding(@documents) binding.operations.keys end
service_name()
click to toggle source
Public: Returns the name of the service.
# File lib/sekken/wsdl.rb, line 26 def service_name @documents.service_name end
services()
click to toggle source
Public: Returns a Hash of services and ports defined by the WSDL
.
# File lib/sekken/wsdl.rb, line 31 def services @documents.services.values.inject({}) { |memo, service| memo.merge service.to_hash } end
Private Instance Methods
verify_operation_exists!(service_name, port_name, operation_name)
click to toggle source
Private: Raises a useful error in case the operation does not exist.
# File lib/sekken/wsdl.rb, line 64 def verify_operation_exists!(service_name, port_name, operation_name) operations = operations(service_name, port_name) unless operations.include? operation_name raise ArgumentError, "Unknown operation #{operation_name.inspect} for " \ "service #{service_name.inspect} and port #{port_name.inspect}.\n" \ "You may want to try one of #{operations.inspect}." end end
verify_service_and_port_exist!(service_name, port_name)
click to toggle source
Private: Raises a useful error in case the service or port does not exist.
# File lib/sekken/wsdl.rb, line 75 def verify_service_and_port_exist!(service_name, port_name) service = services[service_name] port = service[:ports][port_name] if service unless port raise ArgumentError, "Unknown service #{service_name.inspect} or port #{port_name.inspect}.\n" \ "Here is a list of known services and port:\n" + services.inspect end end