google-dfp-api 0.7.0 → 0.7.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 (245) hide show
  1. checksums.yaml +8 -8
  2. data/ChangeLog +4 -0
  3. data/README +2 -2
  4. data/examples/v201208/common/setup_oauth2.rb +89 -0
  5. data/examples/v201211/common/setup_oauth2.rb +89 -0
  6. data/examples/v201302/common/setup_oauth2.rb +89 -0
  7. data/examples/v201306/common/setup_oauth2.rb +89 -0
  8. data/examples/v201308/common/setup_oauth2.rb +89 -0
  9. data/examples/v201311/activity_group_service/create_activity_groups.rb +94 -0
  10. data/examples/v201311/activity_group_service/get_active_activity_groups.rb +100 -0
  11. data/examples/v201311/activity_group_service/get_all_activity_groups.rb +95 -0
  12. data/examples/v201311/activity_group_service/update_activity_groups.rb +87 -0
  13. data/examples/v201311/activity_service/create_activities.rb +91 -0
  14. data/examples/v201311/activity_service/get_active_activities.rb +103 -0
  15. data/examples/v201311/activity_service/get_all_activities.rb +96 -0
  16. data/examples/v201311/activity_service/update_activities.rb +85 -0
  17. data/examples/v201311/audience_segment_service/create_audience_segments.rb +118 -0
  18. data/examples/v201311/audience_segment_service/get_all_audience_segments.rb +94 -0
  19. data/examples/v201311/audience_segment_service/get_first_party_audience_segments.rb +99 -0
  20. data/examples/v201311/audience_segment_service/populate_first_party_audience_segments.rb +101 -0
  21. data/examples/v201311/audience_segment_service/update_audience_segments.rb +98 -0
  22. data/examples/v201311/common/error_handling.rb +76 -0
  23. data/examples/{v201208/common/oauth2_handling.rb → v201311/common/oauth2_jwt_handling.rb} +20 -41
  24. data/examples/v201311/common/setup_oauth2.rb +89 -0
  25. data/examples/v201311/company_service/create_companies.rb +81 -0
  26. data/examples/v201311/company_service/get_all_companies.rb +92 -0
  27. data/examples/v201311/company_service/get_companies_by_statement.rb +88 -0
  28. data/examples/v201311/company_service/get_company.rb +72 -0
  29. data/examples/v201311/company_service/update_companies.rb +102 -0
  30. data/examples/v201311/contact_service/create_contacts.rb +95 -0
  31. data/examples/v201311/contact_service/get_all_contacts.rb +92 -0
  32. data/examples/v201311/contact_service/get_uninvited_contacts.rb +102 -0
  33. data/examples/v201311/contact_service/update_contacts.rb +84 -0
  34. data/examples/v201311/content_service/get_all_content.rb +94 -0
  35. data/examples/v201311/content_service/get_content_by_category.rb +143 -0
  36. data/examples/v201311/creative_service/copy_image_creatives.rb +115 -0
  37. data/examples/v201311/creative_service/create_creative_from_template.rb +139 -0
  38. data/examples/v201311/creative_service/create_creatives.rb +112 -0
  39. data/examples/v201311/creative_service/create_custom_creative.rb +104 -0
  40. data/examples/v201311/creative_service/get_all_creatives.rb +93 -0
  41. data/examples/v201311/creative_service/get_creative.rb +72 -0
  42. data/examples/v201311/creative_service/get_creatives_by_statement.rb +87 -0
  43. data/examples/v201311/creative_service/update_creatives.rb +96 -0
  44. data/examples/v201311/creative_set_service/associate_creative_set_to_line_item.rb +77 -0
  45. data/examples/v201311/creative_set_service/create_creative_set.rb +83 -0
  46. data/examples/v201311/creative_set_service/get_all_creative_sets.rb +94 -0
  47. data/examples/v201311/creative_set_service/get_creative_sets_by_statement.rb +90 -0
  48. data/examples/v201311/creative_set_service/update_creative_sets.rb +85 -0
  49. data/examples/v201311/creative_template_service/get_all_creative_templates.rb +94 -0
  50. data/examples/v201311/creative_template_service/get_creative_template.rb +74 -0
  51. data/examples/v201311/creative_template_service/get_creative_templates_by_statement.rb +80 -0
  52. data/examples/v201311/creative_wrapper_service/create_creative_wrappers.rb +89 -0
  53. data/examples/v201311/creative_wrapper_service/deactivate_creative_wrapper.rb +102 -0
  54. data/examples/v201311/creative_wrapper_service/get_all_creative_wrappers.rb +94 -0
  55. data/examples/v201311/creative_wrapper_service/get_creative_wrappers_by_statement.rb +88 -0
  56. data/examples/v201311/creative_wrapper_service/update_creative_wrappers.rb +86 -0
  57. data/examples/v201311/custom_field_service/create_custom_field_options.rb +87 -0
  58. data/examples/v201311/custom_field_service/create_custom_fields.rb +86 -0
  59. data/examples/v201311/custom_field_service/deactivate_all_line_item_custom_fields.rb +112 -0
  60. data/examples/v201311/custom_field_service/get_all_custom_fields.rb +102 -0
  61. data/examples/v201311/custom_field_service/get_all_line_item_custom_fields.rb +86 -0
  62. data/examples/v201311/custom_field_service/set_line_item_custom_field_value.rb +135 -0
  63. data/examples/v201311/custom_field_service/update_custom_fields.rb +84 -0
  64. data/examples/v201311/custom_targeting_service/create_custom_targeting_keys_and_values.rb +140 -0
  65. data/examples/v201311/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
  66. data/examples/v201311/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
  67. data/examples/v201311/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
  68. data/examples/v201311/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
  69. data/examples/v201311/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
  70. data/examples/v201311/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
  71. data/examples/v201311/custom_targeting_service/update_custom_targeting_values.rb +106 -0
  72. data/examples/v201311/forecast_service/get_forecast.rb +108 -0
  73. data/examples/v201311/forecast_service/get_forecast_by_id.rb +81 -0
  74. data/examples/v201311/inventory_service/create_ad_units.rb +101 -0
  75. data/examples/v201311/inventory_service/create_mobile_ad_unit.rb +101 -0
  76. data/examples/v201311/inventory_service/create_video_ad_unit.rb +108 -0
  77. data/examples/v201311/inventory_service/deactivate_ad_units.rb +119 -0
  78. data/examples/v201311/inventory_service/get_ad_unit.rb +72 -0
  79. data/examples/v201311/inventory_service/get_ad_unit_sizes.rb +85 -0
  80. data/examples/v201311/inventory_service/get_ad_units_by_statement.rb +96 -0
  81. data/examples/v201311/inventory_service/get_all_ad_units.rb +93 -0
  82. data/examples/v201311/inventory_service/update_ad_units.rb +96 -0
  83. data/examples/v201311/label_service/create_labels.rb +83 -0
  84. data/examples/v201311/label_service/deactivate_labels.rb +118 -0
  85. data/examples/v201311/label_service/get_all_labels.rb +95 -0
  86. data/examples/v201311/label_service/get_label.rb +76 -0
  87. data/examples/v201311/label_service/get_labels_by_statement.rb +81 -0
  88. data/examples/v201311/label_service/update_labels.rb +102 -0
  89. data/examples/v201311/line_item_creative_association_service/create_licas.rb +94 -0
  90. data/examples/v201311/line_item_creative_association_service/deactivate_licas.rb +127 -0
  91. data/examples/v201311/line_item_creative_association_service/get_all_licas.rb +98 -0
  92. data/examples/v201311/line_item_creative_association_service/get_lica.rb +77 -0
  93. data/examples/v201311/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
  94. data/examples/v201311/line_item_creative_association_service/update_licas.rb +91 -0
  95. data/examples/v201311/line_item_service/activate_line_items.rb +131 -0
  96. data/examples/v201311/line_item_service/create_line_items.rb +177 -0
  97. data/examples/v201311/line_item_service/create_mobile_line_item.rb +135 -0
  98. data/examples/v201311/line_item_service/create_video_line_item.rb +158 -0
  99. data/examples/v201311/line_item_service/get_all_line_items.rb +94 -0
  100. data/examples/v201311/line_item_service/get_line_item.rb +74 -0
  101. data/examples/v201311/line_item_service/get_line_items_by_statement.rb +93 -0
  102. data/examples/v201311/line_item_service/get_recently_updated_line_items.rb +98 -0
  103. data/examples/v201311/line_item_service/target_custom_criteria.rb +129 -0
  104. data/examples/v201311/line_item_service/update_line_items.rb +109 -0
  105. data/examples/v201311/network_service/get_all_networks.rb +74 -0
  106. data/examples/v201311/network_service/get_current_network.rb +66 -0
  107. data/examples/v201311/network_service/make_test_network.rb +79 -0
  108. data/examples/v201311/order_service/approve_orders.rb +122 -0
  109. data/examples/v201311/order_service/create_orders.rb +92 -0
  110. data/examples/v201311/order_service/get_all_orders.rb +93 -0
  111. data/examples/v201311/order_service/get_order.rb +74 -0
  112. data/examples/v201311/order_service/get_orders_by_statement.rb +90 -0
  113. data/examples/v201311/order_service/update_orders.rb +97 -0
  114. data/examples/v201311/placement_service/create_placements.rb +131 -0
  115. data/examples/v201311/placement_service/deactivate_placements.rb +118 -0
  116. data/examples/v201311/placement_service/get_all_placements.rb +93 -0
  117. data/examples/v201311/placement_service/get_placement.rb +74 -0
  118. data/examples/v201311/placement_service/get_placements_by_statement.rb +86 -0
  119. data/examples/v201311/placement_service/update_placements.rb +97 -0
  120. data/examples/v201311/publisher_query_language_service/fetch_match_tables.rb +113 -0
  121. data/examples/v201311/publisher_query_language_service/get_all_line_items.rb +100 -0
  122. data/examples/v201311/publisher_query_language_service/get_geo_targets.rb +102 -0
  123. data/examples/v201311/publisher_query_language_service/get_line_items_named_like.rb +100 -0
  124. data/examples/v201311/report_service/display_report.rb +81 -0
  125. data/examples/v201311/report_service/download_report.rb +81 -0
  126. data/examples/v201311/report_service/run_delivery_report.rb +103 -0
  127. data/examples/v201311/report_service/run_inventory_report.rb +112 -0
  128. data/examples/v201311/report_service/run_merged_delivery_report.rb +94 -0
  129. data/examples/v201311/report_service/run_reach_report.rb +87 -0
  130. data/examples/v201311/report_service/run_report_with_custom_fields.rb +135 -0
  131. data/examples/v201311/report_service/run_sales_report.rb +92 -0
  132. data/examples/v201311/suggested_ad_unit_service/approve_all_suggested_ad_units.rb +109 -0
  133. data/examples/v201311/suggested_ad_unit_service/get_all_suggested_ad_units.rb +96 -0
  134. data/examples/v201311/suggested_ad_unit_service/get_suggested_ad_unit.rb +75 -0
  135. data/examples/v201311/suggested_ad_unit_service/get_suggested_ad_units_by_statement.rb +92 -0
  136. data/examples/v201311/team_service/create_teams.rb +83 -0
  137. data/examples/v201311/team_service/get_all_teams.rb +92 -0
  138. data/examples/v201311/team_service/get_team.rb +74 -0
  139. data/examples/v201311/team_service/get_teams_by_statement.rb +78 -0
  140. data/examples/v201311/team_service/update_teams.rb +97 -0
  141. data/examples/v201311/user_service/create_users.rb +89 -0
  142. data/examples/v201311/user_service/deactivate_users.rb +97 -0
  143. data/examples/v201311/user_service/get_all_roles.rb +73 -0
  144. data/examples/{v201211/common/oauth2_handling.rb → v201311/user_service/get_all_users.rb} +9 -44
  145. data/examples/v201311/user_service/get_current_user.rb +66 -0
  146. data/examples/v201311/user_service/get_user.rb +73 -0
  147. data/examples/v201311/user_service/get_users_by_statement.rb +79 -0
  148. data/examples/v201311/user_service/update_users.rb +89 -0
  149. data/examples/v201311/user_team_association_service/create_user_team_associations.rb +86 -0
  150. data/examples/v201311/user_team_association_service/delete_user_team_associations.rb +111 -0
  151. data/examples/v201311/user_team_association_service/get_all_user_team_associations.rb +94 -0
  152. data/examples/v201311/user_team_association_service/get_user_team_association.rb +76 -0
  153. data/examples/v201311/user_team_association_service/get_user_team_associations_by_statement.rb +94 -0
  154. data/examples/v201311/user_team_association_service/update_user_team_associations.rb +102 -0
  155. data/lib/dfp_api/api_config.rb +49 -4
  156. data/lib/dfp_api/v201311/activity_group_service.rb +54 -0
  157. data/lib/dfp_api/v201311/activity_group_service_registry.rb +46 -0
  158. data/lib/dfp_api/v201311/activity_service.rb +54 -0
  159. data/lib/dfp_api/v201311/activity_service_registry.rb +46 -0
  160. data/lib/dfp_api/v201311/ad_rule_service.rb +58 -0
  161. data/lib/dfp_api/v201311/ad_rule_service_registry.rb +46 -0
  162. data/lib/dfp_api/v201311/audience_segment_service.rb +46 -0
  163. data/lib/dfp_api/v201311/audience_segment_service_registry.rb +46 -0
  164. data/lib/dfp_api/v201311/base_rate_service.rb +58 -0
  165. data/lib/dfp_api/v201311/base_rate_service_registry.rb +46 -0
  166. data/lib/dfp_api/v201311/company_service.rb +54 -0
  167. data/lib/dfp_api/v201311/company_service_registry.rb +46 -0
  168. data/lib/dfp_api/v201311/contact_service.rb +54 -0
  169. data/lib/dfp_api/v201311/contact_service_registry.rb +46 -0
  170. data/lib/dfp_api/v201311/content_bundle_service.rb +58 -0
  171. data/lib/dfp_api/v201311/content_bundle_service_registry.rb +46 -0
  172. data/lib/dfp_api/v201311/content_metadata_key_hierarchy_service.rb +34 -0
  173. data/lib/dfp_api/v201311/content_metadata_key_hierarchy_service_registry.rb +46 -0
  174. data/lib/dfp_api/v201311/content_service.rb +38 -0
  175. data/lib/dfp_api/v201311/content_service_registry.rb +46 -0
  176. data/lib/dfp_api/v201311/creative_service.rb +54 -0
  177. data/lib/dfp_api/v201311/creative_service_registry.rb +46 -0
  178. data/lib/dfp_api/v201311/creative_set_service.rb +46 -0
  179. data/lib/dfp_api/v201311/creative_set_service_registry.rb +46 -0
  180. data/lib/dfp_api/v201311/creative_template_service.rb +38 -0
  181. data/lib/dfp_api/v201311/creative_template_service_registry.rb +46 -0
  182. data/lib/dfp_api/v201311/creative_wrapper_service.rb +58 -0
  183. data/lib/dfp_api/v201311/creative_wrapper_service_registry.rb +46 -0
  184. data/lib/dfp_api/v201311/custom_field_service.rb +78 -0
  185. data/lib/dfp_api/v201311/custom_field_service_registry.rb +46 -0
  186. data/lib/dfp_api/v201311/custom_targeting_service.rb +62 -0
  187. data/lib/dfp_api/v201311/custom_targeting_service_registry.rb +46 -0
  188. data/lib/dfp_api/v201311/exchange_rate_service.rb +50 -0
  189. data/lib/dfp_api/v201311/exchange_rate_service_registry.rb +46 -0
  190. data/lib/dfp_api/v201311/forecast_service.rb +38 -0
  191. data/lib/dfp_api/v201311/forecast_service_registry.rb +46 -0
  192. data/lib/dfp_api/v201311/inventory_service.rb +62 -0
  193. data/lib/dfp_api/v201311/inventory_service_registry.rb +46 -0
  194. data/lib/dfp_api/v201311/label_service.rb +58 -0
  195. data/lib/dfp_api/v201311/label_service_registry.rb +46 -0
  196. data/lib/dfp_api/v201311/line_item_creative_association_service.rb +62 -0
  197. data/lib/dfp_api/v201311/line_item_creative_association_service_registry.rb +46 -0
  198. data/lib/dfp_api/v201311/line_item_service.rb +58 -0
  199. data/lib/dfp_api/v201311/line_item_service_registry.rb +46 -0
  200. data/lib/dfp_api/v201311/line_item_template_service.rb +34 -0
  201. data/lib/dfp_api/v201311/line_item_template_service_registry.rb +46 -0
  202. data/lib/dfp_api/v201311/network_service.rb +46 -0
  203. data/lib/dfp_api/v201311/network_service_registry.rb +46 -0
  204. data/lib/dfp_api/v201311/order_service.rb +58 -0
  205. data/lib/dfp_api/v201311/order_service_registry.rb +46 -0
  206. data/lib/dfp_api/v201311/placement_service.rb +58 -0
  207. data/lib/dfp_api/v201311/placement_service_registry.rb +46 -0
  208. data/lib/dfp_api/v201311/product_service.rb +50 -0
  209. data/lib/dfp_api/v201311/product_service_registry.rb +46 -0
  210. data/lib/dfp_api/v201311/product_template_service.rb +58 -0
  211. data/lib/dfp_api/v201311/product_template_service_registry.rb +46 -0
  212. data/lib/dfp_api/v201311/proposal_line_item_service.rb +58 -0
  213. data/lib/dfp_api/v201311/proposal_line_item_service_registry.rb +46 -0
  214. data/lib/dfp_api/v201311/proposal_service.rb +58 -0
  215. data/lib/dfp_api/v201311/proposal_service_registry.rb +46 -0
  216. data/lib/dfp_api/v201311/publisher_query_language_service.rb +34 -0
  217. data/lib/dfp_api/v201311/publisher_query_language_service_registry.rb +46 -0
  218. data/lib/dfp_api/v201311/rate_card_customization_service.rb +58 -0
  219. data/lib/dfp_api/v201311/rate_card_customization_service_registry.rb +46 -0
  220. data/lib/dfp_api/v201311/rate_card_service.rb +58 -0
  221. data/lib/dfp_api/v201311/rate_card_service_registry.rb +46 -0
  222. data/lib/dfp_api/v201311/reconciliation_order_report_service.rb +42 -0
  223. data/lib/dfp_api/v201311/reconciliation_order_report_service_registry.rb +46 -0
  224. data/lib/dfp_api/v201311/reconciliation_report_row_service.rb +38 -0
  225. data/lib/dfp_api/v201311/reconciliation_report_row_service_registry.rb +46 -0
  226. data/lib/dfp_api/v201311/reconciliation_report_service.rb +46 -0
  227. data/lib/dfp_api/v201311/reconciliation_report_service_registry.rb +46 -0
  228. data/lib/dfp_api/v201311/report_service.rb +46 -0
  229. data/lib/dfp_api/v201311/report_service_registry.rb +46 -0
  230. data/lib/dfp_api/v201311/suggested_ad_unit_service.rb +42 -0
  231. data/lib/dfp_api/v201311/suggested_ad_unit_service_registry.rb +46 -0
  232. data/lib/dfp_api/v201311/team_service.rb +54 -0
  233. data/lib/dfp_api/v201311/team_service_registry.rb +46 -0
  234. data/lib/dfp_api/v201311/user_service.rb +66 -0
  235. data/lib/dfp_api/v201311/user_service_registry.rb +46 -0
  236. data/lib/dfp_api/v201311/user_team_association_service.rb +58 -0
  237. data/lib/dfp_api/v201311/user_team_association_service_registry.rb +46 -0
  238. data/lib/dfp_api/v201311/workflow_request_service.rb +38 -0
  239. data/lib/dfp_api/v201311/workflow_request_service_registry.rb +46 -0
  240. data/lib/dfp_api/version.rb +1 -1
  241. data/test/bugs/test_issue_00000016.rb +3 -3
  242. metadata +241 -10
  243. data/examples/v201302/common/oauth2_handling.rb +0 -128
  244. data/examples/v201306/common/oauth2_handling.rb +0 -128
  245. data/examples/v201308/common/oauth2_handling.rb +0 -128
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
+ #
8
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
+ # implied.
18
+ # See the License for the specific language governing permissions and
19
+ # limitations under the License.
20
+ #
21
+ # This code example gets all first party audience segments. To create audience
22
+ # segments, run create_audience_segments.rb.
23
+ #
24
+ # Tags: AudienceSegmentService.getAudienceSegmentsByStatement
25
+
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201311
29
+ PAGE_SIZE = 500
30
+
31
+ def get_first_party_audience_segments()
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 AudienceSegmentService.
40
+ audience_segment_service = dfp.service(:AudienceSegmentService, API_VERSION)
41
+
42
+ # Statement parts to help build a statement to select all first party audience
43
+ # segments.
44
+ statement_text = "WHERE type = 'FIRST_PARTY' ORDER BY id LIMIT %d OFFSET %d"
45
+
46
+ # Define initial values.
47
+ offset = 0
48
+ page = {}
49
+
50
+ begin
51
+ # Create statement for one page with current offset.
52
+ statement = {:query => statement_text % [PAGE_SIZE, offset]}
53
+
54
+ # Get audience segments by statement.
55
+ page =
56
+ audience_segment_service.get_audience_segments_by_statement(statement)
57
+
58
+ if page[:results]
59
+ # Increase query offset by page size.
60
+ offset += PAGE_SIZE
61
+
62
+ # Get the start index for printout.
63
+ start_index = page[:start_index]
64
+
65
+ # Print details about each audience segment in results page.
66
+ page[:results].each_with_index do |segment, index|
67
+ puts "%d) First party audience segment ID: %d, name: '%s', size %d" %
68
+ [index + start_index, segment[:id], segment[:name], segment[:size]]
69
+ end
70
+ end
71
+ end while offset < page[:total_result_set_size]
72
+
73
+ # Print a footer
74
+ if page.include?(:total_result_set_size)
75
+ puts 'Total number of first party audience segments: %d' %
76
+ page[:total_result_set_size]
77
+ end
78
+ end
79
+
80
+ if __FILE__ == $0
81
+ begin
82
+ get_first_party_audience_segments()
83
+
84
+ # HTTP errors.
85
+ rescue AdsCommon::Errors::HttpError => e
86
+ puts "HTTP Error: %s" % e
87
+
88
+ # API errors.
89
+ rescue DfpApi::Errors::ApiException => e
90
+ puts "Message: %s" % e.message
91
+ puts 'Errors:'
92
+ e.errors.each_with_index do |error, index|
93
+ puts "\tError [%d]:" % (index + 1)
94
+ error.each do |field, value|
95
+ puts "\t\t%s: %s" % [field, value]
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
+ #
8
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
+ # implied.
18
+ # See the License for the specific language governing permissions and
19
+ # limitations under the License.
20
+ #
21
+ # This code example populates specific rule based first party audience segment.
22
+ # To determine which audience segments exist, run get_audience_segments.rb.
23
+ #
24
+ # Tags: AudienceSegmentService.getAudienceSegmentsByStatement
25
+ # Tags: AudienceSegmentService.performAudienceSegmentAction
26
+
27
+ require 'dfp_api'
28
+
29
+ API_VERSION = :v201311
30
+ PAGE_SIZE = 500
31
+
32
+ def populate_first_party_audience_segments(audience_segment_id)
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 AudienceSegmentService.
41
+ audience_segment_service = dfp.service(:AudienceSegmentService, API_VERSION)
42
+
43
+ # Statement parts to help build a statement to select first party audience
44
+ # segment for an ID.
45
+ statement = {
46
+ :query => 'WHERE type = :type AND Id = :audience_segment_id LIMIT 1',
47
+ :values => [
48
+ {:key => 'type',
49
+ :value => {:value => 'FIRST_PARTY', :xsi_type => 'TextValue'}},
50
+ {:key => 'audience_segment_id',
51
+ :value => {:value => audience_segment_id, :xsi_type => 'TextValue'}},
52
+ ]
53
+ }
54
+
55
+ # Get audience segments by statement.
56
+ page = audience_segment_service.get_audience_segments_by_statement(statement)
57
+
58
+ if page[:results]
59
+ page[:results].each do |segment|
60
+ puts "First party audience segment ID: %d, name: '%s' will be populated" %
61
+ [segment[:id], segment[:name]]
62
+
63
+ # Perform action.
64
+ result = audience_segment_service.perform_audience_segment_action(
65
+ {:xsi_type => 'PopulateAudienceSegments'}, {:query => statement})
66
+
67
+ # Display results.
68
+ if result and result[:num_changes] > 0
69
+ puts 'Number of audience segments populated: %d.' % result[:num_changes]
70
+ else
71
+ puts 'No audience segments were populated.'
72
+ end
73
+ end
74
+ else
75
+ puts 'No first party audience segments found to populate.'
76
+ end
77
+ end
78
+
79
+ if __FILE__ == $0
80
+ begin
81
+ # Audience segment ID to populate.
82
+ audience_segment_id = 'INSERT_AUDIENCE_SEGMENT_ID_HERE'
83
+
84
+ populate_first_party_audience_segments(audience_segment_id)
85
+
86
+ # HTTP errors.
87
+ rescue AdsCommon::Errors::HttpError => e
88
+ puts "HTTP Error: %s" % e
89
+
90
+ # API errors.
91
+ rescue DfpApi::Errors::ApiException => e
92
+ puts "Message: %s" % e.message
93
+ puts 'Errors:'
94
+ e.errors.each_with_index do |error, index|
95
+ puts "\tError [%d]:" % (index + 1)
96
+ error.each do |field, value|
97
+ puts "\t\t%s: %s" % [field, value]
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
+ #
8
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
+ # implied.
18
+ # See the License for the specific language governing permissions and
19
+ # limitations under the License.
20
+ #
21
+ # This example updates rule based first party audience segments. To determine
22
+ # which first party audience segments exist, run
23
+ # get_all_first_party_audience_segments.rb.
24
+ #
25
+ # Tags: AudienceSegmentService.getAudienceSegmentsByStatement
26
+ # Tags: AudienceSegmentService.updateAudienceSegments
27
+
28
+ require 'dfp_api'
29
+
30
+ API_VERSION = :v201311
31
+
32
+ def update_audience_segments()
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
+ # Set the ID of the first party audience segment to update.
41
+ audience_segment_id = 'INSERT_AUDIENCE_SEGMENT_ID_HERE'
42
+
43
+ # Get the AudienceSegmentService.
44
+ audience_segment_service = dfp.service(:AudienceSegmentService, API_VERSION)
45
+
46
+ # Create statement text to select the audience segment to update.
47
+ statement = {
48
+ :query => 'WHERE id = :segment_id',
49
+ :values => [
50
+ {
51
+ :key => 'segment_id',
52
+ :value => {:value => audience_segment_id, :xsi_type => 'NumberValue'}
53
+ }
54
+ ]
55
+ }
56
+
57
+ # Get audience segments by statement.
58
+ page = audience_segment_service.get_audience_segments_by_statement(statement)
59
+
60
+ if page[:results]
61
+ audience_segments = page[:results]
62
+
63
+ # Create a local set of audience segments than need to be updated.
64
+ audience_segments.each do |audience_segment|
65
+ audience_segment[:membership_expiration_days] = 180
66
+ end
67
+
68
+ # Update the audience segments on the server.
69
+ return_audience_segments =
70
+ audience_segment_service.update_audience_segments(audience_segments)
71
+ return_audience_segments.each do |audience_segment|
72
+ puts 'Audience segment ID: %d was updated' % audience_segment[:id]
73
+ end
74
+ else
75
+ puts 'No audience segments found to update.'
76
+ end
77
+ end
78
+
79
+ if __FILE__ == $0
80
+ begin
81
+ update_audience_segments()
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,76 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
+ #
8
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
+ # implied.
18
+ # See the License for the specific language governing permissions and
19
+ # limitations under the License.
20
+ #
21
+ # This example runs incorrect query and demonstrates how to handle errors.
22
+ #
23
+ # Tags: UserService.updateUser
24
+
25
+ require 'dfp_api'
26
+
27
+ API_VERSION = :v201311
28
+
29
+ def produce_api_error()
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 UserService.
38
+ user_service = dfp.service(:UserService, API_VERSION)
39
+
40
+ # Omitting "id" field here to produce an error.
41
+ user = {:preferred_locale => 'en_UK', :name => 'foo_bar'}
42
+
43
+ # Execute request and get the response, this should raise an exception.
44
+ user = user_service.update_user(user)
45
+
46
+ # Output retrieved data.
47
+ puts "User ID: %d, name: %s, email: %s" %
48
+ [user[:id], user[:name], user[:email]]
49
+ end
50
+
51
+ if __FILE__ == $0
52
+ begin
53
+ # This function should produce an exception for demo.
54
+ produce_api_error()
55
+
56
+ # One of two kinds of exception might occur, general HTTP error like 403 or
57
+ # 404 and DFP API error defined in WSDL and described in documentation.
58
+
59
+ # Handling HTTP errors.
60
+ rescue AdsCommon::Errors::HttpError => e
61
+ puts "HTTP Error: %s" % e
62
+
63
+ # Handling API errors.
64
+ rescue DfpApi::Errors::ApiException => e
65
+ # Standard DFP API error includes message and array of errors occured.
66
+ puts "Message: %s" % e.message
67
+ puts 'Errors:'
68
+ # Print out each of the errors.
69
+ e.errors.each_with_index do |error, index|
70
+ puts "\tError [%d]:" % (index + 1)
71
+ error.each do |field, value|
72
+ puts "\t\t%s: %s" % [field, value]
73
+ end
74
+ end
75
+ end
76
+ end
@@ -18,18 +18,17 @@
18
18
  # See the License for the specific language governing permissions and
