google-dfp-api 0.2.2 → 0.2.3

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.
Files changed (150) hide show
  1. data/ChangeLog +3 -0
  2. data/examples/v201101/company_service/create_companies.rb +3 -4
  3. data/examples/v201101/company_service/update_companies.rb +2 -2
  4. data/examples/v201101/creative_service/create_creatives.rb +8 -11
  5. data/examples/v201101/inventory_service/create_ad_units.rb +7 -10
  6. data/examples/v201101/inventory_service/update_ad_units.rb +1 -1
  7. data/examples/v201101/line_item_service/create_line_items.rb +2 -3
  8. data/examples/v201101/line_item_service/update_line_items.rb +1 -1
  9. data/examples/v201101/order_service/create_orders.rb +5 -6
  10. data/examples/v201101/order_service/update_orders.rb +1 -1
  11. data/examples/v201101/placement_service/create_placements.rb +1 -1
  12. data/examples/v201101/placement_service/update_placements.rb +2 -1
  13. data/examples/v201101/user_service/update_users.rb +1 -1
  14. data/examples/v201103/company_service/create_companies.rb +3 -4
  15. data/examples/v201103/company_service/update_companies.rb +2 -2
  16. data/examples/v201103/creative_service/create_creatives.rb +8 -11
  17. data/examples/v201103/inventory_service/create_ad_units.rb +7 -10
  18. data/examples/v201103/inventory_service/update_ad_units.rb +1 -1
  19. data/examples/v201103/line_item_service/create_line_items.rb +2 -3
  20. data/examples/v201103/line_item_service/update_line_items.rb +1 -1
  21. data/examples/v201103/order_service/create_orders.rb +5 -6
  22. data/examples/v201103/order_service/update_orders.rb +1 -1
  23. data/examples/v201103/placement_service/create_placements.rb +1 -1
  24. data/examples/v201103/placement_service/update_placements.rb +2 -1
  25. data/examples/v201103/user_service/update_users.rb +1 -1
  26. data/examples/v201104/company_service/create_companies.rb +3 -4
  27. data/examples/v201104/company_service/update_companies.rb +2 -2
  28. data/examples/v201104/creative_service/create_creatives.rb +8 -11
  29. data/examples/v201104/inventory_service/create_ad_units.rb +7 -10
  30. data/examples/v201104/inventory_service/update_ad_units.rb +1 -1
  31. data/examples/v201104/line_item_service/create_line_items.rb +2 -3
  32. data/examples/v201104/line_item_service/update_line_items.rb +1 -1
  33. data/examples/v201104/order_service/create_orders.rb +5 -6
  34. data/examples/v201104/order_service/update_orders.rb +1 -1
  35. data/examples/v201104/placement_service/create_placements.rb +1 -1
  36. data/examples/v201104/placement_service/update_placements.rb +2 -1
  37. data/examples/v201104/user_service/update_users.rb +1 -1
  38. data/examples/v201107/common/error_handling.rb +76 -0
  39. data/examples/v201107/common/oauth_handling.rb +128 -0
  40. data/examples/v201107/company_service/create_companies.rb +81 -0
  41. data/examples/v201107/company_service/get_all_companies.rb +92 -0
  42. data/examples/v201107/company_service/get_companies_by_statement.rb +88 -0
  43. data/examples/v201107/company_service/get_company.rb +72 -0
  44. data/examples/v201107/company_service/update_companies.rb +95 -0
  45. data/examples/v201107/creative_service/copy_image_creatives.rb +117 -0
  46. data/examples/v201107/creative_service/create_creatives.rb +106 -0
  47. data/examples/v201107/creative_service/get_all_creatives.rb +93 -0
  48. data/examples/v201107/creative_service/get_creative.rb +72 -0
  49. data/examples/v201107/creative_service/get_creatives_by_statement.rb +87 -0
  50. data/examples/v201107/creative_service/update_creatives.rb +98 -0
  51. data/examples/v201107/custom_targeting_service/create_custom_targeting_keys_and_values.rb +118 -0
  52. data/examples/v201107/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
  53. data/examples/v201107/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
  54. data/examples/v201107/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
  55. data/examples/v201107/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
  56. data/examples/v201107/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
  57. data/examples/v201107/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
  58. data/examples/v201107/custom_targeting_service/update_custom_targeting_values.rb +106 -0
  59. data/examples/v201107/forecast_service/get_forecast.rb +103 -0
  60. data/examples/v201107/forecast_service/get_forecast_by_id.rb +80 -0
  61. data/examples/v201107/inventory_service/create_ad_units.rb +95 -0
  62. data/examples/v201107/inventory_service/deactivate_ad_units.rb +119 -0
  63. data/examples/v201107/inventory_service/get_ad_unit.rb +72 -0
  64. data/examples/v201107/inventory_service/get_ad_unit_sizes.rb +73 -0
  65. data/examples/v201107/inventory_service/get_ad_units_by_statement.rb +96 -0
  66. data/examples/v201107/inventory_service/get_all_ad_units.rb +93 -0
  67. data/examples/v201107/inventory_service/update_ad_units.rb +94 -0
  68. data/examples/v201107/label_service/create_labels.rb +83 -0
  69. data/examples/v201107/label_service/deactivate_labels.rb +118 -0
  70. data/examples/v201107/label_service/get_all_labels.rb +94 -0
  71. data/examples/v201107/label_service/get_label.rb +76 -0
  72. data/examples/v201107/label_service/get_labels_by_statement.rb +91 -0
  73. data/examples/v201107/label_service/update_labels.rb +104 -0
  74. data/examples/v201107/line_item_creative_association_service/create_licas.rb +94 -0
  75. data/examples/v201107/line_item_creative_association_service/deactivate_licas.rb +127 -0
  76. data/examples/v201107/line_item_creative_association_service/get_all_licas.rb +95 -0
  77. data/examples/v201107/line_item_creative_association_service/get_lica.rb +77 -0
  78. data/examples/v201107/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
  79. data/examples/v201107/line_item_creative_association_service/update_licas.rb +92 -0
  80. data/examples/v201107/line_item_service/activate_line_items.rb +131 -0
  81. data/examples/v201107/line_item_service/create_line_items.rb +167 -0
  82. data/examples/v201107/line_item_service/get_all_line_items.rb +94 -0
  83. data/examples/v201107/line_item_service/get_line_item.rb +74 -0
  84. data/examples/v201107/line_item_service/get_line_items_by_statement.rb +89 -0
  85. data/examples/v201107/line_item_service/target_custom_criteria.rb +129 -0
  86. data/examples/v201107/line_item_service/update_line_items.rb +110 -0
  87. data/examples/v201107/network_service/get_all_networks.rb +74 -0
  88. data/examples/v201107/network_service/get_current_network.rb +66 -0
  89. data/examples/v201107/order_service/approve_orders.rb +116 -0
  90. data/examples/v201107/order_service/create_orders.rb +92 -0
  91. data/examples/v201107/order_service/get_all_orders.rb +93 -0
  92. data/examples/v201107/order_service/get_order.rb +74 -0
  93. data/examples/v201107/order_service/get_orders_by_statement.rb +90 -0
  94. data/examples/v201107/order_service/update_orders.rb +95 -0
  95. data/examples/v201107/placement_service/create_placements.rb +128 -0
  96. data/examples/v201107/placement_service/deactivate_placements.rb +118 -0
  97. data/examples/v201107/placement_service/get_all_placements.rb +93 -0
  98. data/examples/v201107/placement_service/get_placement.rb +74 -0
  99. data/examples/v201107/placement_service/get_placements_by_statement.rb +86 -0
  100. data/examples/v201107/placement_service/update_placements.rb +97 -0
  101. data/examples/v201107/publisher_query_language_service/get_all_bandwidth_groups.rb +85 -0
  102. data/examples/v201107/publisher_query_language_service/get_all_browser_languages.rb +85 -0
  103. data/examples/v201107/publisher_query_language_service/get_all_browsers.rb +85 -0
  104. data/examples/v201107/publisher_query_language_service/get_all_cities.rb +85 -0
  105. data/examples/v201107/publisher_query_language_service/get_all_countries.rb +85 -0
  106. data/examples/v201107/publisher_query_language_service/get_all_metros.rb +85 -0
  107. data/examples/v201107/publisher_query_language_service/get_all_operating_systems.rb +85 -0
  108. data/examples/v201107/publisher_query_language_service/get_all_regions.rb +85 -0
  109. data/examples/v201107/report_service/download_report.rb +81 -0
  110. data/examples/v201107/report_service/run_delivery_report.rb +89 -0
  111. data/examples/v201107/report_service/run_inventory_report.rb +90 -0
  112. data/examples/v201107/report_service/run_sales_report.rb +89 -0
  113. data/examples/v201107/user_service/create_users.rb +89 -0
  114. data/examples/v201107/user_service/deactivate_users.rb +99 -0
  115. data/examples/v201107/user_service/get_all_roles.rb +73 -0
  116. data/examples/v201107/user_service/get_all_users.rb +92 -0
  117. data/examples/v201107/user_service/get_current_user.rb +66 -0
  118. data/examples/v201107/user_service/get_user.rb +73 -0
  119. data/examples/v201107/user_service/get_users_by_statement.rb +79 -0
  120. data/examples/v201107/user_service/update_users.rb +89 -0
  121. data/lib/dfp_api/api_config.rb +16 -7
  122. data/lib/dfp_api/v201107/company_service.rb +52 -0
  123. data/lib/dfp_api/v201107/company_service_registry.rb +42 -0
  124. data/lib/dfp_api/v201107/creative_service.rb +52 -0
  125. data/lib/dfp_api/v201107/creative_service_registry.rb +42 -0
  126. data/lib/dfp_api/v201107/custom_targeting_service.rb +60 -0
  127. data/lib/dfp_api/v201107/custom_targeting_service_registry.rb +42 -0
  128. data/lib/dfp_api/v201107/forecast_service.rb +36 -0
  129. data/lib/dfp_api/v201107/forecast_service_registry.rb +42 -0
  130. data/lib/dfp_api/v201107/inventory_service.rb +60 -0
  131. data/lib/dfp_api/v201107/inventory_service_registry.rb +42 -0
  132. data/lib/dfp_api/v201107/label_service.rb +56 -0
  133. data/lib/dfp_api/v201107/label_service_registry.rb +42 -0
  134. data/lib/dfp_api/v201107/line_item_creative_association_service.rb +56 -0
  135. data/lib/dfp_api/v201107/line_item_creative_association_service_registry.rb +42 -0
  136. data/lib/dfp_api/v201107/line_item_service.rb +56 -0
  137. data/lib/dfp_api/v201107/line_item_service_registry.rb +42 -0
  138. data/lib/dfp_api/v201107/network_service.rb +40 -0
  139. data/lib/dfp_api/v201107/network_service_registry.rb +42 -0
  140. data/lib/dfp_api/v201107/order_service.rb +56 -0
  141. data/lib/dfp_api/v201107/order_service_registry.rb +42 -0
  142. data/lib/dfp_api/v201107/placement_service.rb +56 -0
  143. data/lib/dfp_api/v201107/placement_service_registry.rb +42 -0
  144. data/lib/dfp_api/v201107/publisher_query_language_service.rb +32 -0
  145. data/lib/dfp_api/v201107/publisher_query_language_service_registry.rb +42 -0
  146. data/lib/dfp_api/v201107/report_service.rb +40 -0
  147. data/lib/dfp_api/v201107/report_service_registry.rb +42 -0
  148. data/lib/dfp_api/v201107/user_service.rb +64 -0
  149. data/lib/dfp_api/v201107/user_service_registry.rb +42 -0
  150. metadata +115 -4
