Class: Wasabi::Document
- Inherits:
-
Object
- Object
- Wasabi::Document
- Defined in:
- lib/wasabi/document.rb
Overview
Wasabi::Document
Represents a WSDL document.
Constant Summary collapse
- ELEMENT_FORM_DEFAULTS =
[:unqualified, :qualified]
Instance Attribute Summary collapse
-
#document ⇒ Object
(also: #document?)
Returns the value of attribute document.
-
#endpoint ⇒ Object
Returns the SOAP endpoint.
-
#namespace ⇒ Object
Returns the target namespace.
-
#request ⇒ Object
Returns the value of attribute request.
-
#xml ⇒ Object
Returns the raw WSDL document.
Class Method Summary collapse
-
.validate_element_form_default!(value) ⇒ Object
Validates if a given
value
is a valid elementFormDefault value.
Instance Method Summary collapse
-
#element_form_default ⇒ Object
Returns the value of elementFormDefault.
-
#element_form_default=(value) ⇒ Object
Sets the elementFormDefault value.
-
#initialize(document = nil) ⇒ Document
constructor
Accepts a WSDL
document
to parse. -
#operations ⇒ Object
Returns a map of SOAP operations.
-
#parser ⇒ Object
Parses the WSDL document and returns the
Wasabi::Parser
. -
#soap_action(key) ⇒ Object
Returns the SOAP action for a given
key
. -
#soap_actions ⇒ Object
Returns a list of available SOAP actions.
-
#soap_input(key) ⇒ Object
Returns the SOAP input for a given
key
. - #type_definitions ⇒ Object
- #type_namespaces ⇒ Object
-
#user_defined(namespace) ⇒ Object
Returns whether the given
namespace
was defined manually.
Constructor Details
#initialize(document = nil) ⇒ Document
Accepts a WSDL document
to parse.
24 25 26 |
# File 'lib/wasabi/document.rb', line 24 def initialize(document = nil) self.document = document end |
Instance Attribute Details
#document ⇒ Object Also known as: document?
Returns the value of attribute document.
28 29 30 |
# File 'lib/wasabi/document.rb', line 28 def document @document end |
#endpoint ⇒ Object
Returns the SOAP endpoint.
33 34 35 |
# File 'lib/wasabi/document.rb', line 33 def endpoint @endpoint ||= parser.endpoint end |
#namespace ⇒ Object
Returns the target namespace.
41 42 43 |
# File 'lib/wasabi/document.rb', line 41 def namespace @namespace ||= parser.namespace end |
#request ⇒ Object
Returns the value of attribute request.
28 29 30 |
# File 'lib/wasabi/document.rb', line 28 def request @request end |
#xml ⇒ Object
Returns the raw WSDL document. Can be used as a hook to extend the library.
112 113 114 |
# File 'lib/wasabi/document.rb', line 112 def xml @xml end |
Class Method Details
.validate_element_form_default!(value) ⇒ Object
Validates if a given value
is a valid elementFormDefault value. Raises an ArgumentError
if the value is not valid.
16 17 18 19 20 21 |
# File 'lib/wasabi/document.rb', line 16 def self.validate_element_form_default!(value) return if ELEMENT_FORM_DEFAULTS.include?(value) raise ArgumentError, "Invalid value for elementFormDefault: #{value}\n" + "Must be one of: #{ELEMENT_FORM_DEFAULTS.inspect}" end |
Instance Method Details
#element_form_default ⇒ Object
Returns the value of elementFormDefault.
49 50 51 |
# File 'lib/wasabi/document.rb', line 49 def element_form_default @element_form_default ||= document ? parser.element_form_default : :unqualified end |
#element_form_default=(value) ⇒ Object
Sets the elementFormDefault value.
54 55 56 57 |
# File 'lib/wasabi/document.rb', line 54 def element_form_default=(value) self.class.validate_element_form_default!(value) @element_form_default = value end |
#operations ⇒ Object
Returns a map of SOAP operations.
75 76 77 |
# File 'lib/wasabi/document.rb', line 75 def operations @operations ||= parser.operations end |
#parser ⇒ Object
Parses the WSDL document and returns the Wasabi::Parser
.
117 118 119 |
# File 'lib/wasabi/document.rb', line 117 def parser @parser ||= guard_parse && parse end |
#soap_action(key) ⇒ Object
Returns the SOAP action for a given key
.
65 66 67 |
# File 'lib/wasabi/document.rb', line 65 def soap_action(key) operations[key][:action] if operations[key] end |
#soap_actions ⇒ Object
Returns a list of available SOAP actions.
60 61 62 |
# File 'lib/wasabi/document.rb', line 60 def soap_actions @soap_actions ||= parser.operations.keys end |
#soap_input(key) ⇒ Object
Returns the SOAP input for a given key
.
70 71 72 |
# File 'lib/wasabi/document.rb', line 70 def soap_input(key) operations[key][:input] if operations[key] end |
#type_definitions ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/wasabi/document.rb', line 90 def type_definitions @type_definitions ||= begin result = [] parser.types.each do |type, info| (info.keys - [:namespace]).each do |field| field_type = info[field][:type] tag, namespace = field_type.split(":").reverse result << [[type, field], tag] if user_defined(namespace) end end if document result end end |
#type_namespaces ⇒ Object
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/wasabi/document.rb', line 79 def type_namespaces @type_namespaces ||= begin namespaces = [] parser.types.each do |type, info| namespaces << [[type], info[:namespace]] (info.keys - [:namespace]).each { |field| namespaces << [[type, field], info[:namespace]] } end if document namespaces end end |
#user_defined(namespace) ⇒ Object
Returns whether the given namespace
was defined manually.
105 106 107 108 |
# File 'lib/wasabi/document.rb', line 105 def user_defined(namespace) uri = parser.namespaces[namespace] !(uri =~ %r{^http://schemas.xmlsoap.org} || uri =~ %r{^http://www.w3.org}) end |