google-dfp-api 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/README +17 -2
- data/Rakefile +3 -5
- data/examples/v201101/common/oauth_handling.rb +128 -0
- data/examples/v201101/company_service/create_companies.rb +1 -1
- data/examples/v201101/company_service/get_all_companies.rb +1 -1
- data/examples/v201101/creative_service/create_creatives.rb +1 -1
- data/examples/v201101/creative_service/get_all_creatives.rb +1 -1
- data/examples/v201101/custom_targeting_service/delete_custom_targeting_keys.rb +2 -2
- data/examples/v201101/custom_targeting_service/delete_custom_targeting_values.rb +2 -2
- data/examples/v201101/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +2 -2
- data/examples/v201101/inventory_service/create_ad_units.rb +1 -1
- data/examples/v201101/inventory_service/deactivate_ad_units.rb +2 -2
- data/examples/v201101/inventory_service/get_ad_units_by_statement.rb +1 -1
- data/examples/v201101/inventory_service/get_all_ad_units.rb +1 -1
- data/examples/v201101/line_item_creative_association_service/deactivate_licas.rb +2 -2
- data/examples/v201101/line_item_creative_association_service/get_all_licas.rb +1 -1
- data/examples/v201101/line_item_service/activate_line_items.rb +2 -2
- data/examples/v201101/line_item_service/create_line_items.rb +2 -2
- data/examples/v201101/line_item_service/get_all_line_items.rb +1 -1
- data/examples/v201101/order_service/approve_orders.rb +2 -2
- data/examples/v201101/order_service/create_orders.rb +1 -1
- data/examples/v201101/order_service/get_all_orders.rb +1 -1
- data/examples/v201101/placement_service/create_placements.rb +3 -3
- data/examples/v201101/placement_service/deactivate_placements.rb +2 -2
- data/examples/v201101/placement_service/get_all_placements.rb +1 -1
- data/examples/v201101/user_service/get_all_users.rb +1 -1
- data/examples/v201103/common/oauth_handling.rb +128 -0
- data/examples/v201103/company_service/create_companies.rb +1 -1
- data/examples/v201103/company_service/get_all_companies.rb +1 -1
- data/examples/v201103/creative_service/create_creatives.rb +1 -1
- data/examples/v201103/creative_service/get_all_creatives.rb +1 -1
- data/examples/v201103/custom_targeting_service/delete_custom_targeting_keys.rb +2 -2
- data/examples/v201103/custom_targeting_service/delete_custom_targeting_values.rb +2 -2
- data/examples/v201103/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +2 -2
- data/examples/v201103/inventory_service/create_ad_units.rb +1 -1
- data/examples/v201103/inventory_service/deactivate_ad_units.rb +2 -2
- data/examples/v201103/inventory_service/get_ad_units_by_statement.rb +1 -1
- data/examples/v201103/inventory_service/get_all_ad_units.rb +1 -1
- data/examples/v201103/line_item_creative_association_service/deactivate_licas.rb +2 -2
- data/examples/v201103/line_item_creative_association_service/get_all_licas.rb +1 -1
- data/examples/v201103/line_item_service/activate_line_items.rb +2 -2
- data/examples/v201103/line_item_service/create_line_items.rb +2 -2
- data/examples/v201103/line_item_service/get_all_line_items.rb +1 -1
- data/examples/v201103/order_service/approve_orders.rb +2 -2
- data/examples/v201103/order_service/create_orders.rb +1 -1
- data/examples/v201103/order_service/get_all_orders.rb +1 -1
- data/examples/v201103/placement_service/create_placements.rb +3 -3
- data/examples/v201103/placement_service/deactivate_placements.rb +2 -2
- data/examples/v201103/placement_service/get_all_placements.rb +1 -1
- data/examples/v201103/user_service/get_all_users.rb +1 -1
- data/examples/v201104/common/oauth_handling.rb +128 -0
- data/examples/v201104/company_service/create_companies.rb +1 -1
- data/examples/v201104/company_service/get_all_companies.rb +1 -1
- data/examples/v201104/creative_service/create_creatives.rb +1 -1
- data/examples/v201104/creative_service/get_all_creatives.rb +1 -1
- data/examples/v201104/custom_targeting_service/delete_custom_targeting_keys.rb +2 -2
- data/examples/v201104/custom_targeting_service/delete_custom_targeting_values.rb +2 -2
- data/examples/v201104/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +2 -2
- data/examples/v201104/inventory_service/create_ad_units.rb +1 -1
- data/examples/v201104/inventory_service/deactivate_ad_units.rb +2 -2
- data/examples/v201104/inventory_service/get_ad_units_by_statement.rb +1 -1
- data/examples/v201104/inventory_service/get_all_ad_units.rb +1 -1
- data/examples/v201104/line_item_creative_association_service/deactivate_licas.rb +2 -2
- data/examples/v201104/line_item_creative_association_service/get_all_licas.rb +1 -1
- data/examples/v201104/line_item_service/activate_line_items.rb +2 -2
- data/examples/v201104/line_item_service/create_line_items.rb +1 -1
- data/examples/v201104/line_item_service/get_all_line_items.rb +1 -1
- data/examples/v201104/order_service/approve_orders.rb +2 -2
- data/examples/v201104/order_service/create_orders.rb +1 -1
- data/examples/v201104/order_service/get_all_orders.rb +1 -1
- data/examples/v201104/placement_service/create_placements.rb +3 -3
- data/examples/v201104/placement_service/deactivate_placements.rb +2 -2
- data/examples/v201104/placement_service/get_all_placements.rb +1 -1
- data/examples/v201104/user_service/get_all_users.rb +1 -1
- data/lib/dfp_api.rb +24 -70
- data/lib/dfp_api/api_config.rb +3 -1
- data/lib/dfp_api/client_login_header_handler.rb +56 -0
- data/lib/dfp_api/credential_handler.rb +19 -14
- data/lib/dfp_api/errors.rb +1 -1
- data/lib/dfp_api/v201101/company_service.rb +3 -3
- data/lib/dfp_api/v201101/company_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/creative_service.rb +3 -3
- data/lib/dfp_api/v201101/creative_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/custom_targeting_service.rb +7 -7
- data/lib/dfp_api/v201101/custom_targeting_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/forecast_service.rb +3 -3
- data/lib/dfp_api/v201101/forecast_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/inventory_service.rb +7 -7
- data/lib/dfp_api/v201101/inventory_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/line_item_creative_association_service.rb +7 -7
- data/lib/dfp_api/v201101/line_item_creative_association_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/line_item_service.rb +7 -7
- data/lib/dfp_api/v201101/line_item_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/network_service.rb +7 -7
- data/lib/dfp_api/v201101/network_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/order_service.rb +11 -11
- data/lib/dfp_api/v201101/order_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/placement_service.rb +3 -3
- data/lib/dfp_api/v201101/placement_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/publisher_query_language_service.rb +3 -3
- data/lib/dfp_api/v201101/publisher_query_language_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/report_service.rb +3 -3
- data/lib/dfp_api/v201101/report_service_registry.rb +9 -4
- data/lib/dfp_api/v201101/user_service.rb +7 -7
- data/lib/dfp_api/v201101/user_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/company_service.rb +3 -3
- data/lib/dfp_api/v201103/company_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/creative_service.rb +3 -3
- data/lib/dfp_api/v201103/creative_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/custom_targeting_service.rb +7 -7
- data/lib/dfp_api/v201103/custom_targeting_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/forecast_service.rb +3 -3
- data/lib/dfp_api/v201103/forecast_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/inventory_service.rb +7 -7
- data/lib/dfp_api/v201103/inventory_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/line_item_creative_association_service.rb +7 -7
- data/lib/dfp_api/v201103/line_item_creative_association_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/line_item_service.rb +7 -7
- data/lib/dfp_api/v201103/line_item_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/network_service.rb +7 -7
- data/lib/dfp_api/v201103/network_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/order_service.rb +11 -11
- data/lib/dfp_api/v201103/order_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/placement_service.rb +3 -3
- data/lib/dfp_api/v201103/placement_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/publisher_query_language_service.rb +3 -3
- data/lib/dfp_api/v201103/publisher_query_language_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/report_service.rb +3 -3
- data/lib/dfp_api/v201103/report_service_registry.rb +9 -4
- data/lib/dfp_api/v201103/user_service.rb +7 -7
- data/lib/dfp_api/v201103/user_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/company_service.rb +3 -3
- data/lib/dfp_api/v201104/company_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/creative_service.rb +3 -3
- data/lib/dfp_api/v201104/creative_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/custom_targeting_service.rb +7 -7
- data/lib/dfp_api/v201104/custom_targeting_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/forecast_service.rb +3 -3
- data/lib/dfp_api/v201104/forecast_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/inventory_service.rb +7 -7
- data/lib/dfp_api/v201104/inventory_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/line_item_creative_association_service.rb +7 -7
- data/lib/dfp_api/v201104/line_item_creative_association_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/line_item_service.rb +7 -7
- data/lib/dfp_api/v201104/line_item_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/network_service.rb +7 -7
- data/lib/dfp_api/v201104/network_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/order_service.rb +11 -11
- data/lib/dfp_api/v201104/order_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/placement_service.rb +3 -3
- data/lib/dfp_api/v201104/placement_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/publisher_query_language_service.rb +3 -3
- data/lib/dfp_api/v201104/publisher_query_language_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/report_service.rb +3 -3
- data/lib/dfp_api/v201104/report_service_registry.rb +9 -4
- data/lib/dfp_api/v201104/user_service.rb +7 -7
- data/lib/dfp_api/v201104/user_service_registry.rb +9 -4
- data/test/bugs/test_issue_00000016.rb +6 -5
- data/test/dfp_api/test_dfp_api.rb +29 -7
- metadata +257 -253
@@ -41,7 +41,7 @@ def create_companies()
|
|
41
41
|
company_service = dfp.service(:CompanyService, API_VERSION)
|
42
42
|
|
43
43
|
# Create an array to store local company objects.
|
44
|
-
companies =
|
44
|
+
companies = []
|
45
45
|
ITEM_COUNT.times do |index|
|
46
46
|
companies << {:name => "Advertiser #%d" % index, :type => 'ADVERTISER'}
|
47
47
|
end
|
@@ -42,7 +42,7 @@ def get_all_custom_targeting_keys_and_values()
|
|
42
42
|
|
43
43
|
# Define initial values.
|
44
44
|
offset = 0
|
45
|
-
page =
|
45
|
+
page = {}
|
46
46
|
|
47
47
|
begin
|
48
48
|
# Create a statement to get one page with current offset.
|
@@ -82,7 +82,7 @@ end
|
|
82
82
|
def print_all_values_for_key(custom_targeting_service, custom_targeting_key)
|
83
83
|
# Define initial values.
|
84
84
|
offset = 0
|
85
|
-
page =
|
85
|
+
page = {}
|
86
86
|
|
87
87
|
# Create a statement to get values for given key.
|
88
88
|
statement_text = "WHERE customTargetingKeyId = :key_id LIMIT %d" % PAGE_SIZE
|
@@ -51,7 +51,7 @@ def create_ad_units()
|
|
51
51
|
puts "Using effective root ad unit: %d" % effective_root_ad_unit_id
|
52
52
|
|
53
53
|
# Create an array to store local ad unit objects.
|
54
|
-
ad_units =
|
54
|
+
ad_units = []
|
55
55
|
ITEM_COUNT.times do |index|
|
56
56
|
ad_units << {
|
57
57
|
:name => "Ad_Unit_%d" % index,
|
@@ -61,7 +61,7 @@ def get_ad_units_by_statement()
|
|
61
61
|
page = inventory_service.get_ad_units_by_statement(statement)
|
62
62
|
|
63
63
|
if page[:results]
|
64
|
-
# Print details about each
|
64
|
+
# Print details about each ad unit in results.
|
65
65
|
page[:results].each_with_index do |ad_unit, index|
|
66
66
|
puts "%d) Ad unit ID: %d, name: %s, status: %s." %
|
67
67
|
[index, ad_unit[:id], ad_unit[:name], ad_unit[:status]]
|
@@ -49,7 +49,7 @@ def create_orders()
|
|
49
49
|
trafficker_id = 'INSERT_TRAFFICKER_ID_HERE'.to_i
|
50
50
|
|
51
51
|
# Create an array to store local order objects.
|
52
|
-
orders =
|
52
|
+
orders = []
|
53
53
|
ITEM_COUNT.times do |index|
|
54
54
|
orders << {:name => "Order #%d" % index,
|
55
55
|
:advertiser_id => advertiser_id,
|
@@ -46,21 +46,21 @@ def create_placements()
|
|
46
46
|
skyscraper_ad_unit_placement = {
|
47
47
|
:name => "Skyscraper AdUnit Placement #%d" % (Time.new.to_f * 1000),
|
48
48
|
:description => 'Contains ad units for creatives of size 120x600',
|
49
|
-
:targeted_ad_unit_ids =>
|
49
|
+
:targeted_ad_unit_ids => []
|
50
50
|
}
|
51
51
|
|
52
52
|
# Create local placement object to store medium square ad units.
|
53
53
|
medium_square_ad_unit_placement = {
|
54
54
|
:name => "Medium Square AdUnit Placement #%d" % (Time.new.to_f * 1000),
|
55
55
|
:description => 'Contains ad units for creatives of size 300x250',
|
56
|
-
:targeted_ad_unit_ids =>
|
56
|
+
:targeted_ad_unit_ids => []
|
57
57
|
}
|
58
58
|
|
59
59
|
# Create local placement object to store banner ad units.
|
60
60
|
banner_ad_unit_placement = {
|
61
61
|
:name => "Banner AdUnit Placement #%d" % (Time.new.to_f * 1000),
|
62
62
|
:description => 'Contains ad units for creatives of size 468x60',
|
63
|
-
:targeted_ad_unit_ids =>
|
63
|
+
:targeted_ad_unit_ids => []
|
64
64
|
}
|
65
65
|
|
66
66
|
# Get the first 500 ad units.
|
data/lib/dfp_api.rb
CHANGED
@@ -20,17 +20,17 @@
|
|
20
20
|
# Contains the main classes for the client library. Takes care of all
|
21
21
|
# dependencies.
|
22
22
|
|
23
|
-
gem 'google-ads-common', '~>0.
|
24
|
-
|
23
|
+
gem 'google-ads-common', '~>0.5.0'
|
24
|
+
|
25
|
+
require 'savon'
|
26
|
+
|
25
27
|
require 'ads_common/api'
|
26
|
-
require 'ads_common/
|
27
|
-
require 'ads_common/auth/client_login_handler'
|
28
|
-
require 'ads_common/savon_headers/client_login_header_handler'
|
28
|
+
require 'ads_common/savon_headers/oauth_header_handler'
|
29
29
|
require 'ads_common/savon_headers/simple_header_handler'
|
30
|
-
require 'dfp_api/errors'
|
31
30
|
require 'dfp_api/api_config'
|
32
|
-
require 'dfp_api/
|
31
|
+
require 'dfp_api/client_login_header_handler'
|
33
32
|
require 'dfp_api/credential_handler'
|
33
|
+
require 'dfp_api/errors'
|
34
34
|
|
35
35
|
# Main namespace for all the client library's modules and classes.
|
36
36
|
module DfpApi
|
@@ -46,6 +46,11 @@ module DfpApi
|
|
46
46
|
@credential_handler = DfpApi::CredentialHandler.new(@config)
|
47
47
|
end
|
48
48
|
|
49
|
+
# Getter for the API service configurations.
|
50
|
+
def api_config
|
51
|
+
DfpApi::ApiConfig
|
52
|
+
end
|
53
|
+
|
49
54
|
# Sets the logger to use.
|
50
55
|
def logger=(logger)
|
51
56
|
super(logger)
|
@@ -55,75 +60,24 @@ module DfpApi
|
|
55
60
|
end
|
56
61
|
end
|
57
62
|
|
58
|
-
# Getter for the API service configurations.
|
59
|
-
def api_config
|
60
|
-
DfpApi::ApiConfig
|
61
|
-
end
|
62
|
-
|
63
63
|
private
|
64
64
|
|
65
|
-
# Creates an appropriate authentication handler for each service (reuses the
|
66
|
-
# ClientLogin one to avoid generating multiple tokens unnecessarily).
|
67
|
-
def create_auth_handler(environment, version)
|
68
|
-
if @client_login_handler.nil?
|
69
|
-
auth_server = api_config.auth_server(environment)
|
70
|
-
@client_login_handler =
|
71
|
-
AdsCommon::Auth::ClientLoginHandler.new(config, auth_server,
|
72
|
-
api_config.headers_config[:LOGIN_SERVICE_NAME])
|
73
|
-
end
|
74
|
-
return @client_login_handler
|
75
|
-
end
|
76
|
-
|
77
65
|
# Retrieve DFP HeaderHandlers per credential.
|
78
|
-
def soap_header_handlers(auth_handler, header_list, version)
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
66
|
+
def soap_header_handlers(auth_handler, header_list, version, namespace)
|
67
|
+
handler = nil
|
68
|
+
auth_method = @config.read('authentication.method',
|
69
|
+
'ClientLogin').to_s.upcase.to_sym
|
70
|
+
handler = case auth_method
|
71
|
+
when :CLIENTLOGIN
|
72
|
+
(version == :v201101) ?
|
73
|
+
AdsCommon::SavonHeaders::SimpleHeaderHandler :
|
74
|
+
DfpApi::ClientLoginHeaderHandler
|
75
|
+
when :OAUTH
|
76
|
+
AdsCommon::SavonHeaders::OAuthHeaderHandler
|
87
77
|
end
|
78
|
+
ns = api_config.headers_config[:HEADER_NAMESPACE_PREAMBLE] + version.to_s
|
88
79
|
return [handler.new(@credential_handler, auth_handler,
|
89
80
|
api_config.headers_config[:REQUEST_HEADER], ns, version)]
|
90
81
|
end
|
91
|
-
|
92
|
-
# Handle loading of a single service wrapper. Needs to be implemented on
|
93
|
-
# specific API level.
|
94
|
-
#
|
95
|
-
# Args:
|
96
|
-
# - version: intended API version. Must be a symbol.
|
97
|
-
# - service: name for the intended service. Must be a symbol.
|
98
|
-
#
|
99
|
-
# Returns:
|
100
|
-
# - a wrapper generated for the service.
|
101
|
-
#
|
102
|
-
def prepare_wrapper(version, service)
|
103
|
-
environment = config.read('service.environment')
|
104
|
-
api_config.do_require(version, service)
|
105
|
-
endpoint = api_config.endpoint(environment, version, service)
|
106
|
-
interface_class_name = api_config.interface_name(version, service)
|
107
|
-
endpoint_url = endpoint.nil? ? nil : endpoint.to_s + service.to_s
|
108
|
-
wrapper = class_for_path(interface_class_name).new(endpoint_url)
|
109
|
-
|
110
|
-
auth_handler = create_auth_handler(environment, version)
|
111
|
-
header_list =
|
112
|
-
auth_handler.header_list(@credential_handler.credentials(version))
|
113
|
-
|
114
|
-
soap_handlers = soap_header_handlers(auth_handler, header_list, version)
|
115
|
-
soap_handlers.each do |handler|
|
116
|
-
wrapper.headerhandler << handler
|
117
|
-
end
|
118
|
-
|
119
|
-
return wrapper
|
120
|
-
end
|
121
|
-
|
122
|
-
# Converts complete class path into class object.
|
123
|
-
def class_for_path(path)
|
124
|
-
path.split('::').inject(Kernel) do |scope, const_name|
|
125
|
-
scope.const_get(const_name)
|
126
|
-
end
|
127
|
-
end
|
128
82
|
end
|
129
83
|
end
|
data/lib/dfp_api/api_config.rb
CHANGED
@@ -40,7 +40,7 @@ module DfpApi
|
|
40
40
|
# Set other constants
|
41
41
|
API_NAME = 'DfpApi'
|
42
42
|
API_PATH = 'dfp_api'
|
43
|
-
CLIENT_LIB_VERSION = '0.2.
|
43
|
+
CLIENT_LIB_VERSION = '0.2.2'
|
44
44
|
DEFAULT_CONFIG_FILENAME = 'dfp_api.yml'
|
45
45
|
|
46
46
|
# Configure the services available to each version
|
@@ -65,11 +65,13 @@ module DfpApi
|
|
65
65
|
# Configure the different environments, with the base URL for each one
|
66
66
|
@@environment_config = {
|
67
67
|
:PRODUCTION => {
|
68
|
+
:oauth_scope => 'https://www.google.com/apis/ads/publisher/',
|
68
69
|
:v201101 => 'https://www.google.com/apis/ads/publisher/',
|
69
70
|
:v201103 => 'https://www.google.com/apis/ads/publisher/',
|
70
71
|
:v201104 => 'https://www.google.com/apis/ads/publisher/'
|
71
72
|
},
|
72
73
|
:SANDBOX => {
|
74
|
+
:oauth_scope => 'https://sandbox.google.com/apis/ads/publisher/',
|
73
75
|
:v201101 => 'https://sandbox.google.com/apis/ads/publisher/',
|
74
76
|
:v201103 => 'https://sandbox.google.com/apis/ads/publisher/',
|
75
77
|
:v201104 => 'https://sandbox.google.com/apis/ads/publisher/'
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# Authors:: api.dklimkin@gmail.com (Danial Klimkin)
|
4
|
+
#
|
5
|
+
# Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
|
6
|
+
#
|
7
|
+
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
16
|
+
# implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
# Handles SOAP headers and namespaces definition for ClientLogin type header.
|
21
|
+
|
22
|
+
require 'ads_common/savon_headers/simple_header_handler'
|
23
|
+
|
24
|
+
module DfpApi
|
25
|
+
class ClientLoginHeaderHandler < AdsCommon::SavonHeaders::SimpleHeaderHandler
|
26
|
+
private
|
27
|
+
|
28
|
+
# Generates SOAP request header with login credentials and namespace
|
29
|
+
# definition.
|
30
|
+
#
|
31
|
+
# Args:
|
32
|
+
# - None
|
33
|
+
#
|
34
|
+
# Returns:
|
35
|
+
# - Hash containing a header with filled in credentials
|
36
|
+
#
|
37
|
+
def generate_request_header()
|
38
|
+
headers = @auth_handler.headers(@credential_handler.credentials)
|
39
|
+
return headers.inject({}) do |request_header, (header, value)|
|
40
|
+
if header == :authToken
|
41
|
+
auth_header = prepend_namespace('authentication')
|
42
|
+
request_header[auth_header] = {
|
43
|
+
prepend_namespace('token') => value
|
44
|
+
}
|
45
|
+
request_header[:attributes!] ||= {}
|
46
|
+
request_header[:attributes!][auth_header] = {
|
47
|
+
'xsi:type' => prepend_namespace('ClientLogin'),
|
48
|
+
}
|
49
|
+
else
|
50
|
+
request_header[prepend_namespace(header)] = value
|
51
|
+
end
|
52
|
+
request_header
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|