Class: AdsCommon::SavonHeaders::BaseHeaderHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/ads_common/savon_headers/base_header_handler.rb

Direct Known Subclasses

OAuthHeaderHandler

Constant Summary collapse

DEFAULT_NAMESPACE =

Default namespace alias.

'wsdl'
DEFAULT_ELEMENT_NAME =
'RequestHeader'

Instance Method Summary collapse

Constructor Details

#initialize(credential_handler, auth_handler, header_ns, namespace, version) ⇒ BaseHeaderHandler

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


39
40
41
42
43
44
45
46
# 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

Instance Method Details

#identifierObject

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



77
78
79
# File 'lib/ads_common/savon_headers/base_header_handler.rb', line 77

def identifier()
  return @credential_handler.identifier()
end

#prepare_request(request, soap) ⇒ Object

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


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 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