google-dfp-api 0.6.1 → 0.6.2

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 (206) hide show
  1. data/ChangeLog +3 -0
  2. data/examples/v201302/activity_group_service/create_activity_groups.rb +94 -0
  3. data/examples/v201302/activity_group_service/get_active_activity_groups.rb +100 -0
  4. data/examples/v201302/activity_group_service/get_all_activity_groups.rb +95 -0
  5. data/examples/v201302/activity_group_service/update_activity_groups.rb +87 -0
  6. data/examples/v201302/activity_service/create_activities.rb +91 -0
  7. data/examples/v201302/activity_service/get_active_activities.rb +107 -0
  8. data/examples/v201302/activity_service/get_all_activities.rb +144 -0
  9. data/examples/v201302/activity_service/update_activities.rb +85 -0
  10. data/examples/v201302/audience_segment_service/get_all_audience_segments.rb +93 -0
  11. data/examples/v201302/common/error_handling.rb +76 -0
  12. data/examples/v201302/common/oauth2_handling.rb +128 -0
  13. data/examples/v201302/common/oauth2_jwt_handling.rb +107 -0
  14. data/examples/v201302/company_service/create_companies.rb +81 -0
  15. data/examples/v201302/company_service/get_all_companies.rb +92 -0
  16. data/examples/v201302/company_service/get_companies_by_statement.rb +88 -0
  17. data/examples/v201302/company_service/get_company.rb +72 -0
  18. data/examples/v201302/company_service/update_companies.rb +102 -0
  19. data/examples/v201302/contact_service/create_contacts.rb +95 -0
  20. data/examples/v201302/contact_service/get_all_contacts.rb +92 -0
  21. data/examples/v201302/contact_service/get_uninvited_contacts.rb +102 -0
  22. data/examples/v201302/contact_service/update_contacts.rb +84 -0
  23. data/examples/v201302/content_service/get_all_content.rb +94 -0
  24. data/examples/v201302/content_service/get_content_by_category.rb +143 -0
  25. data/examples/v201302/creative_service/copy_image_creatives.rb +115 -0
  26. data/examples/v201302/creative_service/create_creative_from_template.rb +139 -0
  27. data/examples/v201302/creative_service/create_creatives.rb +112 -0
  28. data/examples/v201302/creative_service/create_custom_creative.rb +104 -0
  29. data/examples/v201302/creative_service/get_all_creatives.rb +93 -0
  30. data/examples/v201302/creative_service/get_creative.rb +72 -0
  31. data/examples/v201302/creative_service/get_creatives_by_statement.rb +87 -0
  32. data/examples/v201302/creative_service/update_creatives.rb +96 -0
  33. data/examples/v201302/creative_set_service/associate_creative_set_to_line_item.rb +77 -0
  34. data/examples/v201302/creative_set_service/create_creative_set.rb +83 -0
  35. data/examples/v201302/creative_set_service/get_all_creative_sets.rb +94 -0
  36. data/examples/v201302/creative_set_service/get_creative_sets_by_statement.rb +90 -0
  37. data/examples/v201302/creative_set_service/update_creative_sets.rb +85 -0
  38. data/examples/v201302/creative_template_service/get_all_creative_templates.rb +94 -0
  39. data/examples/v201302/creative_template_service/get_creative_template.rb +74 -0
  40. data/examples/v201302/creative_template_service/get_creative_templates_by_statement.rb +80 -0
  41. data/examples/v201302/creative_wrapper_service/create_creative_wrappers.rb +89 -0
  42. data/examples/v201302/creative_wrapper_service/deactivate_creative_wrapper.rb +102 -0
  43. data/examples/v201302/creative_wrapper_service/get_all_creative_wrappers.rb +94 -0
  44. data/examples/v201302/creative_wrapper_service/get_creative_wrappers_by_statement.rb +88 -0
  45. data/examples/v201302/creative_wrapper_service/update_creative_wrappers.rb +86 -0
  46. data/examples/v201302/custom_field_service/create_custom_field_options.rb +87 -0
  47. data/examples/v201302/custom_field_service/create_custom_fields.rb +86 -0
  48. data/examples/v201302/custom_field_service/deactivate_all_line_item_custom_fields.rb +112 -0
  49. data/examples/v201302/custom_field_service/get_all_custom_fields.rb +102 -0
  50. data/examples/v201302/custom_field_service/get_all_line_item_custom_fields.rb +86 -0
  51. data/examples/v201302/custom_field_service/set_line_item_custom_field_value.rb +135 -0
  52. data/examples/v201302/custom_field_service/update_custom_fields.rb +84 -0
  53. data/examples/v201302/custom_targeting_service/create_custom_targeting_keys_and_values.rb +140 -0
  54. data/examples/v201302/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
  55. data/examples/v201302/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
  56. data/examples/v201302/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
  57. data/examples/v201302/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
  58. data/examples/v201302/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
  59. data/examples/v201302/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
  60. data/examples/v201302/custom_targeting_service/update_custom_targeting_values.rb +106 -0
  61. data/examples/v201302/forecast_service/get_forecast.rb +107 -0
  62. data/examples/v201302/forecast_service/get_forecast_by_id.rb +80 -0
  63. data/examples/v201302/inventory_service/create_ad_units.rb +101 -0
  64. data/examples/v201302/inventory_service/create_mobile_ad_unit.rb +101 -0
  65. data/examples/v201302/inventory_service/create_video_ad_unit.rb +108 -0
  66. data/examples/v201302/inventory_service/deactivate_ad_units.rb +119 -0
  67. data/examples/v201302/inventory_service/get_ad_unit.rb +72 -0
  68. data/examples/v201302/inventory_service/get_ad_unit_sizes.rb +85 -0
  69. data/examples/v201302/inventory_service/get_ad_units_by_statement.rb +96 -0
  70. data/examples/v201302/inventory_service/get_all_ad_units.rb +93 -0
  71. data/examples/v201302/inventory_service/update_ad_units.rb +96 -0
  72. data/examples/v201302/label_service/create_labels.rb +83 -0
  73. data/examples/v201302/label_service/deactivate_labels.rb +118 -0
  74. data/examples/v201302/label_service/get_all_labels.rb +95 -0
  75. data/examples/v201302/label_service/get_label.rb +76 -0
  76. data/examples/v201302/label_service/get_labels_by_statement.rb +81 -0
  77. data/examples/v201302/label_service/update_labels.rb +102 -0
  78. data/examples/v201302/line_item_creative_association_service/create_licas.rb +94 -0
  79. data/examples/v201302/line_item_creative_association_service/deactivate_licas.rb +127 -0
  80. data/examples/v201302/line_item_creative_association_service/get_all_licas.rb +98 -0
  81. data/examples/v201302/line_item_creative_association_service/get_lica.rb +77 -0
  82. data/examples/v201302/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
  83. data/examples/v201302/line_item_creative_association_service/update_licas.rb +91 -0
  84. data/examples/v201302/line_item_service/activate_line_items.rb +131 -0
  85. data/examples/v201302/line_item_service/create_line_items.rb +177 -0
  86. data/examples/v201302/line_item_service/create_mobile_line_item.rb +135 -0
  87. data/examples/v201302/line_item_service/create_video_line_item.rb +158 -0
  88. data/examples/v201302/line_item_service/get_all_line_items.rb +94 -0
  89. data/examples/v201302/line_item_service/get_line_item.rb +74 -0
  90. data/examples/v201302/line_item_service/get_line_items_by_statement.rb +93 -0
  91. data/examples/v201302/line_item_service/get_recently_updated_line_items.rb +98 -0
  92. data/examples/v201302/line_item_service/target_custom_criteria.rb +129 -0
  93. data/examples/v201302/line_item_service/update_line_items.rb +109 -0
  94. data/examples/v201302/network_service/get_all_networks.rb +74 -0
  95. data/examples/v201302/network_service/get_current_network.rb +66 -0
  96. data/examples/v201302/network_service/make_test_network.rb +79 -0
  97. data/examples/v201302/order_service/approve_orders.rb +122 -0
  98. data/examples/v201302/order_service/create_orders.rb +92 -0
  99. data/examples/v201302/order_service/get_all_orders.rb +93 -0
  100. data/examples/v201302/order_service/get_order.rb +74 -0
  101. data/examples/v201302/order_service/get_orders_by_statement.rb +90 -0
  102. data/examples/v201302/order_service/update_orders.rb +97 -0
  103. data/examples/v201302/placement_service/create_placements.rb +131 -0
  104. data/examples/v201302/placement_service/deactivate_placements.rb +118 -0
  105. data/examples/v201302/placement_service/get_all_placements.rb +93 -0
  106. data/examples/v201302/placement_service/get_placement.rb +74 -0
  107. data/examples/v201302/placement_service/get_placements_by_statement.rb +86 -0
  108. data/examples/v201302/placement_service/update_placements.rb +97 -0
  109. data/examples/v201302/publisher_query_language_service/get_all_cities.rb +104 -0
  110. data/examples/v201302/report_service/display_report.rb +81 -0
  111. data/examples/v201302/report_service/download_report.rb +81 -0
  112. data/examples/v201302/report_service/run_delivery_report.rb +103 -0
  113. data/examples/v201302/report_service/run_inventory_report.rb +96 -0
  114. data/examples/v201302/report_service/run_merged_delivery_report.rb +94 -0
  115. data/examples/v201302/report_service/run_reach_report.rb +87 -0
  116. data/examples/v201302/report_service/run_report_with_custom_fields.rb +135 -0
  117. data/examples/v201302/report_service/run_sales_report.rb +92 -0
  118. data/examples/v201302/suggested_ad_unit_service/approve_all_suggested_ad_units.rb +109 -0
  119. data/examples/v201302/suggested_ad_unit_service/get_all_suggested_ad_units.rb +96 -0
  120. data/examples/v201302/suggested_ad_unit_service/get_suggested_ad_unit.rb +75 -0
  121. data/examples/v201302/suggested_ad_unit_service/get_suggested_ad_units_by_statement.rb +92 -0
  122. data/examples/v201302/team_service/create_teams.rb +83 -0
  123. data/examples/v201302/team_service/get_all_teams.rb +92 -0
  124. data/examples/v201302/team_service/get_team.rb +74 -0
  125. data/examples/v201302/team_service/get_teams_by_statement.rb +78 -0
  126. data/examples/v201302/team_service/update_teams.rb +97 -0
  127. data/examples/v201302/third_party_slot_service/archive_third_party_slots.rb +125 -0
  128. data/examples/v201302/third_party_slot_service/create_third_party_slot.rb +91 -0
  129. data/examples/v201302/third_party_slot_service/get_all_third_party_slots.rb +93 -0
  130. data/examples/v201302/third_party_slot_service/get_third_party_slot_by_statement.rb +86 -0
  131. data/examples/v201302/third_party_slot_service/update_third_party_slots.rb +95 -0
  132. data/examples/v201302/user_service/create_users.rb +89 -0
  133. data/examples/v201302/user_service/deactivate_users.rb +97 -0
  134. data/examples/v201302/user_service/get_all_roles.rb +73 -0
  135. data/examples/v201302/user_service/get_all_users.rb +93 -0
  136. data/examples/v201302/user_service/get_current_user.rb +66 -0
  137. data/examples/v201302/user_service/get_user.rb +73 -0
  138. data/examples/v201302/user_service/get_users_by_statement.rb +79 -0
  139. data/examples/v201302/user_service/update_users.rb +89 -0
  140. data/examples/v201302/user_team_association_service/create_user_team_associations.rb +86 -0
  141. data/examples/v201302/user_team_association_service/delete_user_team_associations.rb +111 -0
  142. data/examples/v201302/user_team_association_service/get_all_user_team_associations.rb +94 -0
  143. data/examples/v201302/user_team_association_service/get_user_team_association.rb +76 -0
  144. data/examples/v201302/user_team_association_service/get_user_team_associations_by_statement.rb +94 -0
  145. data/examples/v201302/user_team_association_service/update_user_team_associations.rb +102 -0
  146. data/lib/dfp_api/api_config.rb +17 -4
  147. data/lib/dfp_api/v201302/activity_group_service.rb +54 -0
  148. data/lib/dfp_api/v201302/activity_group_service_registry.rb +46 -0
  149. data/lib/dfp_api/v201302/activity_service.rb +54 -0
  150. data/lib/dfp_api/v201302/activity_service_registry.rb +46 -0
  151. data/lib/dfp_api/v201302/ad_rule_service.rb +58 -0
  152. data/lib/dfp_api/v201302/ad_rule_service_registry.rb +46 -0
  153. data/lib/dfp_api/v201302/audience_segment_service.rb +34 -0
  154. data/lib/dfp_api/v201302/audience_segment_service_registry.rb +46 -0
  155. data/lib/dfp_api/v201302/company_service.rb +54 -0
  156. data/lib/dfp_api/v201302/company_service_registry.rb +46 -0
  157. data/lib/dfp_api/v201302/contact_service.rb +54 -0
  158. data/lib/dfp_api/v201302/contact_service_registry.rb +46 -0
  159. data/lib/dfp_api/v201302/content_bundle_service.rb +58 -0
  160. data/lib/dfp_api/v201302/content_bundle_service_registry.rb +46 -0
  161. data/lib/dfp_api/v201302/content_service.rb +38 -0
  162. data/lib/dfp_api/v201302/content_service_registry.rb +46 -0
  163. data/lib/dfp_api/v201302/creative_service.rb +54 -0
  164. data/lib/dfp_api/v201302/creative_service_registry.rb +46 -0
  165. data/lib/dfp_api/v201302/creative_set_service.rb +46 -0
  166. data/lib/dfp_api/v201302/creative_set_service_registry.rb +46 -0
  167. data/lib/dfp_api/v201302/creative_template_service.rb +38 -0
  168. data/lib/dfp_api/v201302/creative_template_service_registry.rb +46 -0
  169. data/lib/dfp_api/v201302/creative_wrapper_service.rb +58 -0
  170. data/lib/dfp_api/v201302/creative_wrapper_service_registry.rb +46 -0
  171. data/lib/dfp_api/v201302/custom_field_service.rb +78 -0
  172. data/lib/dfp_api/v201302/custom_field_service_registry.rb +46 -0
  173. data/lib/dfp_api/v201302/custom_targeting_service.rb +62 -0
  174. data/lib/dfp_api/v201302/custom_targeting_service_registry.rb +46 -0
  175. data/lib/dfp_api/v201302/forecast_service.rb +38 -0
  176. data/lib/dfp_api/v201302/forecast_service_registry.rb +46 -0
  177. data/lib/dfp_api/v201302/inventory_service.rb +62 -0
  178. data/lib/dfp_api/v201302/inventory_service_registry.rb +46 -0
  179. data/lib/dfp_api/v201302/label_service.rb +58 -0
  180. data/lib/dfp_api/v201302/label_service_registry.rb +46 -0
  181. data/lib/dfp_api/v201302/line_item_creative_association_service.rb +62 -0
  182. data/lib/dfp_api/v201302/line_item_creative_association_service_registry.rb +46 -0
  183. data/lib/dfp_api/v201302/line_item_service.rb +58 -0
  184. data/lib/dfp_api/v201302/line_item_service_registry.rb +46 -0
  185. data/lib/dfp_api/v201302/network_service.rb +46 -0
  186. data/lib/dfp_api/v201302/network_service_registry.rb +46 -0
  187. data/lib/dfp_api/v201302/order_service.rb +58 -0
  188. data/lib/dfp_api/v201302/order_service_registry.rb +46 -0
  189. data/lib/dfp_api/v201302/placement_service.rb +58 -0
  190. data/lib/dfp_api/v201302/placement_service_registry.rb +46 -0
  191. data/lib/dfp_api/v201302/publisher_query_language_service.rb +34 -0
  192. data/lib/dfp_api/v201302/publisher_query_language_service_registry.rb +46 -0
  193. data/lib/dfp_api/v201302/report_service.rb +46 -0
  194. data/lib/dfp_api/v201302/report_service_registry.rb +46 -0
  195. data/lib/dfp_api/v201302/suggested_ad_unit_service.rb +42 -0
  196. data/lib/dfp_api/v201302/suggested_ad_unit_service_registry.rb +46 -0
  197. data/lib/dfp_api/v201302/team_service.rb +54 -0
  198. data/lib/dfp_api/v201302/team_service_registry.rb +46 -0
  199. data/lib/dfp_api/v201302/third_party_slot_service.rb +46 -0
  200. data/lib/dfp_api/v201302/third_party_slot_service_registry.rb +46 -0
  201. data/lib/dfp_api/v201302/user_service.rb +66 -0
  202. data/lib/dfp_api/v201302/user_service_registry.rb +46 -0
  203. data/lib/dfp_api/v201302/user_team_association_service.rb +58 -0
  204. data/lib/dfp_api/v201302/user_team_association_service_registry.rb +46 -0
  205. data/lib/dfp_api/version.rb +1 -1
  206. metadata +988 -786
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2012, 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 gets all custom fields. To create custom fields, run
22
+ # create_custom_fields.rb.
23
+ #
24
+ # Tags: CustomFieldService.getCustomFieldsByStatement
25
+
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201302
29
+ PAGE_SIZE = 500
30
+
31
+ def get_all_custom_fields()
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 CustomFieldService.
40
+ custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
41
+
42
+ # Define initial values.
43
+ offset = 0
44
+ page = {}
45
+
46
+ begin
47
+ # Create a statement to get one page with current offset.
48
+ statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
49
+
50
+ # Get custom fields by statement.
51
+ page = custom_field_service.get_custom_fields_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 custom field in results.
61
+ page[:results].each_with_index do |custom_field, index|
62
+ if custom_field[:custom_field_type].eql?('DropDownCustomField')
63
+ drop_down_custom_field_strings = custom_field.include?(:options) ?
64
+ custom_field[:options].map {|option| option[:display_name]} : []
65
+ print ("%d) Drop-down custom field with ID %d, name '%s', and " +
66
+ "options [%s] was found.") %
67
+ [index + start_index, custom_field[:id], custom_field[:name],
68
+ drop_down_custom_field_strings.join(', ')]
69
+ else
70
+ puts "%d) Custom field ID: %d and name: '%s' was found" %
71
+ [index + start_index, custom_field[:id], custom_field[:name]]
72
+ end
73
+ end
74
+ end
75
+ end while offset < page[:total_result_set_size]
76
+
77
+ # Print a footer.
78
+ if page.include?(:total_result_set_size)
79
+ puts "Total number of custom fields: %d" % page[:total_result_set_size]
80
+ end
81
+ end
82
+
83
+ if __FILE__ == $0
84
+ begin
85
+ get_all_custom_fields()
86
+
87
+ # HTTP errors.
88
+ rescue AdsCommon::Errors::HttpError => e
89
+ puts "HTTP Error: %s" % e
90
+
91
+ # API errors.
92
+ rescue DfpApi::Errors::ApiException => e
93
+ puts "Message: %s" % e.message
94
+ puts 'Errors:'
95
+ e.errors.each_with_index do |error, index|
96
+ puts "\tError [%d]:" % (index + 1)
97
+ error.each do |field, value|
98
+ puts "\t\t%s: %s" % [field, value]
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2012, 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 gets all custom fields that apply to line items. To create custom
22
+ # fields, run create_custom_fields.rb.
23
+ #
24
+ # Tags: CustomFieldService.getCustomFieldsByStatement
25
+
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201302
29
+
30
+ def get_all_line_item_custom_fields()
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 CustomFieldService.
39
+ custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
40
+
41
+ # Create statement to select only custom fields that apply to line items.
42
+ statement = {
43
+ :query => 'WHERE entityType = :entity_type',
44
+ :values => [
45
+ {:key => 'entity_type',
46
+ :value => {:value => 'LINE_ITEM', :xsi_type => 'TextValue'}}
47
+ ]
48
+ }
49
+
50
+ # Get custom fields by statement.
51
+ page = custom_field_service.get_custom_fields_by_statement(statement)
52
+
53
+ if page[:results]
54
+ # Print details about each custom field in results.
55
+ page[:results].each_with_index do |custom_field, index|
56
+ puts "%d) Custom field with ID %d and name: '%s' was found." %
57
+ [index, custom_field[:id], custom_field[:name]]
58
+ end
59
+ end
60
+
61
+ # Print a footer.
62
+ if page.include?(:total_result_set_size)
63
+ puts "Total number of custom fields: %d" % page[:total_result_set_size]
64
+ end
65
+ end
66
+
67
+ if __FILE__ == $0
68
+ begin
69
+ get_all_line_item_custom_fields()
70
+
71
+ # HTTP errors.
72
+ rescue AdsCommon::Errors::HttpError => e
73
+ puts "HTTP Error: %s" % e
74
+
75
+ # API errors.
76
+ rescue DfpApi::Errors::ApiException => e
77
+ puts "Message: %s" % e.message
78
+ puts 'Errors:'
79
+ e.errors.each_with_index do |error, index|
80
+ puts "\tError [%d]:" % (index + 1)
81
+ error.each do |field, value|
82
+ puts "\t\t%s: %s" % [field, value]
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2012, 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 sets custom field values on a line item. To determine which
22
+ # custom fields exist, run get_all_custom_fields.rb. To determine which line
23
+ # items exist, run get_all_line_items.rb. To create custom field options, run
24
+ # create_custom_field_options.rb.
25
+ #
26
+ # Tags: CustomFieldService.getCustomField, LineItemService.getLineItem
27
+
28
+ require 'dfp_api'
29
+
30
+ API_VERSION = :v201302
31
+
32
+ def set_line_item_custom_field_value()
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 CustomFieldService.
41
+ custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
42
+
43
+ # Get the LineItemService.
44
+ line_item_service = dfp.service(:LineItemService, API_VERSION)
45
+
46
+ # Set the ID of the custom fields, custom field option, and line item.
47
+ custom_field_id = 'INSERT_CUSTOM_FIELD_ID_HERE'.to_i
48
+ drop_down_custom_field_id = 'INSERT_DROP_DOWN_CUSTOM_FIELD_ID_HERE'.to_i
49
+ custom_field_option_id = 'INSERT_CUSTOM_FIELD_OPTION_ID_HERE'.to_i
50
+ line_item_id = 'INSERT_LINE_ITEM_ID_HERE'.to_i
51
+
52
+ # Get custom field.
53
+ custom_field = custom_field_service.get_custom_field(custom_field_id)
54
+
55
+ # Get drop-down custom field.
56
+ drop_down_custom_field = custom_field_service.get_custom_field(
57
+ drop_down_custom_field_id)
58
+
59
+ # Get line item.
60
+ line_item = line_item_service.get_line_item(line_item_id)
61
+
62
+ if custom_field and drop_down_custom_field and line_item
63
+ # Create custom field values.
64
+ custom_field_value = {
65
+ :custom_field_id => custom_field[:id],
66
+ :type => 'CustomFieldValue',
67
+ :value => {:type => 'TextValue', :value => 'Custom field value'}
68
+ }
69
+
70
+ drop_down_custom_field_value = {
71
+ :custom_field_id => drop_down_custom_field[:id],
72
+ :type => 'DropDownCustomFieldValue',
73
+ :custom_field_option_id => custom_field_option_id
74
+ }
75
+
76
+ custom_field_values = [custom_field_value, drop_down_custom_field_value]
77
+ old_custom_field_values = line_item.include?(:custom_field_values) ?
78
+ line_item[:custom_field_values] : []
79
+
80
+ # Only add existing custom field values for different custom fields than the
81
+ # ones you are setting.
82
+ old_custom_field_values.each do |old_custom_field_value|
83
+ unless custom_field_values.map {|value| value[:id]}.include?(
84
+ old_custom_field_value[:custom_field_id])
85
+ custom_field_values << old_custom_field_value
86
+ end
87
+ end
88
+
89
+ line_item[:custom_field_values] = custom_field_values
90
+
91
+ # Update the line item on the server.
92
+ return_line_items = line_item_service.update_line_items([line_item])
93
+
94
+ return_line_items.each do |return_line_item|
95
+ custom_field_value_strings = []
96
+ if return_line_item.include?(:custom_field_values)
97
+ return_line_item[:custom_field_values].each do |value|
98
+ if value[:base_custom_field_value_type].eql?('CustomFieldValue')
99
+ custom_field_value_strings << "{ID: %d, value: '%s'}" %
100
+ [value[:custom_field_id], value[:value][:value]]
101
+ end
102
+ if value[:base_custom_field_value_type].eql?(
103
+ 'DropDownCustomFieldValue')
104
+ custom_field_value_strings <<
105
+ "{ID: %d, custom field option ID: %d}" %
106
+ [value[:custom_field_id], value[:custom_field_option_id]]
107
+ end
108
+ end
109
+ end
110
+ puts "Line item ID %d set with custom field values: [%s]" %
111
+ [return_line_item[:id], custom_field_value_strings.join(', ')]
112
+ end
113
+ end
114
+ end
115
+
116
+ if __FILE__ == $0
117
+ begin
118
+ set_line_item_custom_field_value()
119
+
120
+ # HTTP errors.
121
+ rescue AdsCommon::Errors::HttpError => e
122
+ puts "HTTP Error: %s" % e
123
+
124
+ # API errors.
125
+ rescue DfpApi::Errors::ApiException => e
126
+ puts "Message: %s" % e.message
127
+ puts 'Errors:'
128
+ e.errors.each_with_index do |error, index|
129
+ puts "\tError [%d]:" % (index + 1)
130
+ error.each do |field, value|
131
+ puts "\t\t%s: %s" % [field, value]
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2012, 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 custom field descriptions. To determine which custom
22
+ # fields exist, run get_all_custom_fields.rb.
23
+ #
24
+ # Tags: CustomFieldService.updateCustomFields
25
+
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201302
29
+
30
+ def update_custom_fields()
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 CustomFieldService.
39
+ custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
40
+
41
+ # Set the ID of the custom field to update.
42
+ custom_field_id = 'INSERT_CUSTOM_FIELD_ID_HERE'.to_i
43
+
44
+ # Get custom field.
45
+ custom_field = custom_field_service.get_custom_field(custom_field_id)
46
+
47
+ if custom_field
48
+ # Update local custom field object.
49
+ custom_field[:description] = '' if custom_field[:description].nil?
50
+ custom_field[:description] +=' Updated.'
51
+
52
+ # Update the custom field on the server.
53
+ return_custom_fields =
54
+ custom_field_service.update_custom_fields([custom_field])
55
+
56
+ return_custom_fields.each do |custom_field|
57
+ puts "Custom field ID: %d, name: '%s' and description '%s' was updated." %
58
+ [custom_field[:id], custom_field[:name], custom_field[:description]]
59
+ end
60
+ else
61
+ puts 'No custom fields were found to update.'
62
+ end
63
+ end
64
+
65
+ if __FILE__ == $0
66
+ begin
67
+ update_custom_fields()
68
+
69
+ # HTTP errors.
70
+ rescue AdsCommon::Errors::HttpError => e
71
+ puts "HTTP Error: %s" % e
72
+
73
+ # API errors.
74
+ rescue DfpApi::Errors::ApiException => e
75
+ puts "Message: %s" % e.message
76
+ puts 'Errors:'
77
+ e.errors.each_with_index do |error, index|
78
+ puts "\tError [%d]:" % (index + 1)
79
+ error.each do |field, value|
80
+ puts "\t\t%s: %s" % [field, value]
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,140 @@
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 creates new custom targeting keys and values. To determine which
22
+ # custom targeting keys and values exist, run
23
+ # get_all_custom_targeting_keys_and_values.rb. To target these custom targeting
24
+ # keys and values, run target_custom_criteria.rb.
25
+ #
26
+ # Tags: CustomTargetingService.createCustomTargetingKeys
27
+ # Tags: CustomTargetingService.createCustomTargetingValues
28
+
29
+ require 'dfp_api'
30
+
31
+ API_VERSION = :v201302
32
+
33
+ def create_custom_targeting_keys_and_values()
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
+ # Create predefined key.
45
+ gender_key = {:display_name => 'gender', :name => 'g', :type => 'PREDEFINED'}
46
+
47
+ # Create free-form key.
48
+ car_model_key = {:display_name => 'car model', :name => 'c',
49
+ :type => 'FREEFORM'}
50
+
51
+ # Create predefined key that may be used for content targeting.
52
+ genre_key = {:display_name => 'genre', :name => 'genre',
53
+ :type => 'PREDEFINED'}
54
+
55
+ # Create the custom targeting keys on the server.
56
+ return_keys = custom_targeting_service.create_custom_targeting_keys(
57
+ [gender_key, car_model_key, genre_key])
58
+
59
+ if return_keys
60
+ return_keys.each do |key|
61
+ puts ("Custom targeting key ID: %d, name: %s and display name: %s" +
62
+ " was created.") % [key[:id], key[:name], key[:display_name]]
63
+ end
64
+ else
65
+ raise 'No keys were created.'
66
+ end
67
+
68
+ # Create custom targeting value for the predefined gender key.
69
+ gender_male_value = {:custom_targeting_key_id => return_keys[0][:id],
70
+ :display_name => 'male', :match_type => 'EXACT'}
71
+ # Name is set to 1 so that the actual name can be hidden from website users.
72
+ gender_male_value[:name] = '1'
73
+
74
+ # Create another custom targeting value for the same key.
75
+ gender_female_value = {:custom_targeting_key_id => return_keys[0][:id],
76
+ :display_name => 'female', :name => '2', :match_type => 'EXACT'}
77
+
78
+ # Create custom targeting value for the free-form age key. These are values
79
+ # that would be suggested in the UI or can be used when targeting
80
+ # with a free-form custom criterion.
81
+ car_model_honda_civic_value = {
82
+ :custom_targeting_key_id => return_keys[1][:id],
83
+ :display_name => 'honda civic',
84
+ :name => 'honda civic',
85
+ # Setting match type to exact will match exactly "honda civic".
86
+ :match_type => 'EXACT'
87
+ }
88
+
89
+ # Create custom targeting values for the predefined genre key.
90
+ genre_comedy_value = {
91
+ :custom_targeting_key_id => return_keys[2][:id],
92
+ :display_name => 'comedy',
93
+ :name => 'comedy',
94
+ :match_type => 'EXACT'
95
+ }
96
+
97
+ genre_drama_value = {
98
+ :custom_targeting_key_id => return_keys[2][:id],
99
+ :display_name => 'drama',
100
+ :name => 'drama',
101
+ :match_type => 'EXACT'
102
+ }
103
+
104
+ # Create the custom targeting values on the server.
105
+ return_values = custom_targeting_service.create_custom_targeting_values(
106
+ [gender_male_value, gender_female_value, car_model_honda_civic_value,
107
+ genre_comedy_value, genre_drama_value])
108
+
109
+ if return_values
110
+ return_values.each do |value|
111
+ puts ("A custom targeting value ID: %d, name: %s and display name: %s" +
112
+ " was created for key ID: %d.") % [value[:id], value[:name],
113
+ value[:display_name], value[:custom_targeting_key_id]]
114
+ end
115
+ else
116
+ raise 'No values were created.'
117
+ end
118
+
119
+ end
120
+
121
+ if __FILE__ == $0
122
+ begin
123
+ create_custom_targeting_keys_and_values()
124
+
125
+ # HTTP errors.
126
+ rescue AdsCommon::Errors::HttpError => e
127
+ puts "HTTP Error: %s" % e
128
+
129
+ # API errors.
130
+ rescue DfpApi::Errors::ApiException => e
131
+ puts "Message: %s" % e.message
132
+ puts 'Errors:'
133
+ e.errors.each_with_index do |error, index|
134
+ puts "\tError [%d]:" % (index + 1)
135
+ error.each do |field, value|
136
+ puts "\t\t%s: %s" % [field, value]
137
+ end
138
+ end
139
+ end
140
+ end