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,110 @@
|
|
|
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 delivery rate of all line items for an order up to
|
|
21
|
+
# the first 500. To determine which line items exist, run get_all_line_items.rb.
|
|
22
|
+
# To determine which order exist, run get_all_orders.rb.
|
|
23
|
+
#
|
|
24
|
+
# Tags: LineItemService.updateLineItems
|
|
25
|
+
|
|
26
|
+
require 'rubygems'
|
|
27
|
+
require 'dfp_api'
|
|
28
|
+
|
|
29
|
+
API_VERSION = :v201101
|
|
30
|
+
|
|
31
|
+
def update_line_items()
|
|
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 LineItemService.
|
|
40
|
+
line_item_service = dfp.service(:LineItemService, API_VERSION)
|
|
41
|
+
|
|
42
|
+
# Set the ID of the order to get line items from.
|
|
43
|
+
order_id = 'INSERT_ORDER_ID_HERE'.to_i
|
|
44
|
+
|
|
45
|
+
# Create a statement to get line items with even delivery rates.
|
|
46
|
+
statement = {
|
|
47
|
+
:query => 'WHERE deliveryRateType = :delivery_rate_type AND ' +
|
|
48
|
+
'orderId = :order_id LIMIT 500',
|
|
49
|
+
:values => [
|
|
50
|
+
{:key => 'delivery_rate_type',
|
|
51
|
+
:value => {:value => 'EVENLY', :xsi_type => 'TextValue'}},
|
|
52
|
+
{:key => 'order_id',
|
|
53
|
+
:value => {:value => order_id, :xsi_type => 'NumberValue'}}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
# Get line items by statement.
|
|
58
|
+
page = line_item_service.get_line_items_by_statement(statement)
|
|
59
|
+
|
|
60
|
+
if page[:results]
|
|
61
|
+
line_items = page[:results]
|
|
62
|
+
|
|
63
|
+
# Update each local line item object by changing its delivery rate.
|
|
64
|
+
new_line_items = line_items.inject([]) do |new_line_items, line_item|
|
|
65
|
+
# Archived line items can not be updated.
|
|
66
|
+
if !line_item[:is_archived]
|
|
67
|
+
line_item[:delivery_rate_type] = 'AS_FAST_AS_POSSIBLE'
|
|
68
|
+
new_line_items << line_item
|
|
69
|
+
end
|
|
70
|
+
# TODO: We also have to specify xsi_types here, issue #10.
|
|
71
|
+
new_line_items
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Update the line items on the server.
|
|
75
|
+
return_line_items = line_item_service.update_line_items(line_items)
|
|
76
|
+
|
|
77
|
+
if return_line_items
|
|
78
|
+
return_line_items.each do |line_item|
|
|
79
|
+
puts ("Line item ID: %d, order ID: %d, name: %s was updated with " +
|
|
80
|
+
"delivery rate: %s") % [line_item[:id], line_item[:order_id],
|
|
81
|
+
line_item[:name], line_item[:delivery_rate_type]]
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
raise 'No line items were updated.'
|
|
85
|
+
end
|
|
86
|
+
else
|
|
87
|
+
puts 'No line items found to update.'
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
if __FILE__ == $0
|
|
92
|
+
begin
|
|
93
|
+
update_line_items()
|
|
94
|
+
|
|
95
|
+
# HTTP errors.
|
|
96
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
97
|
+
puts "HTTP Error: %s" % e
|
|
98
|
+
|
|
99
|
+
# API errors.
|
|
100
|
+
rescue DfpApi::Errors::ApiException => e
|
|
101
|
+
puts "Message: %s" % e.message
|
|
102
|
+
puts 'Errors:'
|
|
103
|
+
e.errors.each_with_index do |error, index|
|
|
104
|
+
puts "\tError [%d]:" % (index + 1)
|
|
105
|
+
error.each do |field, value|
|
|
106
|
+
puts "\t\t%s: %s" % [field, value]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
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 all Networks to which the current login has access.
|
|
21
|
+
#
|
|
22
|
+
# Tags: NetworkService.getAllNetworks
|
|
23
|
+
|
|
24
|
+
require 'rubygems'
|
|
25
|
+
require 'dfp_api'
|
|
26
|
+
|
|
27
|
+
API_VERSION = :v201101
|
|
28
|
+
|
|
29
|
+
def get_all_networks()
|
|
30
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
31
|
+
dfp = DfpApi::Api.new
|
|
32
|
+
|
|
33
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
34
|
+
# the configuration file or provide your own logger:
|
|
35
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
36
|
+
|
|
37
|
+
# Get the NetworkService.
|
|
38
|
+
network_service = dfp.service(:NetworkService, API_VERSION)
|
|
39
|
+
|
|
40
|
+
# Execute request and get the response.
|
|
41
|
+
networks = network_service.get_all_networks()
|
|
42
|
+
|
|
43
|
+
if networks
|
|
44
|
+
# Print details about each network in results page.
|
|
45
|
+
networks.each_with_index do |network, index|
|
|
46
|
+
puts "%d) Network ID: %d, name: %s, code: %s." %
|
|
47
|
+
[index, network[:id], network[:display_name],
|
|
48
|
+
network[:network_code]]
|
|
49
|
+
end
|
|
50
|
+
# Print a footer
|
|
51
|
+
puts "Total number of networks: %d" % networks.size
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
if __FILE__ == $0
|
|
56
|
+
begin
|
|
57
|
+
get_all_networks()
|
|
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,66 @@
|
|
|
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 the current network that you can make requests against.
|
|
21
|
+
#
|
|
22
|
+
# Tags: NetworkService.getCurrentNetwork
|
|
23
|
+
|
|
24
|
+
require 'rubygems'
|
|
25
|
+
require 'dfp_api'
|
|
26
|
+
|
|
27
|
+
API_VERSION = :v201101
|
|
28
|
+
|
|
29
|
+
def get_current_network()
|
|
30
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
31
|
+
dfp = DfpApi::Api.new
|
|
32
|
+
|
|
33
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
34
|
+
# the configuration file or provide your own logger:
|
|
35
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
36
|
+
|
|
37
|
+
# Get the NetworkService.
|
|
38
|
+
network_service = dfp.service(:NetworkService, API_VERSION)
|
|
39
|
+
|
|
40
|
+
# Get the current network.
|
|
41
|
+
network = network_service.get_current_network()
|
|
42
|
+
|
|
43
|
+
puts "Current network has network code %d and display name %s." %
|
|
44
|
+
[network[:network_code], network[:display_name]]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
if __FILE__ == $0
|
|
48
|
+
begin
|
|
49
|
+
get_current_network()
|
|
50
|
+
|
|
51
|
+
# HTTP errors.
|
|
52
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
53
|
+
puts "HTTP Error: %s" % e
|
|
54
|
+
|
|
55
|
+
# API errors.
|
|
56
|
+
rescue DfpApi::Errors::ApiException => e
|
|
57
|
+
puts "Message: %s" % e.message
|
|
58
|
+
puts 'Errors:'
|
|
59
|
+
e.errors.each_with_index do |error, index|
|
|
60
|
+
puts "\tError [%d]:" % (index + 1)
|
|
61
|
+
error.each do |field, value|
|
|
62
|
+
puts "\t\t%s: %s" % [field, value]
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
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 approves and overbooks all draft orders. To determine which
|
|
21
|
+
# orders exist, run get_all_orders.rb.
|
|
22
|
+
#
|
|
23
|
+
# Tags: OrderService.getOrdersByStatement,
|
|
24
|
+
# OrderService.performOrderAction
|
|
25
|
+
|
|
26
|
+
require 'rubygems'
|
|
27
|
+
require 'dfp_api'
|
|
28
|
+
|
|
29
|
+
API_VERSION = :v201101
|
|
30
|
+
PAGE_SIZE = 500
|
|
31
|
+
|
|
32
|
+
def approve_orders()
|
|
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
|
+
# Create statement text to select all draft orders.
|
|
44
|
+
statement_text = "WHERE status IN ('DRAFT', 'PENDING_APPROVAL')"
|
|
45
|
+
|
|
46
|
+
# Define initial values.
|
|
47
|
+
offset = 0
|
|
48
|
+
page = Hash.new
|
|
49
|
+
order_ids = Array.new
|
|
50
|
+
|
|
51
|
+
begin
|
|
52
|
+
# Create a statement to get one page with current offset.
|
|
53
|
+
statement = {
|
|
54
|
+
:query => statement_text + " LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
# Get orders by statement.
|
|
58
|
+
page = order_service.get_orders_by_statement(statement)
|
|
59
|
+
|
|
60
|
+
if page[:results]
|
|
61
|
+
# Increase query offset by page size.
|
|
62
|
+
offset += PAGE_SIZE
|
|
63
|
+
|
|
64
|
+
page[:results].each do |order|
|
|
65
|
+
# Archived orders cannot be approved.
|
|
66
|
+
if !order[:is_archived]
|
|
67
|
+
puts ("%d) Order ID: %d, status: %s and name: %s will be " +
|
|
68
|
+
"approved.") % [order_ids.size, order[:id], order[:status],
|
|
69
|
+
order[:name]]
|
|
70
|
+
order_ids << order[:id]
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end while offset < page[:total_result_set_size]
|
|
75
|
+
|
|
76
|
+
puts "Number of orders to be approved: %d" % order_ids.size
|
|
77
|
+
|
|
78
|
+
if !order_ids.empty?
|
|
79
|
+
# Create statement for action.
|
|
80
|
+
statement = {:query => "WHERE id IN (%s)" % order_ids.join(', ')}
|
|
81
|
+
|
|
82
|
+
# Perform action.
|
|
83
|
+
result = order_service.perform_order_action(
|
|
84
|
+
{:xsi_type => 'ApproveAndOverbookOrders'}, statement)
|
|
85
|
+
|
|
86
|
+
# Display results.
|
|
87
|
+
if result and result[:num_changes] > 0
|
|
88
|
+
puts "Number of orders approved: %d" % result[:num_changes]
|
|
89
|
+
else
|
|
90
|
+
puts 'No orders were approved.'
|
|
91
|
+
end
|
|
92
|
+
else
|
|
93
|
+
puts 'No order found to approve.'
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
if __FILE__ == $0
|
|
98
|
+
begin
|
|
99
|
+
approve_orders()
|
|
100
|
+
|
|
101
|
+
# HTTP errors.
|
|
102
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
103
|
+
puts "HTTP Error: %s" % e
|
|
104
|
+
|
|
105
|
+
# API errors.
|
|
106
|
+
rescue DfpApi::Errors::ApiException => e
|
|
107
|
+
puts "Message: %s" % e.message
|
|
108
|
+
puts 'Errors:'
|
|
109
|
+
e.errors.each_with_index do |error, index|
|
|
110
|
+
puts "\tError [%d]:" % (index + 1)
|
|
111
|
+
error.each do |field, value|
|
|
112
|
+
puts "\t\t%s: %s" % [field, value]
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -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 creates new orders. To determine which orders exist, run
|
|
21
|
+
# get_all_orders.rb. To determine which companies are advertisers, run
|
|
22
|
+
# get_companies_by_statement.rb. To get salespeople and traffickers, run
|
|
23
|
+
# get_all_users.rb.
|
|
24
|
+
#
|
|
25
|
+
# Tags: OrderService.createOrders
|
|
26
|
+
|
|
27
|
+
require 'rubygems'
|
|
28
|
+
require 'dfp_api'
|
|
29
|
+
|
|
30
|
+
API_VERSION = :v201101
|
|
31
|
+
# Number of orders to create.
|
|
32
|
+
ITEM_COUNT = 5
|
|
33
|
+
|
|
34
|
+
def create_orders()
|
|
35
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
36
|
+
dfp = DfpApi::Api.new
|
|
37
|
+
|
|
38
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
39
|
+
# the configuration file or provide your own logger:
|
|
40
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
41
|
+
|
|
42
|
+
# Get the OrderService.
|
|
43
|
+
order_service = dfp.service(:OrderService, API_VERSION)
|
|
44
|
+
|
|
45
|
+
# Set the advertiser (company), salesperson, and trafficker to assign to each
|
|
46
|
+
# order.
|
|
47
|
+
advertiser_id = 'INSERT_ADVERTISER_COMPANY_ID_HERE'.to_i
|
|
48
|
+
salesperson_id = 'INSERT_SALESPERSON_ID_HERE'.to_i
|
|
49
|
+
trafficker_id = 'INSERT_TRAFFICKER_ID_HERE'.to_i
|
|
50
|
+
|
|
51
|
+
# Create an array to store local order objects.
|
|
52
|
+
orders = Array.new
|
|
53
|
+
ITEM_COUNT.times do |index|
|
|
54
|
+
orders << {:name => "Order #%d" % index,
|
|
55
|
+
:advertiser_id => advertiser_id,
|
|
56
|
+
:salesperson_id => salesperson_id,
|
|
57
|
+
:trafficker_id => trafficker_id}
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Create the orders on the server.
|
|
61
|
+
return_orders = order_service.create_orders(orders)
|
|
62
|
+
|
|
63
|
+
if return_orders
|
|
64
|
+
return_orders.each do |order|
|
|
65
|
+
puts "Order with ID: %d and name: %s was created." %
|
|
66
|
+
[order[:id], order[:name]]
|
|
67
|
+
end
|
|
68
|
+
else
|
|
69
|
+
raise 'No orders were created.'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
if __FILE__ == $0
|
|
75
|
+
begin
|
|
76
|
+
create_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
|