@@ -0,0 +1,98 @@
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 custom targeting values for the given predefined custom
21
+ # targeting key. The statement retrieves up to the maximum page size limit of
22
+ # 500. To create custom targeting values, run
23
+ # create_custom_targeting_keys_and_values.rb. To determine which custom
24
+ # targeting keys exist, run get_all_custom_targeting_keys_and_values.rb.
25
+ #
26
+ # Tags: CustomTargetingService.getCustomTargetingValuesByStatement
27
+
28
+ require 'rubygems'
29
+ require 'dfp_api'
30
+
31
+ API_VERSION = :v201107
32
+
33
+ def get_custom_targeting_values_by_statement()
34
+ # Get DfpApi instance and load configuration from ~/dfp_api.yml.
35
+ dfp = DfpApi::Api.new
36
+
37
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
38
+ # the configuration file or provide your own logger:
39
+ # dfp.logger = Logger.new('dfp_xml.log')
40
+
41
+ # Get the CustomTargetingService.
42
+ custom_targeting_service = dfp.service(:CustomTargetingService, API_VERSION)
43
+
44
+ # Set the ID of the custom targeting key to get custom targeting values for.
45
+ custom_targeting_key_id = 'INSERT_CUSTOM_TARGETING_KEY_ID_HERE'.to_i
46
+
47
+ # Create a statement to only select custom targeting values for a given key.
48
+ statement = {
49
+ :query => 'WHERE customTargetingKeyId = :key_id LIMIT 500',
50
+ :values => [
51
+ {:key => 'key_id',
52
+ :value => {:value => custom_targeting_key_id,
53
+ :xsi_type => 'NumberValue'}
54
+ }
55
+ ]
56
+ }
57
+
58
+ # Get custom targeting values by statement.
59
+ page = custom_targeting_service.get_custom_targeting_values_by_statement(
60
+ statement)
61
+
62
+ if page[:results]
63
+ # Print details about each value in results.
64
+ page[:results].each_with_index do |custom_targeting_value, index|
65
+ puts ("%d) Custom targeting value with ID [%d], name: %s," +
66
+ " displayName: %s") % [index,
67
+ custom_targeting_value[:id],
68
+ custom_targeting_value[:name],
69
+ custom_targeting_value[:display_name]]
70
+ end
71
+ end
72
+
73
+ # Print a footer.
74
+ if page.include?(:total_result_set_size)
75
+ puts "Number of results found: %d" % page[:total_result_set_size]
76
+ end
77
+ end
78
+
79
+ if __FILE__ == $0
80
+ begin
81
+ get_custom_targeting_values_by_statement()
82
+
83
+ # HTTP errors.
84
+ rescue AdsCommon::Errors::HttpError => e
85
+ puts "HTTP Error: %s" % e
86
+
87
+ # API errors.
88
+ rescue DfpApi::Errors::ApiException => e
89
+ puts "Message: %s" % e.message
90
+ puts 'Errors:'
91
+ e.errors.each_with_index do |error, index|
92
+ puts "\tError [%d]:" % (index + 1)
93
+ error.each do |field, value|
94
+ puts "\t\t%s: %s" % [field, value]
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,94 @@
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 display name of each custom targeting key up to the
21
+ # first 500. To determine which custom targeting keys exist, run
22
+ # get_all_custom_targeting_keys_and_values.rb.
23
+ #
24
+ # Tags: CustomTargetingService.getCustomTargetingKeysByStatement,
25
+ # CustomTargetingService.updateCustomTargetingKeys
26
+
27
+ require 'rubygems'
28
+ require 'dfp_api'
29
+
30
+ API_VERSION = :v201107
31
+
32
+ def update_custom_targeting_keys()
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 CustomTargetingService.
41
+ custom_targeting_service = dfp.service(:CustomTargetingService, API_VERSION)
42
+
43
+ # Create a statement to get first 500 custom targeting keys.
44
+ statement = {:query => "LIMIT 500"}
45
+
46
+ # Get custom targeting keys by statement.
47
+ page = custom_targeting_service.get_custom_targeting_keys_by_statement(
48
+ statement)
49
+ keys = page[:results]
50
+
51
+ raise 'No targeting keys found to update' if !keys || keys.empty?
52
+
53
+ # Update each local custom targeting key object by changing its display name.
54
+ keys.each do |key|
55
+ display_name = (key[:display_name].nil?) ? key[:name] : key[:display_name]
56
+ key[:display_name] = display_name + ' (Deprecated)'
57
+ end
58
+
59
+ # Update the custom targeting keys on the server.
60
+ result_keys = custom_targeting_service.update_custom_targeting_keys(keys)
61
+
62
+ if result_keys
63
+ # Print details about each key in results.
64
+ result_keys.each_with_index do |custom_targeting_key, index|
65
+ puts ("%d) Custom targeting key with ID [%d], name: %s," +
66
+ " displayName: %s type: %s was updated") % [index,
67
+ custom_targeting_key[:id], custom_targeting_key[:name],
68
+ custom_targeting_key[:display_name], custom_targeting_key[:type]]
69
+ end
70
+ else
71
+ puts 'No targeting keys were updated'
72
+ end
73
+ end
74
+
75
+ if __FILE__ == $0
76
+ begin
77
+ update_custom_targeting_keys()
78
+
79
+ # HTTP errors.
80
+ rescue AdsCommon::Errors::HttpError => e
81
+ puts "HTTP Error: %s" % e
82
+
83
+ # API errors.
84
+ rescue DfpApi::Errors::ApiException => e
85
+ puts "Message: %s" % e.message
86
+ puts 'Errors:'
87
+ e.errors.each_with_index do |error, index|
88
+ puts "\tError [%d]:" % (index + 1)
89
+ error.each do |field, value|
90
+ puts "\t\t%s: %s" % [field, value]
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,106 @@
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 display name of each custom targeting value up to
21
+ # the first 500. To determine which custom targeting keys exist, run
22
+ # get_all_custom_targeting_keys_and_values.rb.
23
+ #
24
+ # Tags: CustomTargetingService.getCustomTargetingValuesByStatement,
25
+ # CustomTargetingService.updateCustomTargetingValues
26
+
27
+ require 'rubygems'
28
+ require 'dfp_api'
29
+
30
+ API_VERSION = :v201107
31
+
32
+ def update_custom_targeting_values()
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 CustomTargetingService.
41
+ custom_targeting_service = dfp.service(:CustomTargetingService, API_VERSION)
42
+
43
+ # Set the ID of the custom targeting key to get custom targeting values for.
44
+ custom_targeting_key_id = 'INSERT_CUSTOM_TARGETING_KEY_ID_HERE'.to_i
45
+
46
+ # Create a statement to get first 500 custom targeting keys.
47
+ statement = {
48
+ :query => 'WHERE customTargetingKeyId = :key_id LIMIT 500',
49
+ :values => [
50
+ {:key => 'key_id',
51
+ :value => {:value => custom_targeting_key_id,
52
+ :xsi_type => 'NumberValue'}
53
+ }
54
+ ]
55
+ }
56
+
57
+ # Get custom targeting keys by statement.
58
+ page = custom_targeting_service.get_custom_targeting_values_by_statement(
59
+ statement)
60
+ values = page[:results]
61
+
62
+ raise 'No targeting values found to update' if !values || values.empty?
63
+
64
+ # Update each local custom targeting values object by changing its display
65
+ # name.
66
+ values.each do |value|
67
+ display_name = (value[:display_name].nil?) ?
68
+ value[:name] : value[:display_name]
69
+ value[:display_name] = display_name + ' (Deprecated)'
70
+ end
71
+
72
+ # Update the custom targeting keys on the server.
73
+ result_values = custom_targeting_service.update_custom_targeting_values(values)
74
+
75
+ if result_values
76
+ # Print details about each value in results.
77
+ result_values.each_with_index do |custom_targeting_value, index|
78
+ puts ("%d) Custom targeting key with ID [%d], name: %s," +
79
+ " displayName: %s was updated") % [index, custom_targeting_value[:id],
80
+ custom_targeting_value[:name], custom_targeting_value[:display_name]]
81
+ end
82
+ else
83
+ puts 'No targeting keys values updated'
84
+ end
85
+ end
86
+
87
+ if __FILE__ == $0
88
+ begin
89
+ update_custom_targeting_values()
90
+
91
+ # HTTP errors.
92
+ rescue AdsCommon::Errors::HttpError => e
93
+ puts "HTTP Error: %s" % e
94
+
95
+ # API errors.
96
+ rescue DfpApi::Errors::ApiException => e
97
+ puts "Message: %s" % e.message
98
+ puts 'Errors:'
99
+ e.errors.each_with_index do |error, index|
100
+ puts "\tError [%d]:" % (index + 1)
101
+ error.each do |field, value|
102
+ puts "\t\t%s: %s" % [field, value]
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,103 @@
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 a forecast for a prospective line item. To determine which
21
+ # placements exist, run get_all_placements.rb.
22
+ #
23
+ # Tags: ForecastService.getForecast
24
+
25
+ require 'rubygems'
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201107
29
+
30
+ def get_forecast()
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 CreativeService.
39
+ forecast_service = dfp.service(:ForecastService, API_VERSION)
40
+
41
+ # Set the placement that the prospective line item will target.
42
+ targeted_placement_ids = ["INSERT_PLACEMENT_ID_HERE".to_i]
43
+
44
+ # Create targeting.
45
+ targeting = {
46
+ :inventory_targeting =>
47
+ {:targeted_placement_ids => targeted_placement_ids}
48
+ }
49
+
50
+ # Create prospective line item.
51
+ line_item = {
52
+ :line_item_type => 'SPONSORSHIP',
53
+ :targeting => targeting,
54
+ # Set the size of creatives that can be associated with this line item.
55
+ :creative_sizes =>
56
+ {:width => 300, :height => 250, :is_aspect_ratio => false},
57
+ # Set the line item's time to be now until the projected end date time.
58
+ :start_date_time_type => 'IMMEDIATELY',
59
+ :end_date_time => Time.utc(2012, 01, 01),
60
+ # Set the line item to use 50% of the impressions.
61
+ :unit_type => 'IMPRESSIONS',
62
+ :units_bought => 50,
63
+ # Set the cost type to match the unit type.
64
+ :cost_type => 'CPM'
65
+ }
66
+
67
+ # Get forecast for the line item.
68
+ forecast = forecast_service.get_forecast(line_item)
69
+
70
+ if forecast
71
+ # Display results.
72
+ matched = forecast[:matched_units]
73
+ available_percent = forecast[:available_units] * 100.0 / matched
74
+ unit_type = forecast[:unit_type].to_s.downcase
75
+ puts "%.2f %s matched." % [matched, unit_type]
76
+ puts "%.2f%% %s available." % [available_percent, unit_type]
77
+ if forecast[:possible_units]
78
+ possible_percent = forecast[:possible_units] * 100.0 / matched
79
+ puts "%.2f%% %s possible." % [possible_percent, unit_type]
80
+ end
81
+ end
82
+ end
83
+
84
+ if __FILE__ == $0
85
+ begin
86
+ get_forecast()
87
+
88
+ # HTTP errors.
89
+ rescue AdsCommon::Errors::HttpError => e
90
+ puts "HTTP Error: %s" % e
91
+
92
+ # API errors.
93
+ rescue DfpApi::Errors::ApiException => e
94
+ puts "Message: %s" % e.message
95
+ puts 'Errors:'
96
+ e.errors.each_with_index do |error, index|
97
+ puts "\tError [%d]:" % (index + 1)
98
+ error.each do |field, value|
99
+ puts "\t\t%s: %s" % [field, value]
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,80 @@
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 a forecast for an existing line item. To determine which
21
+ # line items exist, run get_all_line_items.rb.
22
+ #
23
+ # Tags: ForecastService.getForecastById
24
+
25
+ require 'rubygems'
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201107
29
+
30
+ def get_forecast_by_id()
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 CreativeService.
39
+ forecast_service = dfp.service(:ForecastService, API_VERSION)
40
+
41
+ # Set the line item to get a forecast for.
42
+ line_item_id = 'INSERT_LINE_ITEM_ID_HERE'.to_i
43
+
44
+ # Get forecast for line item.
45
+ forecast = forecast_service.get_forecast_by_id(line_item_id)
46
+
47
+ if forecast
48
+ # Display results.
49
+ matched = forecast[:matched_units]
50
+ available_percent = forecast[:available_units] * 100.0 / matched
51
+ unit_type = forecast[:unit_type].to_s.downcase
52
+ puts "%.2f %s matched." % [matched, unit_type]
53
+ puts "%.2f%% %s available." % [available_percent, unit_type]
54
+ if forecast[:possible_units]
55
+ possible_percent = forecast[:possible_units] * 100.0 / matched
56
+ puts "%.2f%% %s possible." % [possible_percent, unit_type]
57
+ end
58
+ end
59
+ end
60
+
61
+ if __FILE__ == $0
62
+ begin
63
+ get_forecast_by_id()
64
+
65
+ # HTTP errors.
66
+ rescue AdsCommon::Errors::HttpError => e
67
+ puts "HTTP Error: %s" % e
68
+
69
+ # API errors.
70
+ rescue DfpApi::Errors::ApiException => e
71
+ puts "Message: %s" % e.message
72
+ puts 'Errors:'
73
+ e.errors.each_with_index do |error, index|
74
+ puts "\tError [%d]:" % (index + 1)
75
+ error.each do |field, value|
76
+ puts "\t\t%s: %s" % [field, value]
77
+ end
78
+ end
79
+ end
80
+ end