19
19
  # limitations under the License.
20
20
  #
21
- # This example shows how to use OAuth2.0 authorization method. It is designed to
22
- # be run from console and requires user input.
21
+ # This example shows how to use OAuth2.0 authorization method with JWT (Service
22
+ # Account).
23
23
  #
24
24
  # Tags: UserService.getUsersByStatement
25
25
 
26
26
  require 'dfp_api'
27
27
 
28
- API_VERSION = :v201208
28
+ API_VERSION = :v201311
29
29
  PAGE_SIZE = 500
30
- MAX_RETRIES = 3
31
30
 
32
- def oauth2_handling()
31
+ def oauth2_jwt_handling()
33
32
  # Get DfpApi instance and load configuration from ~/dfp_api.yml.
34
33
  dfp = DfpApi::Api.new
35
34
 
@@ -37,14 +36,19 @@ def oauth2_handling()
37
36
  # the configuration file or provide your own logger:
38
37
  # dfp.logger = Logger.new('dfp_xml.log')
39
38
 
40
- # Forcing authorization. A callback URL and other parameters could be
41
- # specified as parameter for OAuth method.
42
- token = dfp.authorize({:oauth_callback => 'oob'}) do |oauth_url|
43
- # For command-line we ask user to go to URL and type in code.
44
- verification_code = get_verification_code(oauth_url)
45
- # Return verification code from the block.
46
- (verification_code.empty?) ? nil : verification_code
47
- end
39
+ # Option 1: provide key filename as authentication -> oauth2_keyfile in the
40
+ # configuration file. No additional code is necessary.
41
+ # To provide a file name at runtime, use authorize:
42
+ # dfp.authorize({:oauth2_keyfile => key_filename})
43
+
44
+ # Option 2: retrieve key manually and create OpenSSL::PKCS12 object.
45
+ # key_filename = 'INSERT_FILENAME_HERE'
46
+ # key_secret = 'INSERT_SECRET_HERE'
47
+ # key_file_data = File.read(key_filename)
48
+ # key = OpenSSL::PKCS12.new(key_file_data, key_secret).key
49
+ # dfp.authorize({:oauth2_key => key})
50
+
51
+ # Now you can make API calls.
48
52
 
