google-dfp-api 0.2.0 → 0.2.1

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 (226) hide show
  1. data/ChangeLog +7 -1
  2. data/README +11 -11
  3. data/Rakefile +13 -11
  4. data/examples/v201103/common/error_handling.rb +76 -0
  5. data/examples/v201103/company_service/create_companies.rb +82 -0
  6. data/examples/v201103/company_service/get_all_companies.rb +92 -0
  7. data/examples/v201103/company_service/get_companies_by_statement.rb +88 -0
  8. data/examples/v201103/company_service/get_company.rb +72 -0
  9. data/examples/v201103/company_service/update_companies.rb +95 -0
  10. data/examples/v201103/creative_service/copy_image_creatives.rb +117 -0
  11. data/examples/v201103/creative_service/create_creatives.rb +109 -0
  12. data/examples/v201103/creative_service/get_all_creatives.rb +93 -0
  13. data/examples/v201103/creative_service/get_creative.rb +72 -0
  14. data/examples/v201103/creative_service/get_creatives_by_statement.rb +87 -0
  15. data/examples/v201103/creative_service/update_creatives.rb +98 -0
  16. data/examples/v201103/custom_targeting_service/create_custom_targeting_keys_and_values.rb +118 -0
  17. data/examples/v201103/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
  18. data/examples/v201103/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
  19. data/examples/v201103/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
  20. data/examples/v201103/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
  21. data/examples/v201103/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
  22. data/examples/v201103/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
  23. data/examples/v201103/custom_targeting_service/update_custom_targeting_values.rb +106 -0
  24. data/examples/v201103/forecast_service/get_forecast.rb +103 -0
  25. data/examples/v201103/forecast_service/get_forecast_by_id.rb +80 -0
  26. data/examples/v201103/inventory_service/create_ad_units.rb +98 -0
  27. data/examples/v201103/inventory_service/deactivate_ad_units.rb +119 -0
  28. data/examples/v201103/inventory_service/get_ad_unit.rb +72 -0
  29. data/examples/v201103/inventory_service/get_ad_units_by_statement.rb +96 -0
  30. data/examples/v201103/inventory_service/get_all_ad_units.rb +93 -0
  31. data/examples/v201103/inventory_service/update_ad_units.rb +94 -0
  32. data/examples/v201103/line_item_creative_association_service/create_licas.rb +94 -0
  33. data/examples/v201103/line_item_creative_association_service/deactivate_licas.rb +127 -0
  34. data/examples/v201103/line_item_creative_association_service/get_all_licas.rb +95 -0
  35. data/examples/v201103/line_item_creative_association_service/get_lica.rb +77 -0
  36. data/examples/v201103/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
  37. data/examples/v201103/line_item_creative_association_service/update_licas.rb +92 -0
  38. data/examples/v201103/line_item_service/activate_line_items.rb +131 -0
  39. data/examples/v201103/line_item_service/create_line_items.rb +165 -0
  40. data/examples/v201103/line_item_service/get_all_line_items.rb +94 -0
  41. data/examples/v201103/line_item_service/get_line_item.rb +74 -0
  42. data/examples/v201103/line_item_service/get_line_items_by_statement.rb +89 -0
  43. data/examples/v201103/line_item_service/target_custom_criteria.rb +135 -0
  44. data/examples/v201103/line_item_service/update_line_items.rb +110 -0
  45. data/examples/v201103/network_service/get_all_networks.rb +74 -0
  46. data/examples/v201103/network_service/get_current_network.rb +66 -0
  47. data/examples/v201103/order_service/approve_orders.rb +116 -0
  48. data/examples/v201103/order_service/create_orders.rb +93 -0
  49. data/examples/v201103/order_service/get_all_orders.rb +93 -0
  50. data/examples/v201103/order_service/get_order.rb +74 -0
  51. data/examples/v201103/order_service/get_orders_by_statement.rb +90 -0
  52. data/examples/v201103/order_service/update_orders.rb +95 -0
  53. data/examples/v201103/placement_service/create_placements.rb +128 -0
  54. data/examples/v201103/placement_service/deactivate_placements.rb +118 -0
  55. data/examples/v201103/placement_service/get_all_placements.rb +93 -0
  56. data/examples/v201103/placement_service/get_placement.rb +74 -0
  57. data/examples/v201103/placement_service/get_placements_by_statement.rb +86 -0
  58. data/examples/v201103/placement_service/update_placements.rb +96 -0
  59. data/examples/v201103/publisher_query_language_service/get_all_cities.rb +85 -0
  60. data/examples/v201103/publisher_query_language_service/get_all_countries.rb +85 -0
  61. data/examples/v201103/publisher_query_language_service/get_all_metros.rb +85 -0
  62. data/examples/v201103/publisher_query_language_service/get_all_regions.rb +85 -0
  63. data/examples/v201103/report_service/download_report.rb +81 -0
  64. data/examples/v201103/report_service/run_delivery_report.rb +89 -0
  65. data/examples/v201103/report_service/run_inventory_report.rb +90 -0
  66. data/examples/v201103/report_service/run_sales_report.rb +89 -0
  67. data/examples/v201103/user_service/create_users.rb +89 -0
  68. data/examples/v201103/user_service/deactivate_users.rb +99 -0
  69. data/examples/v201103/user_service/get_all_roles.rb +73 -0
  70. data/examples/v201103/user_service/get_all_users.rb +92 -0
  71. data/examples/v201103/user_service/get_user.rb +73 -0
  72. data/examples/v201103/user_service/get_users_by_statement.rb +79 -0
  73. data/examples/v201103/user_service/update_users.rb +89 -0
  74. data/examples/v201104/common/error_handling.rb +76 -0
  75. data/examples/v201104/company_service/create_companies.rb +82 -0
  76. data/examples/v201104/company_service/get_all_companies.rb +92 -0
  77. data/examples/v201104/company_service/get_companies_by_statement.rb +88 -0
  78. data/examples/v201104/company_service/get_company.rb +72 -0
  79. data/examples/v201104/company_service/update_companies.rb +95 -0
  80. data/examples/v201104/creative_service/copy_image_creatives.rb +117 -0
  81. data/examples/v201104/creative_service/create_creatives.rb +109 -0
  82. data/examples/v201104/creative_service/get_all_creatives.rb +93 -0
  83. data/examples/v201104/creative_service/get_creative.rb +72 -0
  84. data/examples/v201104/creative_service/get_creatives_by_statement.rb +87 -0
  85. data/examples/v201104/creative_service/update_creatives.rb +98 -0
  86. data/examples/v201104/custom_targeting_service/create_custom_targeting_keys_and_values.rb +118 -0
  87. data/examples/v201104/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
  88. data/examples/v201104/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
  89. data/examples/v201104/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
  90. data/examples/v201104/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
  91. data/examples/v201104/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
  92. data/examples/v201104/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
  93. data/examples/v201104/custom_targeting_service/update_custom_targeting_values.rb +106 -0
  94. data/examples/v201104/forecast_service/get_forecast.rb +103 -0
  95. data/examples/v201104/forecast_service/get_forecast_by_id.rb +80 -0
  96. data/examples/v201104/inventory_service/create_ad_units.rb +98 -0
  97. data/examples/v201104/inventory_service/deactivate_ad_units.rb +119 -0
  98. data/examples/v201104/inventory_service/get_ad_unit.rb +72 -0
  99. data/examples/v201104/inventory_service/get_ad_units_by_statement.rb +96 -0
  100. data/examples/v201104/inventory_service/get_all_ad_units.rb +93 -0
  101. data/examples/v201104/inventory_service/update_ad_units.rb +94 -0
  102. data/examples/v201104/line_item_creative_association_service/create_licas.rb +94 -0
  103. data/examples/v201104/line_item_creative_association_service/deactivate_licas.rb +127 -0
  104. data/examples/v201104/line_item_creative_association_service/get_all_licas.rb +95 -0
  105. data/examples/v201104/line_item_creative_association_service/get_lica.rb +77 -0
  106. data/examples/v201104/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
  107. data/examples/v201104/line_item_creative_association_service/update_licas.rb +92 -0
  108. data/examples/v201104/line_item_service/activate_line_items.rb +131 -0
  109. data/examples/v201104/line_item_service/create_line_items.rb +157 -0
  110. data/examples/v201104/line_item_service/get_all_line_items.rb +94 -0
  111. data/examples/v201104/line_item_service/get_line_item.rb +74 -0
  112. data/examples/v201104/line_item_service/get_line_items_by_statement.rb +89 -0
  113. data/examples/v201104/line_item_service/target_custom_criteria.rb +129 -0
  114. data/examples/v201104/line_item_service/update_line_items.rb +110 -0
  115. data/examples/v201104/network_service/get_all_networks.rb +74 -0
  116. data/examples/v201104/network_service/get_current_network.rb +66 -0
  117. data/examples/v201104/order_service/approve_orders.rb +116 -0
  118. data/examples/v201104/order_service/create_orders.rb +93 -0
  119. data/examples/v201104/order_service/get_all_orders.rb +93 -0
  120. data/examples/v201104/order_service/get_order.rb +74 -0
  121. data/examples/v201104/order_service/get_orders_by_statement.rb +90 -0
  122. data/examples/v201104/order_service/update_orders.rb +95 -0
  123. data/examples/v201104/placement_service/create_placements.rb +128 -0
  124. data/examples/v201104/placement_service/deactivate_placements.rb +118 -0
  125. data/examples/v201104/placement_service/get_all_placements.rb +93 -0
  126. data/examples/v201104/placement_service/get_placement.rb +74 -0
  127. data/examples/v201104/placement_service/get_placements_by_statement.rb +86 -0
  128. data/examples/v201104/placement_service/update_placements.rb +96 -0
  129. data/examples/v201104/publisher_query_language_service/get_all_cities.rb +85 -0
  130. data/examples/v201104/publisher_query_language_service/get_all_countries.rb +85 -0
  131. data/examples/v201104/publisher_query_language_service/get_all_metros.rb +85 -0
  132. data/examples/v201104/publisher_query_language_service/get_all_regions.rb +85 -0
  133. data/examples/v201104/report_service/download_report.rb +81 -0
  134. data/examples/v201104/report_service/run_delivery_report.rb +89 -0
  135. data/examples/v201104/report_service/run_inventory_report.rb +90 -0
  136. data/examples/v201104/report_service/run_sales_report.rb +89 -0
  137. data/examples/v201104/user_service/create_users.rb +89 -0
  138. data/examples/v201104/user_service/deactivate_users.rb +99 -0
  139. data/examples/v201104/user_service/get_all_roles.rb +73 -0
  140. data/examples/v201104/user_service/get_all_users.rb +92 -0
  141. data/examples/v201104/user_service/get_user.rb +73 -0
  142. data/examples/v201104/user_service/get_users_by_statement.rb +79 -0
  143. data/examples/v201104/user_service/update_users.rb +89 -0
  144. data/lib/dfp_api.rb +32 -45
  145. data/lib/dfp_api/api_config.rb +30 -7
  146. data/lib/dfp_api/v201101/company_service.rb +9 -9
  147. data/lib/dfp_api/v201101/company_service_registry.rb +3 -3
  148. data/lib/dfp_api/v201101/creative_service.rb +9 -9
  149. data/lib/dfp_api/v201101/creative_service_registry.rb +3 -3
  150. data/lib/dfp_api/v201101/custom_targeting_service.rb +9 -9
  151. data/lib/dfp_api/v201101/custom_targeting_service_registry.rb +3 -3
  152. data/lib/dfp_api/v201101/forecast_service.rb +5 -5
  153. data/lib/dfp_api/v201101/forecast_service_registry.rb +3 -3
  154. data/lib/dfp_api/v201101/inventory_service.rb +13 -13
  155. data/lib/dfp_api/v201101/inventory_service_registry.rb +3 -3
  156. data/lib/dfp_api/v201101/line_item_creative_association_service.rb +5 -5
  157. data/lib/dfp_api/v201101/line_item_creative_association_service_registry.rb +3 -3
  158. data/lib/dfp_api/v201101/line_item_service.rb +13 -13
  159. data/lib/dfp_api/v201101/line_item_service_registry.rb +3 -3
  160. data/lib/dfp_api/v201101/network_service.rb +5 -5
  161. data/lib/dfp_api/v201101/network_service_registry.rb +3 -3
  162. data/lib/dfp_api/v201101/order_service.rb +13 -13
  163. data/lib/dfp_api/v201101/order_service_registry.rb +3 -3
  164. data/lib/dfp_api/v201101/placement_service.rb +9 -9
  165. data/lib/dfp_api/v201101/placement_service_registry.rb +3 -3
  166. data/lib/dfp_api/v201101/publisher_query_language_service.rb +1 -1
  167. data/lib/dfp_api/v201101/publisher_query_language_service_registry.rb +3 -3
  168. data/lib/dfp_api/v201101/report_service.rb +5 -5
  169. data/lib/dfp_api/v201101/report_service_registry.rb +3 -3
  170. data/lib/dfp_api/v201101/user_service.rb +17 -17
  171. data/lib/dfp_api/v201101/user_service_registry.rb +3 -3
  172. data/lib/dfp_api/v201103/company_service.rb +52 -0
  173. data/lib/dfp_api/v201103/company_service_registry.rb +37 -0
  174. data/lib/dfp_api/v201103/creative_service.rb +52 -0
  175. data/lib/dfp_api/v201103/creative_service_registry.rb +37 -0
  176. data/lib/dfp_api/v201103/custom_targeting_service.rb +60 -0
  177. data/lib/dfp_api/v201103/custom_targeting_service_registry.rb +37 -0
  178. data/lib/dfp_api/v201103/forecast_service.rb +36 -0
  179. data/lib/dfp_api/v201103/forecast_service_registry.rb +37 -0
  180. data/lib/dfp_api/v201103/inventory_service.rb +56 -0
  181. data/lib/dfp_api/v201103/inventory_service_registry.rb +37 -0
  182. data/lib/dfp_api/v201103/line_item_creative_association_service.rb +56 -0
  183. data/lib/dfp_api/v201103/line_item_creative_association_service_registry.rb +37 -0
  184. data/lib/dfp_api/v201103/line_item_service.rb +56 -0
  185. data/lib/dfp_api/v201103/line_item_service_registry.rb +37 -0
  186. data/lib/dfp_api/v201103/network_service.rb +40 -0
  187. data/lib/dfp_api/v201103/network_service_registry.rb +37 -0
  188. data/lib/dfp_api/v201103/order_service.rb +56 -0
  189. data/lib/dfp_api/v201103/order_service_registry.rb +37 -0
  190. data/lib/dfp_api/v201103/placement_service.rb +56 -0
  191. data/lib/dfp_api/v201103/placement_service_registry.rb +37 -0
  192. data/lib/dfp_api/v201103/publisher_query_language_service.rb +32 -0
  193. data/lib/dfp_api/v201103/publisher_query_language_service_registry.rb +37 -0
  194. data/lib/dfp_api/v201103/report_service.rb +40 -0
  195. data/lib/dfp_api/v201103/report_service_registry.rb +37 -0
  196. data/lib/dfp_api/v201103/user_service.rb +60 -0
  197. data/lib/dfp_api/v201103/user_service_registry.rb +37 -0
  198. data/lib/dfp_api/v201104/company_service.rb +52 -0
  199. data/lib/dfp_api/v201104/company_service_registry.rb +37 -0
  200. data/lib/dfp_api/v201104/creative_service.rb +52 -0
  201. data/lib/dfp_api/v201104/creative_service_registry.rb +37 -0
  202. data/lib/dfp_api/v201104/custom_targeting_service.rb +60 -0
  203. data/lib/dfp_api/v201104/custom_targeting_service_registry.rb +37 -0
  204. data/lib/dfp_api/v201104/forecast_service.rb +36 -0
  205. data/lib/dfp_api/v201104/forecast_service_registry.rb +37 -0
  206. data/lib/dfp_api/v201104/inventory_service.rb +56 -0
  207. data/lib/dfp_api/v201104/inventory_service_registry.rb +37 -0
  208. data/lib/dfp_api/v201104/line_item_creative_association_service.rb +56 -0
  209. data/lib/dfp_api/v201104/line_item_creative_association_service_registry.rb +37 -0
  210. data/lib/dfp_api/v201104/line_item_service.rb +56 -0
  211. data/lib/dfp_api/v201104/line_item_service_registry.rb +37 -0
  212. data/lib/dfp_api/v201104/network_service.rb +40 -0
  213. data/lib/dfp_api/v201104/network_service_registry.rb +37 -0
  214. data/lib/dfp_api/v201104/order_service.rb +56 -0
  215. data/lib/dfp_api/v201104/order_service_registry.rb +37 -0
  216. data/lib/dfp_api/v201104/placement_service.rb +56 -0
  217. data/lib/dfp_api/v201104/placement_service_registry.rb +37 -0
  218. data/lib/dfp_api/v201104/publisher_query_language_service.rb +32 -0
  219. data/lib/dfp_api/v201104/publisher_query_language_service_registry.rb +37 -0
  220. data/lib/dfp_api/v201104/report_service.rb +40 -0
  221. data/lib/dfp_api/v201104/report_service_registry.rb +37 -0
  222. data/lib/dfp_api/v201104/user_service.rb +60 -0
  223. data/lib/dfp_api/v201104/user_service_registry.rb +37 -0
  224. data/test/bugs/test_issue_00000016.rb +154 -0
  225. data/test/dfp_api/test_dfp_api.rb +64 -0
  226. metadata +248 -53
