class AdsCommon::SavonHeaders::BaseHeaderHandler

Constants

DEFAULT_ELEMENT_NAME
DEFAULT_NAMESPACE

Default namespace alias.

Public Class Methods

new(credential_handler, auth_handler, header_ns, namespace, version) click to toggle source

Initializes a header handler.

Args:

- credential_handler: a header with credential data
- auth_handler: a header with auth data
- header_ns: namespace to use for headers
- namespace: default namespace to use
- version: services version
# File lib/ads_common/savon_headers/base_header_handler.rb, line 39
def initialize(credential_handler, auth_handler, header_ns, namespace,
               version)
  @credential_handler = credential_handler
  @auth_handler = auth_handler
  @header_ns = header_ns
  @namespace = namespace
  @version = version
end

Public Instance Methods

identifier() click to toggle source

Returns the account/network identifier based on the current context.

# File lib/ads_common/savon_headers/base_header_handler.rb, line 77
def identifier()
  return @credential_handler.identifier()
end
prepare_request(request, soap) click to toggle source

Enriches soap object with API-specific headers like namespaces, login credentials etc.

Needs to be overriden.

Args:

- request: a HTTPI Request for extra configuration
- soap: a Savon soap object to fill fields in

Returns:

- Modified request and soap structures
# File lib/ads_common/savon_headers/base_header_handler.rb, line 60
def prepare_request(request, soap)
  soap.namespace = @namespace
  # Sets the default namespace for the body.
  soap.input[2] = {:xmlns => @namespace}
  # Sets User-Agent in the HTTP header.
  request.headers['User-Agent'] =
      @credential_handler.generate_user_agent()
  # Set headers namespace.
  header_name = prepend_namespace(get_header_element_name())
  soap.header[:attributes!] ||= {}
  soap.header[:attributes!][header_name] ||= {}
  soap.header[:attributes!][header_name]['xmlns'] = @header_ns
  # Generate headers.
  generate_headers(request, soap)
end

Private Instance Methods

generate_headers(request, soap) click to toggle source

Generates SOAP headers with the default request header element.

# File lib/ads_common/savon_headers/base_header_handler.rb, line 101
def generate_headers(request, soap)
  element_name = get_header_element_name()
  soap.header[prepend_namespace(element_name)] = generate_request_header()
end
generate_request_header() click to toggle source

Generates SOAP default request header with all requested headers.

# File lib/ads_common/savon_headers/base_header_handler.rb, line 107
def generate_request_header()
  return @credential_handler.credentials[:extra_headers]
end
get_header_element_name() click to toggle source

Returns element name for SOAP header.

# File lib/ads_common/savon_headers/base_header_handler.rb, line 84
def get_header_element_name()
  return DEFAULT_ELEMENT_NAME
end
prepend_namespace(str) click to toggle source

Adds namespace to the given string.

Args:

- str: String to prepend with a namespace

Returns:

- String with a namespace
# File lib/ads_common/savon_headers/base_header_handler.rb, line 96
def prepend_namespace(str)
  return "%s:%s" % [DEFAULT_NAMESPACE, str]
end