49
53
  # Get the UserService.
50
54
  user_service = dfp.service(:UserService, API_VERSION)
@@ -52,30 +56,13 @@ def oauth2_handling()
52
56
  # Define initial values.
53
57
  offset = 0
54
58
  page = Hash.new
55
- retry_count = 0
56
59
 
57
60
  begin
58
61
  # Create statement for one page with current offset.
59
62
  statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
60
63
 
61
- begin
62
- # Get users by statement.
63
- page = user_service.get_users_by_statement(statement)
64
-
65
- # The second way to do OAuth authentication is to make a request and catch
66
- # the OAuthVerificationRequired exception. Add the verification code to the
67
- # credentials once acquired.
68
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
69
- if retry_count < MAX_RETRIES
70
- verification_code = get_verification_code(e.oauth_url)
71
- dfp.credential_handler.set_credential(
72
- :oauth2_verification_code, verification_code)
73
- retry_count += 1
74
- retry
75
- else
76
- raise AdsCommon::Errors::AuthError, 'Failed to authenticate.'
77
- end
78
- end
64
+ # Get users by statement.
65
+ page = user_service.get_users_by_statement(statement)
79
66
 
80
67
  if page[:results]
81
68
  # Increase query offset by page size.
@@ -98,17 +85,9 @@ def oauth2_handling()
98
85
  end
99
86
  end
100
87
 
101
- # Misc util to get the verification code from the console.
102
- def get_verification_code(url)
103
- puts "Hit Auth error, please navigate to URL:\n\t%s" % url
104
- print 'Log in and type the verification code: '
105
- verification_code = gets.chomp
106
- return verification_code
107
- end
108
-
109
88
  if __FILE__ == $0
110
89
  begin
111
- oauth2_handling()
90
+ oauth2_jwt_handling()
112
91
 
113
92
  # HTTP errors.
114
93
  rescue AdsCommon::Errors::HttpError => e