@@ -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 = :v201104
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 = :v201104
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 = :v201104
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
@@ -0,0 +1,118 @@
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 deactivates all active placements. To determine which placements
21
+ # exist, run get_all_placements.rb.
22
+ #
23
+ # Tags: PlacementService.getPlacementsByStatement,
24
+ # PlacementService.performPlacementAction
25
+
26
+ require 'rubygems'
27
+ require 'dfp_api'
28
+
29
+ API_VERSION = :v201104
30
+ PAGE_SIZE = 500
31
+
32
+ def deactivate_placements()
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 PlacementService.
41
+ placement_service = dfp.service(:PlacementService, API_VERSION)
42
+
43
+ # Create statement text and statement to select active placements.
44
+ statement_text = 'WHERE status = :status'
45
+ statement = {
46
+ :values => [
47
+ {:key => 'status',
48
+ :value => {:value => 'ACTIVE', :xsi_type => 'TextValue'}}
49
+ ]
50
+ }
51
+
52
+ # Define initial values.
53
+ offset = 0
54
+ page = Hash.new
55
+ placement_ids = Array.new
56
+
57
+ begin
58
+ # Modify the statement to get one page with current offset.
59
+ statement[:query] = statement_text +
60
+ " LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]
61
+
62
+ # Get placements by statement.
63
+ page = placement_service.get_placements_by_statement(statement)
64
+
65
+ if page[:results]
66
+ # Increase query offset by page size.
67
+ offset += PAGE_SIZE
68
+
69
+ page[:results].each do |placement|
70
+ puts ("%d) Placement ID: %d, name: %s and status: %s will be " +
71
+ "deactivated.") % [placement_ids.size, placement[:id],
72
+ placement[:name], placement[:status]]
73
+ placement_ids << placement[:id]
74
+ end
75
+ end
76
+ end while offset < page[:total_result_set_size]
77
+
78
+ puts "Number of placements to be deactivated: %d" % placement_ids.size
79
+
80
+ if !placement_ids.empty?
81
+ # Create a statement for action.
82
+ statement = {:query => "WHERE id IN (%s)" % placement_ids.join(', ')}
83
+
84
+ # Perform action.
85
+ result = placement_service.perform_placement_action(
86
+ {:xsi_type => 'DeactivatePlacements'}, statement)
87
+
88
+ # Display results.
89
+ if result and result[:num_changes] > 0
90
+ puts "Number of placements deactivated: %d" % result[:num_changes]
91
+ else
92
+ puts 'No placements were deactivated.'
93
+ end
94
+ else
95
+ puts 'No placements found to deactivate.'
96
+ end
97
+ end
98
+
99
+ if __FILE__ == $0
100
+ begin
101
+ deactivate_placements()
102
+
103
+ # HTTP errors.
104
+ rescue AdsCommon::Errors::HttpError => e
105
+ puts "HTTP Error: %s" % e
106
+
107
+ # API errors.
108
+ rescue DfpApi::Errors::ApiException => e
109
+ puts "Message: %s" % e.message
110
+ puts 'Errors:'
111
+ e.errors.each_with_index do |error, index|
112
+ puts "\tError [%d]:" % (index + 1)
113
+ error.each do |field, value|
114
+ puts "\t\t%s: %s" % [field, value]
115
+ end
116
+ end
117
+ end
118
+ 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 gets all placements. To create placements, run
21
+ # create_placements.rb
22
+ #
23
+ # Tags: PlacementService.getPlacementsByStatement
24
+
25
+ require 'rubygems'
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201104
29
+ PAGE_SIZE = 500
30
+
31
+ def get_all_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 PlacementService.
40
+ placement_service = dfp.service(:PlacementService, API_VERSION)
41
+
42
+ # Define initial values.
43
+ offset = 0
44
+ page = Hash.new
45
+
46
+ begin
47
+ # Create statement for one page with current offset.
48
+ statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
49
+
50
+ # Get placements by statement.
51
+ page = placement_service.get_placements_by_statement(statement)
52
+
53
+ if page[:results]
54
+ # Increase query offset by page size.
55
+ offset += PAGE_SIZE
56
+
57
+ # Get the start index for printout.
58
+ start_index = page[:start_index]
59
+
60
+ # Print details about each placement in results page.
61
+ page[:results].each_with_index do |placement, index|
62
+ puts "%d) Placement ID: %d, name: %s." %
63
+ [index + start_index, placement[:id], placement[:name]]
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 placements: %d" % page[:total_result_set_size]
71
+ end
72
+ end
73
+
74
+ if __FILE__ == $0
75
+ begin
76
+ get_all_placements()
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