google-dfp-api 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +201 -0
- data/ChangeLog +10 -0
- data/README +210 -0
- data/Rakefile +83 -0
- data/examples/v201101/common/error_handling.rb +76 -0
- data/examples/v201101/company_service/create_companies.rb +82 -0
- data/examples/v201101/company_service/get_all_companies.rb +92 -0
- data/examples/v201101/company_service/get_companies_by_statement.rb +88 -0
- data/examples/v201101/company_service/get_company.rb +72 -0
- data/examples/v201101/company_service/update_companies.rb +95 -0
- data/examples/v201101/creative_service/copy_image_creatives.rb +117 -0
- data/examples/v201101/creative_service/create_creatives.rb +109 -0
- data/examples/v201101/creative_service/get_all_creatives.rb +93 -0
- data/examples/v201101/creative_service/get_creative.rb +72 -0
- data/examples/v201101/creative_service/get_creatives_by_statement.rb +87 -0
- data/examples/v201101/creative_service/update_creatives.rb +98 -0
- data/examples/v201101/custom_targeting_service/create_custom_targeting_keys_and_values.rb +118 -0
- data/examples/v201101/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
- data/examples/v201101/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
- data/examples/v201101/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
- data/examples/v201101/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
- data/examples/v201101/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
- data/examples/v201101/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
- data/examples/v201101/custom_targeting_service/update_custom_targeting_values.rb +106 -0
- data/examples/v201101/forecast_service/get_forecast.rb +103 -0
- data/examples/v201101/forecast_service/get_forecast_by_id.rb +80 -0
- data/examples/v201101/inventory_service/create_ad_units.rb +98 -0
- data/examples/v201101/inventory_service/deactivate_ad_units.rb +119 -0
- data/examples/v201101/inventory_service/get_ad_unit.rb +72 -0
- data/examples/v201101/inventory_service/get_ad_units_by_statement.rb +96 -0
- data/examples/v201101/inventory_service/get_all_ad_units.rb +93 -0
- data/examples/v201101/inventory_service/update_ad_units.rb +94 -0
- data/examples/v201101/line_item_creative_association_service/create_licas.rb +94 -0
- data/examples/v201101/line_item_creative_association_service/deactivate_licas.rb +127 -0
- data/examples/v201101/line_item_creative_association_service/get_all_licas.rb +95 -0
- data/examples/v201101/line_item_creative_association_service/get_lica.rb +77 -0
- data/examples/v201101/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
- data/examples/v201101/line_item_creative_association_service/update_licas.rb +92 -0
- data/examples/v201101/line_item_service/activate_line_items.rb +131 -0
- data/examples/v201101/line_item_service/create_line_items.rb +141 -0
- data/examples/v201101/line_item_service/get_all_line_items.rb +94 -0
- data/examples/v201101/line_item_service/get_line_item.rb +74 -0
- data/examples/v201101/line_item_service/get_line_items_by_statement.rb +89 -0
- data/examples/v201101/line_item_service/target_custom_criteria.rb +135 -0
- data/examples/v201101/line_item_service/update_line_items.rb +110 -0
- data/examples/v201101/network_service/get_all_networks.rb +74 -0
- data/examples/v201101/network_service/get_current_network.rb +66 -0
- data/examples/v201101/order_service/approve_orders.rb +116 -0
- data/examples/v201101/order_service/create_orders.rb +93 -0
- data/examples/v201101/order_service/get_all_orders.rb +93 -0
- data/examples/v201101/order_service/get_order.rb +74 -0
- data/examples/v201101/order_service/get_orders_by_statement.rb +90 -0
- data/examples/v201101/order_service/update_orders.rb +95 -0
- data/examples/v201101/placement_service/create_placements.rb +128 -0
- data/examples/v201101/placement_service/deactivate_placements.rb +118 -0
- data/examples/v201101/placement_service/get_all_placements.rb +93 -0
- data/examples/v201101/placement_service/get_placement.rb +74 -0
- data/examples/v201101/placement_service/get_placements_by_statement.rb +86 -0
- data/examples/v201101/placement_service/update_placements.rb +96 -0
- data/examples/v201101/publisher_query_language_service/get_all_cities.rb +85 -0
- data/examples/v201101/publisher_query_language_service/get_all_countries.rb +85 -0
- data/examples/v201101/publisher_query_language_service/get_all_metros.rb +85 -0
- data/examples/v201101/publisher_query_language_service/get_all_regions.rb +85 -0
- data/examples/v201101/report_service/download_report.rb +81 -0
- data/examples/v201101/report_service/run_delivery_report.rb +89 -0
- data/examples/v201101/report_service/run_inventory_report.rb +90 -0
- data/examples/v201101/report_service/run_sales_report.rb +89 -0
- data/examples/v201101/user_service/create_users.rb +89 -0
- data/examples/v201101/user_service/deactivate_users.rb +99 -0
- data/examples/v201101/user_service/get_all_roles.rb +73 -0
- data/examples/v201101/user_service/get_all_users.rb +92 -0
- data/examples/v201101/user_service/get_user.rb +73 -0
- data/examples/v201101/user_service/get_users_by_statement.rb +79 -0
- data/examples/v201101/user_service/update_users.rb +89 -0
- data/lib/dfp_api.rb +142 -0
- data/lib/dfp_api/api_config.rb +126 -0
- data/lib/dfp_api/credential_handler.rb +60 -0
- data/lib/dfp_api/errors.rb +59 -0
- data/lib/dfp_api/extensions.rb +54 -0
- data/lib/dfp_api/v201101/company_service.rb +52 -0
- data/lib/dfp_api/v201101/company_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/creative_service.rb +52 -0
- data/lib/dfp_api/v201101/creative_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/custom_targeting_service.rb +60 -0
- data/lib/dfp_api/v201101/custom_targeting_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/forecast_service.rb +36 -0
- data/lib/dfp_api/v201101/forecast_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/inventory_service.rb +56 -0
- data/lib/dfp_api/v201101/inventory_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/line_item_creative_association_service.rb +56 -0
- data/lib/dfp_api/v201101/line_item_creative_association_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/line_item_service.rb +56 -0
- data/lib/dfp_api/v201101/line_item_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/network_service.rb +40 -0
- data/lib/dfp_api/v201101/network_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/order_service.rb +56 -0
- data/lib/dfp_api/v201101/order_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/placement_service.rb +56 -0
- data/lib/dfp_api/v201101/placement_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/publisher_query_language_service.rb +32 -0
- data/lib/dfp_api/v201101/publisher_query_language_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/report_service.rb +40 -0
- data/lib/dfp_api/v201101/report_service_registry.rb +37 -0
- data/lib/dfp_api/v201101/user_service.rb +60 -0
- data/lib/dfp_api/v201101/user_service_registry.rb +37 -0
- metadata +204 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
#
|
|
3
|
+
# Author:: 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
|
+
# This example gets all orders. To create orders, run create_orders.rb.
|
|
21
|
+
#
|
|
22
|
+
# Tags: OrderService.getOrdersByStatement
|
|
23
|
+
|
|
24
|
+
require 'rubygems'
|
|
25
|
+
require 'dfp_api'
|
|
26
|
+
|
|
27
|
+
API_VERSION = :v201101
|
|
28
|
+
PAGE_SIZE = 500
|
|
29
|
+
|
|
30
|
+
def get_all_orders()
|
|
31
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
32
|
+
dfp = DfpApi::Api.new
|
|
33
|
+
|
|
34
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
35
|
+
# the configuration file or provide your own logger:
|
|
36
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
37
|
+
|
|
38
|
+
# Get the OrderService.
|
|
39
|
+
order_service = dfp.service(:OrderService, API_VERSION)
|
|
40
|
+
|
|
41
|
+
# Define initial values.
|
|
42
|
+
offset = 0
|
|
43
|
+
page = Hash.new
|
|
44
|
+
|
|
45
|
+
begin
|
|
46
|
+
# Create statement for one page with current offset.
|
|
47
|
+
statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
|
|
48
|
+
|
|
49
|
+
# Get orders by statement.
|
|
50
|
+
page = order_service.get_orders_by_statement(statement)
|
|
51
|
+
|
|
52
|
+
if page[:results]
|
|
53
|
+
# Increase query offset by page size.
|
|
54
|
+
offset += PAGE_SIZE
|
|
55
|
+
|
|
56
|
+
# Get the start index for printout.
|
|
57
|
+
start_index = page[:start_index]
|
|
58
|
+
|
|
59
|
+
# Print details about each order in results page.
|
|
60
|
+
page[:results].each_with_index do |order, index|
|
|
61
|
+
puts "%d) Order ID: %d, name: %s, advertiser ID: %d" %
|
|
62
|
+
[index + start_index, order[:id], order[:name],
|
|
63
|
+
order[:advertiser_id]]
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end while offset < page[:total_result_set_size]
|
|
67
|
+
|
|
68
|
+
# Print a footer
|
|
69
|
+
if page.include?(:total_result_set_size)
|
|
70
|
+
puts "Total number of orders: %d" % page[:total_result_set_size]
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
if __FILE__ == $0
|
|
75
|
+
begin
|
|
76
|
+
get_all_orders()
|
|
77
|
+
|
|
78
|
+
# HTTP errors.
|
|
79
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
80
|
+
puts "HTTP Error: %s" % e
|
|
81
|
+
|
|
82
|
+
# API errors.
|
|
83
|
+
rescue DfpApi::Errors::ApiException => e
|
|
84
|
+
puts "Message: %s" % e.message
|
|
85
|
+
puts 'Errors:'
|
|
86
|
+
e.errors.each_with_index do |error, index|
|
|
87
|
+
puts "\tError [%d]:" % (index + 1)
|
|
88
|
+
error.each do |field, value|
|
|
89
|
+
puts "\t\t%s: %s" % [field, value]
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
#
|
|
3
|
+
# Author:: 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
|
+
# This example gets an order by its ID. To determine which orders exist, run
|
|
21
|
+
# get_all_orders.rb.
|
|
22
|
+
#
|
|
23
|
+
# Tags: OrderService.getOrder
|
|
24
|
+
|
|
25
|
+
require 'rubygems'
|
|
26
|
+
require 'dfp_api'
|
|
27
|
+
|
|
28
|
+
API_VERSION = :v201101
|
|
29
|
+
|
|
30
|
+
def get_order()
|
|
31
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
32
|
+
dfp = DfpApi::Api.new
|
|
33
|
+
|
|
34
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
35
|
+
# the configuration file or provide your own logger:
|
|
36
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
37
|
+
|
|
38
|
+
# Get the OrderService.
|
|
39
|
+
order_service = dfp.service(:OrderService, API_VERSION)
|
|
40
|
+
|
|
41
|
+
# Set the ID of the order to get.
|
|
42
|
+
order_id = 'INSERT_ORDER_ID_HERE'.to_i
|
|
43
|
+
|
|
44
|
+
# Get the order.
|
|
45
|
+
order = order_service.get_order(order_id)
|
|
46
|
+
|
|
47
|
+
if order
|
|
48
|
+
puts "Order with ID: %d, advertiser ID: %d and name %s was found." %
|
|
49
|
+
[order[:id], order[:advertiser_id], order[:name]]
|
|
50
|
+
else
|
|
51
|
+
puts 'No order found for this ID.'
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
if __FILE__ == $0
|
|
56
|
+
begin
|
|
57
|
+
get_order()
|
|
58
|
+
|
|
59
|
+
# HTTP errors.
|
|
60
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
61
|
+
puts "HTTP Error: %s" % e
|
|
62
|
+
|
|
63
|
+
# API errors.
|
|
64
|
+
rescue DfpApi::Errors::ApiException => e
|
|
65
|
+
puts "Message: %s" % e.message
|
|
66
|
+
puts 'Errors:'
|
|
67
|
+
e.errors.each_with_index do |error, index|
|
|
68
|
+
puts "\tError [%d]:" % (index + 1)
|
|
69
|
+
error.each do |field, value|
|
|
70
|
+
puts "\t\t%s: %s" % [field, value]
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
#
|
|
3
|
+
# Author:: 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
|
+
# This example gets all orders for a given advertiser. The statement retrieves
|
|
21
|
+
# up to the maximum page size limit of 500. To create orders, run
|
|
22
|
+
# create_orders.rb. To determine which companies are advertisers, run
|
|
23
|
+
# get_companies_by_statement.rb.
|
|
24
|
+
#
|
|
25
|
+
# Tags: OrderService.getOrdersByStatement
|
|
26
|
+
|
|
27
|
+
require 'rubygems'
|
|
28
|
+
require 'dfp_api'
|
|
29
|
+
|
|
30
|
+
API_VERSION = :v201101
|
|
31
|
+
|
|
32
|
+
def get_orders_by_statement()
|
|
33
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
34
|
+
dfp = DfpApi::Api.new
|
|
35
|
+
|
|
36
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
37
|
+
# the configuration file or provide your own logger:
|
|
38
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
39
|
+
|
|
40
|
+
# Get the OrderService.
|
|
41
|
+
order_service = dfp.service(:OrderService, API_VERSION)
|
|
42
|
+
|
|
43
|
+
# Set the ID of the advertiser (company) to get orders for.
|
|
44
|
+
advertiser_id = 'INSERT_ADVERTISER_COMPANY_ID_HERE'.to_i
|
|
45
|
+
|
|
46
|
+
# Create a statement to only select orders for a given advertiser.
|
|
47
|
+
statement = {
|
|
48
|
+
:query => 'WHERE advertiserId = :advertiser_id LIMIT 500',
|
|
49
|
+
:values => [
|
|
50
|
+
{:key => 'advertiser_id',
|
|
51
|
+
:value => {:value => advertiser_id, :xsi_type => 'NumberValue'}}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# Get orders by statement.
|
|
56
|
+
page = order_service.get_orders_by_statement(statement)
|
|
57
|
+
|
|
58
|
+
if page and page[:results]
|
|
59
|
+
page[:results].each_with_index do |order, index|
|
|
60
|
+
puts "%d) Order ID: %d, belongs to advertiser ID: %d, name: %s." % [index,
|
|
61
|
+
order[:id], order[:advertiser_id], order[:name]]
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Print a footer.
|
|
66
|
+
if page.include?(:total_result_set_size)
|
|
67
|
+
puts "Number of results found: %d" % page[:total_result_set_size]
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
if __FILE__ == $0
|
|
72
|
+
begin
|
|
73
|
+
get_orders_by_statement()
|
|
74
|
+
|
|
75
|
+
# HTTP errors.
|
|
76
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
77
|
+
puts "HTTP Error: %s" % e
|
|
78
|
+
|
|
79
|
+
# API errors.
|
|
80
|
+
rescue DfpApi::Errors::ApiException => e
|
|
81
|
+
puts "Message: %s" % e.message
|
|
82
|
+
puts 'Errors:'
|
|
83
|
+
e.errors.each_with_index do |error, index|
|
|
84
|
+
puts "\tError [%d]:" % (index + 1)
|
|
85
|
+
error.each do |field, value|
|
|
86
|
+
puts "\t\t%s: %s" % [field, value]
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
#
|
|
3
|
+
# Author:: 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
|
+
# This example updates the notes of each order up to the first 500.
|
|
21
|
+
# To determine which orders exist, run get_all_orders.rb.
|
|
22
|
+
#
|
|
23
|
+
# Tags: OrderService.updateOrders
|
|
24
|
+
|
|
25
|
+
require 'rubygems'
|
|
26
|
+
require 'dfp_api'
|
|
27
|
+
|
|
28
|
+
API_VERSION = :v201101
|
|
29
|
+
|
|
30
|
+
def update_orders()
|
|
31
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
32
|
+
dfp = DfpApi::Api.new
|
|
33
|
+
|
|
34
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
35
|
+
# the configuration file or provide your own logger:
|
|
36
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
37
|
+
|
|
38
|
+
# Get the OrderService.
|
|
39
|
+
order_service = dfp.service(:OrderService, API_VERSION)
|
|
40
|
+
|
|
41
|
+
# Create a statement to get first 500 orders.
|
|
42
|
+
statement = {:query => 'LIMIT 500'}
|
|
43
|
+
|
|
44
|
+
# Get orders by statement.
|
|
45
|
+
page = order_service.get_orders_by_statement(statement)
|
|
46
|
+
|
|
47
|
+
if page[:results]
|
|
48
|
+
orders = page[:results]
|
|
49
|
+
|
|
50
|
+
new_orders = orders.inject([]) do |new_orders, order|
|
|
51
|
+
# Archived orders can not be updated.
|
|
52
|
+
if !order[:is_archived]
|
|
53
|
+
order[:notes] = 'Spoke to advertiser. All is well.'
|
|
54
|
+
new_orders << order
|
|
55
|
+
end
|
|
56
|
+
new_orders
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Update the orders on the server.
|
|
60
|
+
return_orders = order_service.update_orders(orders)
|
|
61
|
+
|
|
62
|
+
if return_orders
|
|
63
|
+
return_orders.each do |order|
|
|
64
|
+
puts ("Order ID: %d, advertiser ID: %d, name: %s was updated " +
|
|
65
|
+
"with notes %s") % [order[:id], order[:advertiser_id],
|
|
66
|
+
order[:name], order[:notes]]
|
|
67
|
+
end
|
|
68
|
+
else
|
|
69
|
+
raise 'No orders were updated.'
|
|
70
|
+
end
|
|
71
|
+
else
|
|
72
|
+
puts 'No orders found to update.'
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
if __FILE__ == $0
|
|
77
|
+
begin
|
|
78
|
+
update_orders()
|
|
79
|
+
|
|
80
|
+
# HTTP errors.
|
|
81
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
82
|
+
puts "HTTP Error: %s" % e
|
|
83
|
+
|
|
84
|
+
# API errors.
|
|
85
|
+
rescue DfpApi::Errors::ApiException => e
|
|
86
|
+
puts "Message: %s" % e.message
|
|
87
|
+
puts 'Errors:'
|
|
88
|
+
e.errors.each_with_index do |error, index|
|
|
89
|
+
puts "\tError [%d]:" % (index + 1)
|
|
90
|
+
error.each do |field, value|
|
|
91
|
+
puts "\t\t%s: %s" % [field, value]
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
#
|
|
3
|
+
# Author:: 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
|
+
# This example creates new placements for various ad unit sizes. To determine
|
|
21
|
+
# which placements exist, run get_all_placements.rb.
|
|
22
|
+
|
|
23
|
+
# Tags: PlacementService.createPlacements,
|
|
24
|
+
# InventoryService.getAdUnitsByStatement
|
|
25
|
+
|
|
26
|
+
require 'rubygems'
|
|
27
|
+
require 'dfp_api'
|
|
28
|
+
|
|
29
|
+
API_VERSION = :v201101
|
|
30
|
+
|
|
31
|
+
def create_placements()
|
|
32
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
33
|
+
dfp = DfpApi::Api.new
|
|
34
|
+
|
|
35
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
36
|
+
# the configuration file or provide your own logger:
|
|
37
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
38
|
+
|
|
39
|
+
# Get the InventoryService.
|
|
40
|
+
inventory_service = dfp.service(:InventoryService, API_VERSION)
|
|
41
|
+
|
|
42
|
+
# Get the PlacementService.
|
|
43
|
+
placement_service = dfp.service(:PlacementService, API_VERSION)
|
|
44
|
+
|
|
45
|
+
# Create local placement object to store skyscraper ad units.
|
|
46
|
+
skyscraper_ad_unit_placement = {
|
|
47
|
+
:name => "Skyscraper AdUnit Placement #%d" % (Time.new.to_f * 1000),
|
|
48
|
+
:description => 'Contains ad units for creatives of size 120x600',
|
|
49
|
+
:targeted_ad_unit_ids => Array.new
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
# Create local placement object to store medium square ad units.
|
|
53
|
+
medium_square_ad_unit_placement = {
|
|
54
|
+
:name => "Medium Square AdUnit Placement #%d" % (Time.new.to_f * 1000),
|
|
55
|
+
:description => 'Contains ad units for creatives of size 300x250',
|
|
56
|
+
:targeted_ad_unit_ids => Array.new
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# Create local placement object to store banner ad units.
|
|
60
|
+
banner_ad_unit_placement = {
|
|
61
|
+
:name => "Banner AdUnit Placement #%d" % (Time.new.to_f * 1000),
|
|
62
|
+
:description => 'Contains ad units for creatives of size 468x60',
|
|
63
|
+
:targeted_ad_unit_ids => Array.new
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
# Get the first 500 ad units.
|
|
67
|
+
page = inventory_service.get_ad_units_by_statement({:query => 'LIMIT 500'})
|
|
68
|
+
|
|
69
|
+
# Separate the ad units by size.
|
|
70
|
+
if page and page[:results]
|
|
71
|
+
page[:results].each do |ad_unit|
|
|
72
|
+
if ad_unit[:parent_id] and ad_unit[:sizes]
|
|
73
|
+
ad_unit[:sizes].each do |size|
|
|
74
|
+
receiver = case size[:width]
|
|
75
|
+
when 120
|
|
76
|
+
skyscraper_ad_unit_placement if size[:height] == 600
|
|
77
|
+
when 300
|
|
78
|
+
medium_square_ad_unit_placement if size[:height] == 250
|
|
79
|
+
when 468
|
|
80
|
+
banner_ad_unit_placement if size[:height] == 60
|
|
81
|
+
else nil
|
|
82
|
+
end
|
|
83
|
+
receiver[:targeted_ad_unit_ids] |= [ad_unit[:id]] if receiver
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Create the placements on the server.
|
|
90
|
+
placements = placement_service.create_placements(
|
|
91
|
+
[medium_square_ad_unit_placement,
|
|
92
|
+
skyscraper_ad_unit_placement,
|
|
93
|
+
banner_ad_unit_placement]
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
# Display results.
|
|
97
|
+
if placements
|
|
98
|
+
placements.each do |placement|
|
|
99
|
+
puts "Placement with ID: %d and name: %s created with ad units: [%s]" %
|
|
100
|
+
[placement[:id], placement[:name],
|
|
101
|
+
placement[:targeted_ad_unit_ids].join(', ')]
|
|
102
|
+
end
|
|
103
|
+
else
|
|
104
|
+
raise 'No placements created.'
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
if __FILE__ == $0
|
|
110
|
+
begin
|
|
111
|
+
create_placements()
|
|
112
|
+
|
|
113
|
+
# HTTP errors.
|
|
114
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
115
|
+
puts "HTTP Error: %s" % e
|
|
116
|
+
|
|
117
|
+
# API errors.
|
|
118
|
+
rescue DfpApi::Errors::ApiException => e
|
|
119
|
+
puts "Message: %s" % e.message
|
|
120
|
+
puts 'Errors:'
|
|
121
|
+
e.errors.each_with_index do |error, index|
|
|
122
|
+
puts "\tError [%d]:" % (index + 1)
|
|
123
|
+
error.each do |field, value|
|
|
124
|
+
puts "\t\t%s: %s" % [field, value]
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|