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.
- checksums.yaml +8 -8
- data/ChangeLog +4 -0
- data/README +2 -2
- data/examples/v201208/common/setup_oauth2.rb +89 -0
- data/examples/v201211/common/setup_oauth2.rb +89 -0
- data/examples/v201302/common/setup_oauth2.rb +89 -0
- data/examples/v201306/common/setup_oauth2.rb +89 -0
- data/examples/v201308/common/setup_oauth2.rb +89 -0
- data/examples/v201311/activity_group_service/create_activity_groups.rb +94 -0
- data/examples/v201311/activity_group_service/get_active_activity_groups.rb +100 -0
- data/examples/v201311/activity_group_service/get_all_activity_groups.rb +95 -0
- data/examples/v201311/activity_group_service/update_activity_groups.rb +87 -0
- data/examples/v201311/activity_service/create_activities.rb +91 -0
- data/examples/v201311/activity_service/get_active_activities.rb +103 -0
- data/examples/v201311/activity_service/get_all_activities.rb +96 -0
- data/examples/v201311/activity_service/update_activities.rb +85 -0
- data/examples/v201311/audience_segment_service/create_audience_segments.rb +118 -0
- data/examples/v201311/audience_segment_service/get_all_audience_segments.rb +94 -0
- data/examples/v201311/audience_segment_service/get_first_party_audience_segments.rb +99 -0
- data/examples/v201311/audience_segment_service/populate_first_party_audience_segments.rb +101 -0
- data/examples/v201311/audience_segment_service/update_audience_segments.rb +98 -0
- data/examples/v201311/common/error_handling.rb +76 -0
- data/examples/{v201208/common/oauth2_handling.rb → v201311/common/oauth2_jwt_handling.rb} +20 -41
- data/examples/v201311/common/setup_oauth2.rb +89 -0
- data/examples/v201311/company_service/create_companies.rb +81 -0
- data/examples/v201311/company_service/get_all_companies.rb +92 -0
- data/examples/v201311/company_service/get_companies_by_statement.rb +88 -0
- data/examples/v201311/company_service/get_company.rb +72 -0
- data/examples/v201311/company_service/update_companies.rb +102 -0
- data/examples/v201311/contact_service/create_contacts.rb +95 -0
- data/examples/v201311/contact_service/get_all_contacts.rb +92 -0
- data/examples/v201311/contact_service/get_uninvited_contacts.rb +102 -0
- data/examples/v201311/contact_service/update_contacts.rb +84 -0
- data/examples/v201311/content_service/get_all_content.rb +94 -0
- data/examples/v201311/content_service/get_content_by_category.rb +143 -0
- data/examples/v201311/creative_service/copy_image_creatives.rb +115 -0
- data/examples/v201311/creative_service/create_creative_from_template.rb +139 -0
- data/examples/v201311/creative_service/create_creatives.rb +112 -0
- data/examples/v201311/creative_service/create_custom_creative.rb +104 -0
- data/examples/v201311/creative_service/get_all_creatives.rb +93 -0
- data/examples/v201311/creative_service/get_creative.rb +72 -0
- data/examples/v201311/creative_service/get_creatives_by_statement.rb +87 -0
- data/examples/v201311/creative_service/update_creatives.rb +96 -0
- data/examples/v201311/creative_set_service/associate_creative_set_to_line_item.rb +77 -0
- data/examples/v201311/creative_set_service/create_creative_set.rb +83 -0
- data/examples/v201311/creative_set_service/get_all_creative_sets.rb +94 -0
- data/examples/v201311/creative_set_service/get_creative_sets_by_statement.rb +90 -0
- data/examples/v201311/creative_set_service/update_creative_sets.rb +85 -0
- data/examples/v201311/creative_template_service/get_all_creative_templates.rb +94 -0
- data/examples/v201311/creative_template_service/get_creative_template.rb +74 -0
- data/examples/v201311/creative_template_service/get_creative_templates_by_statement.rb +80 -0
- data/examples/v201311/creative_wrapper_service/create_creative_wrappers.rb +89 -0
- data/examples/v201311/creative_wrapper_service/deactivate_creative_wrapper.rb +102 -0
- data/examples/v201311/creative_wrapper_service/get_all_creative_wrappers.rb +94 -0
- data/examples/v201311/creative_wrapper_service/get_creative_wrappers_by_statement.rb +88 -0
- data/examples/v201311/creative_wrapper_service/update_creative_wrappers.rb +86 -0
- data/examples/v201311/custom_field_service/create_custom_field_options.rb +87 -0
- data/examples/v201311/custom_field_service/create_custom_fields.rb +86 -0
- data/examples/v201311/custom_field_service/deactivate_all_line_item_custom_fields.rb +112 -0
- data/examples/v201311/custom_field_service/get_all_custom_fields.rb +102 -0
- data/examples/v201311/custom_field_service/get_all_line_item_custom_fields.rb +86 -0
- data/examples/v201311/custom_field_service/set_line_item_custom_field_value.rb +135 -0
- data/examples/v201311/custom_field_service/update_custom_fields.rb +84 -0
- data/examples/v201311/custom_targeting_service/create_custom_targeting_keys_and_values.rb +140 -0
- data/examples/v201311/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
- data/examples/v201311/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
- data/examples/v201311/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
- data/examples/v201311/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
- data/examples/v201311/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
- data/examples/v201311/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
- data/examples/v201311/custom_targeting_service/update_custom_targeting_values.rb +106 -0
- data/examples/v201311/forecast_service/get_forecast.rb +108 -0
- data/examples/v201311/forecast_service/get_forecast_by_id.rb +81 -0
- data/examples/v201311/inventory_service/create_ad_units.rb +101 -0
- data/examples/v201311/inventory_service/create_mobile_ad_unit.rb +101 -0
- data/examples/v201311/inventory_service/create_video_ad_unit.rb +108 -0
- data/examples/v201311/inventory_service/deactivate_ad_units.rb +119 -0
- data/examples/v201311/inventory_service/get_ad_unit.rb +72 -0
- data/examples/v201311/inventory_service/get_ad_unit_sizes.rb +85 -0
- data/examples/v201311/inventory_service/get_ad_units_by_statement.rb +96 -0
- data/examples/v201311/inventory_service/get_all_ad_units.rb +93 -0
- data/examples/v201311/inventory_service/update_ad_units.rb +96 -0
- data/examples/v201311/label_service/create_labels.rb +83 -0
- data/examples/v201311/label_service/deactivate_labels.rb +118 -0
- data/examples/v201311/label_service/get_all_labels.rb +95 -0
- data/examples/v201311/label_service/get_label.rb +76 -0
- data/examples/v201311/label_service/get_labels_by_statement.rb +81 -0
- data/examples/v201311/label_service/update_labels.rb +102 -0
- data/examples/v201311/line_item_creative_association_service/create_licas.rb +94 -0
- data/examples/v201311/line_item_creative_association_service/deactivate_licas.rb +127 -0
- data/examples/v201311/line_item_creative_association_service/get_all_licas.rb +98 -0
- data/examples/v201311/line_item_creative_association_service/get_lica.rb +77 -0
- data/examples/v201311/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
- data/examples/v201311/line_item_creative_association_service/update_licas.rb +91 -0
- data/examples/v201311/line_item_service/activate_line_items.rb +131 -0
- data/examples/v201311/line_item_service/create_line_items.rb +177 -0
- data/examples/v201311/line_item_service/create_mobile_line_item.rb +135 -0
- data/examples/v201311/line_item_service/create_video_line_item.rb +158 -0
- data/examples/v201311/line_item_service/get_all_line_items.rb +94 -0
- data/examples/v201311/line_item_service/get_line_item.rb +74 -0
- data/examples/v201311/line_item_service/get_line_items_by_statement.rb +93 -0
- data/examples/v201311/line_item_service/get_recently_updated_line_items.rb +98 -0
- data/examples/v201311/line_item_service/target_custom_criteria.rb +129 -0
- data/examples/v201311/line_item_service/update_line_items.rb +109 -0
- data/examples/v201311/network_service/get_all_networks.rb +74 -0
- data/examples/v201311/network_service/get_current_network.rb +66 -0
- data/examples/v201311/network_service/make_test_network.rb +79 -0
- data/examples/v201311/order_service/approve_orders.rb +122 -0
- data/examples/v201311/order_service/create_orders.rb +92 -0
- data/examples/v201311/order_service/get_all_orders.rb +93 -0
- data/examples/v201311/order_service/get_order.rb +74 -0
- data/examples/v201311/order_service/get_orders_by_statement.rb +90 -0
- data/examples/v201311/order_service/update_orders.rb +97 -0
- data/examples/v201311/placement_service/create_placements.rb +131 -0
- data/examples/v201311/placement_service/deactivate_placements.rb +118 -0
- data/examples/v201311/placement_service/get_all_placements.rb +93 -0
- data/examples/v201311/placement_service/get_placement.rb +74 -0
- data/examples/v201311/placement_service/get_placements_by_statement.rb +86 -0
- data/examples/v201311/placement_service/update_placements.rb +97 -0
- data/examples/v201311/publisher_query_language_service/fetch_match_tables.rb +113 -0
- data/examples/v201311/publisher_query_language_service/get_all_line_items.rb +100 -0
- data/examples/v201311/publisher_query_language_service/get_geo_targets.rb +102 -0
- data/examples/v201311/publisher_query_language_service/get_line_items_named_like.rb +100 -0
- data/examples/v201311/report_service/display_report.rb +81 -0
- data/examples/v201311/report_service/download_report.rb +81 -0
- data/examples/v201311/report_service/run_delivery_report.rb +103 -0
- data/examples/v201311/report_service/run_inventory_report.rb +112 -0
- data/examples/v201311/report_service/run_merged_delivery_report.rb +94 -0
- data/examples/v201311/report_service/run_reach_report.rb +87 -0
- data/examples/v201311/report_service/run_report_with_custom_fields.rb +135 -0
- data/examples/v201311/report_service/run_sales_report.rb +92 -0
- data/examples/v201311/suggested_ad_unit_service/approve_all_suggested_ad_units.rb +109 -0
- data/examples/v201311/suggested_ad_unit_service/get_all_suggested_ad_units.rb +96 -0
- data/examples/v201311/suggested_ad_unit_service/get_suggested_ad_unit.rb +75 -0
- data/examples/v201311/suggested_ad_unit_service/get_suggested_ad_units_by_statement.rb +92 -0
- data/examples/v201311/team_service/create_teams.rb +83 -0
- data/examples/v201311/team_service/get_all_teams.rb +92 -0
- data/examples/v201311/team_service/get_team.rb +74 -0
- data/examples/v201311/team_service/get_teams_by_statement.rb +78 -0
- data/examples/v201311/team_service/update_teams.rb +97 -0
- data/examples/v201311/user_service/create_users.rb +89 -0
- data/examples/v201311/user_service/deactivate_users.rb +97 -0
- data/examples/v201311/user_service/get_all_roles.rb +73 -0
- data/examples/{v201211/common/oauth2_handling.rb → v201311/user_service/get_all_users.rb} +9 -44
- data/examples/v201311/user_service/get_current_user.rb +66 -0
- data/examples/v201311/user_service/get_user.rb +73 -0
- data/examples/v201311/user_service/get_users_by_statement.rb +79 -0
- data/examples/v201311/user_service/update_users.rb +89 -0
- data/examples/v201311/user_team_association_service/create_user_team_associations.rb +86 -0
- data/examples/v201311/user_team_association_service/delete_user_team_associations.rb +111 -0
- data/examples/v201311/user_team_association_service/get_all_user_team_associations.rb +94 -0
- data/examples/v201311/user_team_association_service/get_user_team_association.rb +76 -0
- data/examples/v201311/user_team_association_service/get_user_team_associations_by_statement.rb +94 -0
- data/examples/v201311/user_team_association_service/update_user_team_associations.rb +102 -0
- data/lib/dfp_api/api_config.rb +49 -4
- data/lib/dfp_api/v201311/activity_group_service.rb +54 -0
- data/lib/dfp_api/v201311/activity_group_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/activity_service.rb +54 -0
- data/lib/dfp_api/v201311/activity_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/ad_rule_service.rb +58 -0
- data/lib/dfp_api/v201311/ad_rule_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/audience_segment_service.rb +46 -0
- data/lib/dfp_api/v201311/audience_segment_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/base_rate_service.rb +58 -0
- data/lib/dfp_api/v201311/base_rate_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/company_service.rb +54 -0
- data/lib/dfp_api/v201311/company_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/contact_service.rb +54 -0
- data/lib/dfp_api/v201311/contact_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/content_bundle_service.rb +58 -0
- data/lib/dfp_api/v201311/content_bundle_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/content_metadata_key_hierarchy_service.rb +34 -0
- data/lib/dfp_api/v201311/content_metadata_key_hierarchy_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/content_service.rb +38 -0
- data/lib/dfp_api/v201311/content_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/creative_service.rb +54 -0
- data/lib/dfp_api/v201311/creative_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/creative_set_service.rb +46 -0
- data/lib/dfp_api/v201311/creative_set_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/creative_template_service.rb +38 -0
- data/lib/dfp_api/v201311/creative_template_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/creative_wrapper_service.rb +58 -0
- data/lib/dfp_api/v201311/creative_wrapper_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/custom_field_service.rb +78 -0
- data/lib/dfp_api/v201311/custom_field_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/custom_targeting_service.rb +62 -0
- data/lib/dfp_api/v201311/custom_targeting_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/exchange_rate_service.rb +50 -0
- data/lib/dfp_api/v201311/exchange_rate_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/forecast_service.rb +38 -0
- data/lib/dfp_api/v201311/forecast_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/inventory_service.rb +62 -0
- data/lib/dfp_api/v201311/inventory_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/label_service.rb +58 -0
- data/lib/dfp_api/v201311/label_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/line_item_creative_association_service.rb +62 -0
- data/lib/dfp_api/v201311/line_item_creative_association_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/line_item_service.rb +58 -0
- data/lib/dfp_api/v201311/line_item_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/line_item_template_service.rb +34 -0
- data/lib/dfp_api/v201311/line_item_template_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/network_service.rb +46 -0
- data/lib/dfp_api/v201311/network_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/order_service.rb +58 -0
- data/lib/dfp_api/v201311/order_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/placement_service.rb +58 -0
- data/lib/dfp_api/v201311/placement_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/product_service.rb +50 -0
- data/lib/dfp_api/v201311/product_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/product_template_service.rb +58 -0
- data/lib/dfp_api/v201311/product_template_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/proposal_line_item_service.rb +58 -0
- data/lib/dfp_api/v201311/proposal_line_item_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/proposal_service.rb +58 -0
- data/lib/dfp_api/v201311/proposal_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/publisher_query_language_service.rb +34 -0
- data/lib/dfp_api/v201311/publisher_query_language_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/rate_card_customization_service.rb +58 -0
- data/lib/dfp_api/v201311/rate_card_customization_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/rate_card_service.rb +58 -0
- data/lib/dfp_api/v201311/rate_card_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/reconciliation_order_report_service.rb +42 -0
- data/lib/dfp_api/v201311/reconciliation_order_report_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/reconciliation_report_row_service.rb +38 -0
- data/lib/dfp_api/v201311/reconciliation_report_row_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/reconciliation_report_service.rb +46 -0
- data/lib/dfp_api/v201311/reconciliation_report_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/report_service.rb +46 -0
- data/lib/dfp_api/v201311/report_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/suggested_ad_unit_service.rb +42 -0
- data/lib/dfp_api/v201311/suggested_ad_unit_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/team_service.rb +54 -0
- data/lib/dfp_api/v201311/team_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/user_service.rb +66 -0
- data/lib/dfp_api/v201311/user_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/user_team_association_service.rb +58 -0
- data/lib/dfp_api/v201311/user_team_association_service_registry.rb +46 -0
- data/lib/dfp_api/v201311/workflow_request_service.rb +38 -0
- data/lib/dfp_api/v201311/workflow_request_service_registry.rb +46 -0
- data/lib/dfp_api/version.rb +1 -1
- data/test/bugs/test_issue_00000016.rb +3 -3
- metadata +241 -10
- data/examples/v201302/common/oauth2_handling.rb +0 -128
- data/examples/v201306/common/oauth2_handling.rb +0 -128
- data/examples/v201308/common/oauth2_handling.rb +0 -128
|
@@ -0,0 +1,97 @@
|
|
|
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 updates all placements to allow for AdSense targeting up to the
|
|
22
|
+
# first 500. To determine which placements exist, run get_all_placements.rb.
|
|
23
|
+
#
|
|
24
|
+
# Tags: PlacementService.getPlacementsByStatement
|
|
25
|
+
# Tags: PlacementService.updatePlacements
|
|
26
|
+
|
|
27
|
+
require 'dfp_api'
|
|
28
|
+
|
|
29
|
+
API_VERSION = :v201311
|
|
30
|
+
|
|
31
|
+
def update_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
|
+
# Create a statement to get first 500 placements.
|
|
43
|
+
statement = {:query => 'LIMIT 500'}
|
|
44
|
+
|
|
45
|
+
# Get placements by statement.
|
|
46
|
+
page = placement_service.get_placements_by_statement(statement)
|
|
47
|
+
|
|
48
|
+
if page[:results]
|
|
49
|
+
placements = page[:results]
|
|
50
|
+
|
|
51
|
+
# Update each local placement object by enabling AdSense targeting.
|
|
52
|
+
placements.each do |placement|
|
|
53
|
+
placement[:targeting_description] =
|
|
54
|
+
(placement[:description].nil? || placement[:description].empty?) ?
|
|
55
|
+
'Generic description' : placement[:description]
|
|
56
|
+
placement[:targeting_ad_location] = 'All images on sports pages.'
|
|
57
|
+
placement[:targeting_site_name] = 'http://code.google.com'
|
|
58
|
+
placement[:is_ad_sense_targeting_enabled] = true
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Update the placements on the server.
|
|
62
|
+
return_placements = placement_service.update_placements(placements)
|
|
63
|
+
|
|
64
|
+
if return_placements
|
|
65
|
+
return_placements.each do |placement|
|
|
66
|
+
puts ("Placement ID: %d, name: %s was updated with AdSense targeting " +
|
|
67
|
+
"enabled: %s.") % [placement[:id], placement[:name],
|
|
68
|
+
placement[:is_ad_sense_targeting_enabled]]
|
|
69
|
+
end
|
|
70
|
+
else
|
|
71
|
+
raise 'No placements were updated.'
|
|
72
|
+
end
|
|
73
|
+
else
|
|
74
|
+
puts 'No placements found to update.'
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
if __FILE__ == $0
|
|
79
|
+
begin
|
|
80
|
+
update_placements()
|
|
81
|
+
|
|
82
|
+
# HTTP errors.
|
|
83
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
84
|
+
puts "HTTP Error: %s" % e
|
|
85
|
+
|
|
86
|
+
# API errors.
|
|
87
|
+
rescue DfpApi::Errors::ApiException => e
|
|
88
|
+
puts "Message: %s" % e.message
|
|
89
|
+
puts 'Errors:'
|
|
90
|
+
e.errors.each_with_index do |error, index|
|
|
91
|
+
puts "\tError [%d]:" % (index + 1)
|
|
92
|
+
error.each do |field, value|
|
|
93
|
+
puts "\t\t%s: %s" % [field, value]
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
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 fetches and creates match table files from the Line_Item and
|
|
22
|
+
# Ad_Unit tables. This example may take a while to run.
|
|
23
|
+
#
|
|
24
|
+
# A full list of available tables can be found at:
|
|
25
|
+
# https://developers.google.com/doubleclick-publishers/docs/reference/v201311/PublisherQueryLanguageService
|
|
26
|
+
#
|
|
27
|
+
# Tags: PublisherQueryLanguageService.select
|
|
28
|
+
|
|
29
|
+
require 'tempfile'
|
|
30
|
+
|
|
31
|
+
require 'dfp_api'
|
|
32
|
+
|
|
33
|
+
API_VERSION = :v201311
|
|
34
|
+
# A string to separate columns in output. Use "," to get CSV.
|
|
35
|
+
COLUMN_SEPARATOR = ','
|
|
36
|
+
PAGE_SIZE = 500
|
|
37
|
+
|
|
38
|
+
def fetch_match_tables()
|
|
39
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
40
|
+
dfp = DfpApi::Api.new
|
|
41
|
+
|
|
42
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
43
|
+
# the configuration file or provide your own logger:
|
|
44
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
45
|
+
|
|
46
|
+
# Get the PublisherQueryLanguageService.
|
|
47
|
+
pql_service = dfp.service(:PublisherQueryLanguageService, API_VERSION)
|
|
48
|
+
|
|
49
|
+
# List of tables to fetch.
|
|
50
|
+
fetch_tables = ['Line_Item', 'Ad_Unit']
|
|
51
|
+
|
|
52
|
+
fetch_tables.each do |table|
|
|
53
|
+
results_file_path = fetch_match_table(table, pql_service)
|
|
54
|
+
puts "%s table saved to:\n\t%s" % [table, results_file_path]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Fetches a match table from a PQL statement and writes it to a file.
|
|
59
|
+
def fetch_match_table(table_name, pql_service)
|
|
60
|
+
# Create a statement to select all items for the table.
|
|
61
|
+
statement_text = ('SELECT Id, Name, Status FROM %s ' % table_name) +
|
|
62
|
+
'ORDER BY Id ASC LIMIT %d OFFSET %d'
|
|
63
|
+
|
|
64
|
+
# Set initial values.
|
|
65
|
+
offset = 0
|
|
66
|
+
file_path = '%s.csv' % table_name
|
|
67
|
+
|
|
68
|
+
open(file_path, 'wb') do |file|
|
|
69
|
+
file_path = file.path()
|
|
70
|
+
begin
|
|
71
|
+
# Create statement for a page.
|
|
72
|
+
statement = {:query => statement_text % [PAGE_SIZE, offset]}
|
|
73
|
+
result_set = pql_service.select(statement)
|
|
74
|
+
|
|
75
|
+
if result_set
|
|
76
|
+
# Only write column names if the first page.
|
|
77
|
+
if (offset == 0)
|
|
78
|
+
columns = result_set[:column_types].collect {|col| col[:label_name]}
|
|
79
|
+
file.write(columns.join(COLUMN_SEPARATOR) + "\n")
|
|
80
|
+
end
|
|
81
|
+
# Print out every row.
|
|
82
|
+
result_set[:rows].each do |row_set|
|
|
83
|
+
row = row_set[:values].collect {|item| item[:value]}
|
|
84
|
+
file.write(row.join(COLUMN_SEPARATOR) + "\n")
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
# Update the counters.
|
|
88
|
+
offset += PAGE_SIZE
|
|
89
|
+
end while result_set[:rows].size == PAGE_SIZE
|
|
90
|
+
end
|
|
91
|
+
return file_path
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
if __FILE__ == $0
|
|
95
|
+
begin
|
|
96
|
+
fetch_match_tables()
|
|
97
|
+
|
|
98
|
+
# HTTP errors.
|
|
99
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
100
|
+
puts "HTTP Error: %s" % e
|
|
101
|
+
|
|
102
|
+
# API errors.
|
|
103
|
+
rescue DfpApi::Errors::ApiException => e
|
|
104
|
+
puts "Message: %s" % e.message
|
|
105
|
+
puts 'Errors:'
|
|
106
|
+
e.errors.each_with_index do |error, index|
|
|
107
|
+
puts "\tError [%d]:" % (index + 1)
|
|
108
|
+
error.each do |field, value|
|
|
109
|
+
puts "\t\t%s: %s" % [field, value]
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
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 gets all line items in your network using the Line_Item table.
|
|
22
|
+
# The Line_Item PQL table schema can be found here:
|
|
23
|
+
#
|
|
24
|
+
# https://developers.google.com/doubleclick-publishers/docs/reference/latest/PublisherQueryLanguageService
|
|
25
|
+
#
|
|
26
|
+
# Tags: PublisherQueryLanguageService.select
|
|
27
|
+
|
|
28
|
+
require 'dfp_api'
|
|
29
|
+
|
|
30
|
+
API_VERSION = :v201311
|
|
31
|
+
# A string to separate columns in output. Use "," to get CSV.
|
|
32
|
+
COLUMN_SEPARATOR = "\t"
|
|
33
|
+
PAGE_SIZE = 500
|
|
34
|
+
|
|
35
|
+
def get_all_line_items()
|
|
36
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
37
|
+
dfp = DfpApi::Api.new
|
|
38
|
+
|
|
39
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
40
|
+
# the configuration file or provide your own logger:
|
|
41
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
42
|
+
|
|
43
|
+
# Get the PublisherQueryLanguageService.
|
|
44
|
+
pql_service = dfp.service(:PublisherQueryLanguageService, API_VERSION)
|
|
45
|
+
|
|
46
|
+
# Statement parts to help build a statement to select all line items.
|
|
47
|
+
statement_text = 'SELECT Id, Name, Status FROM Line_Item LIMIT %d OFFSET %d'
|
|
48
|
+
|
|
49
|
+
# Set initial values for paging.
|
|
50
|
+
offset, result_set, all_rows = 0, nil, 0
|
|
51
|
+
|
|
52
|
+
# Get all line items with paging.
|
|
53
|
+
begin
|
|
54
|
+
# Create statement for a page.
|
|
55
|
+
statement = {:query => statement_text % [PAGE_SIZE, offset]}
|
|
56
|
+
result_set = pql_service.select(statement)
|
|
57
|
+
|
|
58
|
+
if result_set
|
|
59
|
+
# Print out columns header.
|
|
60
|
+
columns = result_set[:column_types].collect {|col| col[:label_name]}
|
|
61
|
+
puts columns.join(COLUMN_SEPARATOR)
|
|
62
|
+
|
|
63
|
+
# Print out every row.
|
|
64
|
+
result_set[:rows].each do |row_set|
|
|
65
|
+
row = row_set[:values].collect {|item| item[:value]}
|
|
66
|
+
puts row.join(COLUMN_SEPARATOR)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Update the counters.
|
|
71
|
+
offset += PAGE_SIZE
|
|
72
|
+
all_rows += result_set[:rows].size
|
|
73
|
+
end while result_set[:rows].size == PAGE_SIZE
|
|
74
|
+
|
|
75
|
+
# Print a footer.
|
|
76
|
+
if result_set[:rows]
|
|
77
|
+
puts "Total number of rows found: %d" % all_rows
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
if __FILE__ == $0
|
|
82
|
+
begin
|
|
83
|
+
get_all_line_items()
|
|
84
|
+
|
|
85
|
+
# HTTP errors.
|
|
86
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
87
|
+
puts "HTTP Error: %s" % e
|
|
88
|
+
|
|
89
|
+
# API errors.
|
|
90
|
+
rescue DfpApi::Errors::ApiException => e
|
|
91
|
+
puts "Message: %s" % e.message
|
|
92
|
+
puts 'Errors:'
|
|
93
|
+
e.errors.each_with_index do |error, index|
|
|
94
|
+
puts "\tError [%d]:" % (index + 1)
|
|
95
|
+
error.each do |field, value|
|
|
96
|
+
puts "\t\t%s: %s" % [field, value]
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -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 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 gets first 500 cities available to target. A full list of
|
|
22
|
+
# available PQL tables can be found at:
|
|
23
|
+
#
|
|
24
|
+
# https://developers.google.com/doubleclick-publishers/docs/reference/latest/PublisherQueryLanguageService
|
|
25
|
+
#
|
|
26
|
+
# Tags: PublisherQueryLanguageService.select
|
|
27
|
+
|
|
28
|
+
require 'dfp_api'
|
|
29
|
+
|
|
30
|
+
API_VERSION = :v201311
|
|
31
|
+
# A string to separate columns in output. Use "," to get CSV.
|
|
32
|
+
COLUMN_SEPARATOR = "\t"
|
|
33
|
+
PAGE_SIZE = 500
|
|
34
|
+
|
|
35
|
+
def get_geo_targets()
|
|
36
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
37
|
+
dfp = DfpApi::Api.new
|
|
38
|
+
|
|
39
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
40
|
+
# the configuration file or provide your own logger:
|
|
41
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
42
|
+
|
|
43
|
+
# Get the PublisherQueryLanguageService.
|
|
44
|
+
pql_service = dfp.service(:PublisherQueryLanguageService, API_VERSION)
|
|
45
|
+
|
|
46
|
+
# Create a statement to select all targetable cities.
|
|
47
|
+
statement_text = "SELECT Id, Name, CanonicalParentId, ParentIds, " +
|
|
48
|
+
"CountryCode, Type, Targetable FROM Geo_Target WHERE Type = 'City' " +
|
|
49
|
+
"AND Targetable = true LIMIT %d OFFSET %d"
|
|
50
|
+
|
|
51
|
+
# Set initial values for paging.
|
|
52
|
+
offset, result_set, all_rows = 0, nil, 0
|
|
53
|
+
|
|
54
|
+
# Get all cities with paging.
|
|
55
|
+
begin
|
|
56
|
+
# Create statement for a page.
|
|
57
|
+
statement = {:query => statement_text % [PAGE_SIZE, offset]}
|
|
58
|
+
result_set = pql_service.select(statement)
|
|
59
|
+
|
|
60
|
+
if result_set
|
|
61
|
+
# Print out columns header.
|
|
62
|
+
columns = result_set[:column_types].collect {|col| col[:label_name]}
|
|
63
|
+
puts columns.join(COLUMN_SEPARATOR)
|
|
64
|
+
|
|
65
|
+
# Print out every row.
|
|
66
|
+
result_set[:rows].each do |row_set|
|
|
67
|
+
row = row_set[:values].collect {|item| item[:value]}
|
|
68
|
+
puts row.join(COLUMN_SEPARATOR)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Update the counters.
|
|
73
|
+
offset += PAGE_SIZE
|
|
74
|
+
all_rows += result_set[:rows].size
|
|
75
|
+
end while result_set[:rows].size == PAGE_SIZE
|
|
76
|
+
|
|
77
|
+
# Print a footer.
|
|
78
|
+
if result_set[:rows]
|
|
79
|
+
puts "Total number of rows found: %d" % all_rows
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
if __FILE__ == $0
|
|
84
|
+
begin
|
|
85
|
+
get_geo_targets()
|
|
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,100 @@
|
|
|
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 gets all line items which have a name beginning with "line item".
|
|
22
|
+
# This example may take a while to run.
|
|
23
|
+
#
|
|
24
|
+
# Tags: PublisherQueryLanguageService.select
|
|
25
|
+
|
|
26
|
+
require 'dfp_api'
|
|
27
|
+
|
|
28
|
+
API_VERSION = :v201311
|
|
29
|
+
# A string to separate columns in output. Use "," to get CSV.
|
|
30
|
+
COLUMN_SEPARATOR = "\t"
|
|
31
|
+
PAGE_SIZE = 500
|
|
32
|
+
|
|
33
|
+
def get_line_items_named_like()
|
|
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 PublisherQueryLanguageService.
|
|
42
|
+
pql_service = dfp.service(:PublisherQueryLanguageService, API_VERSION)
|
|
43
|
+
|
|
44
|
+
# Create a statement to select all line items matching subtext.
|
|
45
|
+
statement_text =
|
|
46
|
+
"SELECT Id, Name, Status FROM Line_Item WHERE Name LIKE 'line item%%' " +
|
|
47
|
+
"ORDER BY Id ASC LIMIT %d OFFSET %d"
|
|
48
|
+
|
|
49
|
+
# Set initial values for paging.
|
|
50
|
+
offset, result_set, all_rows = 0, nil, 0
|
|
51
|
+
|
|
52
|
+
# Get all cities starting with "Santa".
|
|
53
|
+
begin
|
|
54
|
+
# Create statement for a page.
|
|
55
|
+
statement = {:query => statement_text % [PAGE_SIZE, offset]}
|
|
56
|
+
result_set = pql_service.select(statement)
|
|
57
|
+
|
|
58
|
+
if result_set
|
|
59
|
+
# Print out columns header.
|
|
60
|
+
columns = result_set[:column_types].collect {|col| col[:label_name]}
|
|
61
|
+
puts columns.join(COLUMN_SEPARATOR)
|
|
62
|
+
|
|
63
|
+
# Print out every row.
|
|
64
|
+
result_set[:rows].each do |row_set|
|
|
65
|
+
row = row_set[:values].collect {|item| item[:value]}
|
|
66
|
+
puts row.join(COLUMN_SEPARATOR)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Update the counters.
|
|
71
|
+
offset += PAGE_SIZE
|
|
72
|
+
all_rows += result_set[:rows].size
|
|
73
|
+
end while result_set[:rows].size == PAGE_SIZE
|
|
74
|
+
|
|
75
|
+
# Print a footer.
|
|
76
|
+
if result_set[:rows]
|
|
77
|
+
puts "Total number of rows found: %d" % all_rows
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
if __FILE__ == $0
|
|
82
|
+
begin
|
|
83
|
+
get_line_items_named_like()
|
|
84
|
+
|
|
85
|
+
# HTTP errors.
|
|
86
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
87
|
+
puts "HTTP Error: %s" % e
|
|
88
|
+
|
|
89
|
+
# API errors.
|
|
90
|
+
rescue DfpApi::Errors::ApiException => e
|
|
91
|
+
puts "Message: %s" % e.message
|
|
92
|
+
puts 'Errors:'
|
|
93
|
+
e.errors.each_with_index do |error, index|
|
|
94
|
+
puts "\tError [%d]:" % (index + 1)
|
|
95
|
+
error.each do |field, value|
|
|
96
|
+
puts "\t\t%s: %s" % [field, value]
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|