Class: Savon::SOAP::XML
- Inherits:
-
Object
- Object
- Savon::SOAP::XML
- Defined in:
- lib/savon/soap/xml.rb
Overview
= Savon::SOAP::XML
Represents the SOAP request XML. Contains various global and per request/instance settings like the SOAP version, header, body and namespaces.
Constant Summary collapse
- SchemaTypes =
XML Schema Type namespaces.
{ "xmlns:xsd" => "http://www.w3.org/2001/XMLSchema", "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance" }
Instance Attribute Summary collapse
-
#body ⇒ Object
Accepts a +block+ and yields a Builder::XmlMarkup object to let you create custom body XML.
-
#config ⇒ Object
Returns the value of attribute config.
-
#element_form_default ⇒ Object
Accessor for whether all local elements should be namespaced.
-
#encoding ⇒ Object
Returns the SOAP request encoding.
-
#endpoint ⇒ Object
Accessor for the SOAP +endpoint+.
-
#env_namespace ⇒ Object
Returns the SOAP envelope namespace.
-
#header ⇒ Object
Returns the SOAP +header+.
-
#input ⇒ Object
Accessor for the SOAP +input+ tag.
-
#namespace ⇒ Object
Accessor for the default namespace URI.
-
#namespace_identifier ⇒ Object
Returns the default namespace identifier.
-
#namespaces ⇒ Object
Returns the +namespaces+.
-
#wsse ⇒ Object
Accessor for the Savon::WSSE object.
-
#xml(directive_tag = :xml, attrs = {}) ⇒ Object
Accepts a +block+ and yields a Builder::XmlMarkup object to let you create a completely custom XML.
Instance Method Summary collapse
-
#initialize(config, endpoint = nil, input = nil, body = nil) ⇒ XML
constructor
Accepts an +endpoint+, an +input+ tag and a SOAP +body+.
- #namespace_by_uri(uri) ⇒ Object
-
#to_xml ⇒ Object
Returns the XML for a SOAP request.
- #types ⇒ Object
- #use_namespace(path, uri) ⇒ Object
- #used_namespaces ⇒ Object
-
#version ⇒ Object
Returns the SOAP +version+.
-
#version=(version) ⇒ Object
Sets the SOAP +version+.
Constructor Details
#initialize(config, endpoint = nil, input = nil, body = nil) ⇒ XML
Accepts an +endpoint+, an +input+ tag and a SOAP +body+.
28 29 30 31 32 33 |
# File 'lib/savon/soap/xml.rb', line 28 def initialize(config, endpoint = nil, input = nil, body = nil) self.config = config self.endpoint = endpoint if endpoint self.input = input if input self.body = body if body end |
Instance Attribute Details
#body ⇒ Object
Accepts a +block+ and yields a Builder::XmlMarkup object to let you create custom body XML.
136 137 138 139 |
# File 'lib/savon/soap/xml.rb', line 136 def body @body = yield builder(nil) if block_given? @body end |
#config ⇒ Object
Returns the value of attribute config.
35 36 37 |
# File 'lib/savon/soap/xml.rb', line 35 def config @config end |
#element_form_default ⇒ Object
Accessor for whether all local elements should be namespaced.
118 119 120 |
# File 'lib/savon/soap/xml.rb', line 118 def element_form_default @element_form_default end |
#encoding ⇒ Object
Returns the SOAP request encoding. Defaults to "UTF-8".
127 128 129 |
# File 'lib/savon/soap/xml.rb', line 127 def encoding @encoding ||= "UTF-8" end |
#endpoint ⇒ Object
Accessor for the SOAP +endpoint+.
41 42 43 |
# File 'lib/savon/soap/xml.rb', line 41 def endpoint @endpoint end |
#env_namespace ⇒ Object
Returns the SOAP envelope namespace. Uses the global namespace if set Defaults to :env.
66 67 68 |
# File 'lib/savon/soap/xml.rb', line 66 def env_namespace @env_namespace ||= config.env_namespace.nil? ? :env : config.env_namespace end |
#header ⇒ Object
Returns the SOAP +header+. Defaults to an empty Hash.
58 59 60 |
# File 'lib/savon/soap/xml.rb', line 58 def header @header ||= config.soap_header.nil? ? {} : config.soap_header end |
#input ⇒ Object
Accessor for the SOAP +input+ tag.
38 39 40 |
# File 'lib/savon/soap/xml.rb', line 38 def input @input end |
#namespace ⇒ Object
Accessor for the default namespace URI.
121 122 123 |
# File 'lib/savon/soap/xml.rb', line 121 def namespace @namespace end |
#namespace_identifier ⇒ Object
Returns the default namespace identifier.
113 114 115 |
# File 'lib/savon/soap/xml.rb', line 113 def namespace_identifier @namespace_identifier ||= :wsdl end |
#namespaces ⇒ Object
Returns the +namespaces+. Defaults to a Hash containing the SOAP envelope namespace.
74 75 76 77 78 79 80 |
# File 'lib/savon/soap/xml.rb', line 74 def namespaces @namespaces ||= begin key = ["xmlns"] key << env_namespace if env_namespace && env_namespace != "" { key.join(":") => SOAP::Namespace[version] } end end |
#wsse ⇒ Object
Accessor for the Savon::WSSE object.
124 125 126 |
# File 'lib/savon/soap/xml.rb', line 124 def wsse @wsse end |
#xml(directive_tag = :xml, attrs = {}) ⇒ Object
Accepts a +block+ and yields a Builder::XmlMarkup object to let you create a completely custom XML.
147 148 149 |
# File 'lib/savon/soap/xml.rb', line 147 def xml(directive_tag = :xml, attrs = {}) @xml = yield builder(directive_tag, attrs) if block_given? end |
Instance Method Details
#namespace_by_uri(uri) ⇒ Object
82 83 84 85 86 87 |
# File 'lib/savon/soap/xml.rb', line 82 def namespace_by_uri(uri) namespaces.each do |candidate_identifier, candidate_uri| return candidate_identifier.gsub(/^xmlns:/, '') if candidate_uri == uri end nil end |
#to_xml ⇒ Object
Returns the XML for a SOAP request.
155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/savon/soap/xml.rb', line 155 def to_xml @xml ||= tag(builder, :Envelope, complete_namespaces) do |xml| tag(xml, :Header) { xml << header_for_xml } unless header_for_xml.empty? if input.nil? tag(xml, :Body) else tag(xml, :Body) { xml.tag!(*add_namespace_to_input) { xml << body_to_xml } } end end end |
#types ⇒ Object
105 106 107 |
# File 'lib/savon/soap/xml.rb', line 105 def types @types ||= {} end |
#use_namespace(path, uri) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/savon/soap/xml.rb', line 93 def use_namespace(path, uri) @internal_namespace_count ||= 0 unless identifier = namespace_by_uri(uri) identifier = "ins#{@internal_namespace_count}" namespaces["xmlns:#{identifier}"] = uri @internal_namespace_count += 1 end used_namespaces[path] = identifier end |
#used_namespaces ⇒ Object
89 90 91 |
# File 'lib/savon/soap/xml.rb', line 89 def used_namespaces @used_namespaces ||= {} end |
#version ⇒ Object
Returns the SOAP +version+. Defaults to Savon.config.soap_version.
50 51 52 |
# File 'lib/savon/soap/xml.rb', line 50 def version @version ||= config.soap_version end |