class Savon::Header

Attributes

global_header[R]
gyoku_options[R]
local_header[R]
wsse_auth[R]
wsse_signature[R]
wsse_timestamp[R]

Public Class Methods

new(globals, locals) click to toggle source
# File lib/savon/header.rb, line 8
def initialize(globals, locals)
  @gyoku_options  = { :key_converter => globals[:convert_request_keys_to] }

  @wsse_auth      = locals[:wsse_auth].nil? ? globals[:wsse_auth] : locals[:wsse_auth]
  @wsse_timestamp = locals[:wsse_timestamp].nil? ? globals[:wsse_timestamp] : locals[:wsse_timestamp]
  @wsse_signature = locals[:wsse_signature].nil? ? globals[:wsse_signature] : locals[:wsse_signature]

  @global_header  = globals[:soap_header]
  @local_header   = locals[:soap_header]

  @globals        = globals
  @locals         = locals

  @header = build
end

Public Instance Methods

empty?() click to toggle source
# File lib/savon/header.rb, line 27
def empty?
  @header.empty?
end
to_s() click to toggle source
# File lib/savon/header.rb, line 31
def to_s
  @header
end

Private Instance Methods

akami() click to toggle source
# File lib/savon/header.rb, line 81
def akami
  wsse = Akami.wsse
  wsse.credentials(*wsse_auth) if wsse_auth
  wsse.timestamp = wsse_timestamp if wsse_timestamp
  if wsse_signature && wsse_signature.have_document?
    wsse.signature = wsse_signature
  end

  wsse
end
build() click to toggle source
# File lib/savon/header.rb, line 37
def build
  build_header + build_wsa_header + build_wsse_header
end
build_header() click to toggle source
# File lib/savon/header.rb, line 41
def build_header
  header =
    if global_header.kind_of?(Hash) && local_header.kind_of?(Hash)
      global_header.merge(local_header)
    elsif local_header
      local_header
    else
      global_header
    end

  convert_to_xml(header)
end
build_wsa_header() click to toggle source
# File lib/savon/header.rb, line 59
def build_wsa_header
   return '' unless @globals[:use_wsa_headers]
   convert_to_xml({
     'wsa:Action' => @locals[:soap_action],
     'wsa:To' => @globals[:endpoint],
     'wsa:MessageID' => "urn:uuid:#{SecureRandom.uuid}",
     attributes!: {
      'wsa:MessageID' => {
        "xmlns:wsa" => "http://schemas.xmlsoap.org/ws/2004/08/addressing"
      }
     }
   })
end
build_wsse_header() click to toggle source
# File lib/savon/header.rb, line 54
def build_wsse_header
  wsse_header = akami
  wsse_header.respond_to?(:to_xml) ? wsse_header.to_xml : ""
end
convert_to_xml(hash_or_string) click to toggle source
# File lib/savon/header.rb, line 73
def convert_to_xml(hash_or_string)
  if hash_or_string.kind_of? Hash
    Gyoku.xml(hash_or_string, gyoku_options)
  else
    hash_or_string.to_s
  end
end