google-dfp-api 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +5 -0
- data/README +4 -4
- data/examples/v201203/line_item_service/update_line_items.rb +1 -1
- data/examples/v201204/audience_segment_service/get_all_audience_segments.rb +93 -0
- data/examples/v201204/common/error_handling.rb +76 -0
- data/examples/v201204/common/oauth_handling.rb +128 -0
- data/examples/v201204/company_service/create_companies.rb +81 -0
- data/examples/v201204/company_service/get_all_companies.rb +92 -0
- data/examples/v201204/company_service/get_companies_by_statement.rb +88 -0
- data/examples/v201204/company_service/get_company.rb +72 -0
- data/examples/v201204/company_service/update_companies.rb +95 -0
- data/examples/v201204/content_service/get_all_content.rb +94 -0
- data/examples/v201204/content_service/get_content_by_category.rb +136 -0
- data/examples/v201204/creative_service/copy_image_creatives.rb +115 -0
- data/examples/v201204/creative_service/create_creative_from_template.rb +139 -0
- data/examples/v201204/creative_service/create_creatives.rb +106 -0
- data/examples/v201204/creative_service/create_custom_creative.rb +104 -0
- data/examples/v201204/creative_service/get_all_creatives.rb +93 -0
- data/examples/v201204/creative_service/get_creative.rb +72 -0
- data/examples/v201204/creative_service/get_creatives_by_statement.rb +87 -0
- data/examples/v201204/creative_service/update_creatives.rb +96 -0
- data/examples/v201204/creative_template_service/get_all_creative_templates.rb +94 -0
- data/examples/v201204/creative_template_service/get_creative_template.rb +74 -0
- data/examples/v201204/creative_template_service/get_creative_templates_by_statement.rb +80 -0
- data/examples/v201204/custom_field_service/create_custom_field_options.rb +87 -0
- data/examples/v201204/custom_field_service/create_custom_fields.rb +86 -0
- data/examples/v201204/custom_field_service/deactivate_all_line_item_custom_fields.rb +112 -0
- data/examples/v201204/custom_field_service/get_all_custom_fields.rb +102 -0
- data/examples/v201204/custom_field_service/get_all_line_item_custom_fields.rb +86 -0
- data/examples/v201204/custom_field_service/set_line_item_custom_field_value.rb +135 -0
- data/examples/v201204/custom_field_service/update_custom_fields.rb +83 -0
- data/examples/v201204/custom_targeting_service/create_custom_targeting_keys_and_values.rb +140 -0
- data/examples/v201204/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
- data/examples/v201204/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
- data/examples/v201204/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
- data/examples/v201204/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
- data/examples/v201204/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
- data/examples/v201204/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
- data/examples/v201204/custom_targeting_service/update_custom_targeting_values.rb +106 -0
- data/examples/v201204/forecast_service/get_forecast.rb +107 -0
- data/examples/v201204/forecast_service/get_forecast_by_id.rb +80 -0
- data/examples/v201204/inventory_service/create_ad_units.rb +101 -0
- data/examples/v201204/inventory_service/create_mobile_ad_unit.rb +100 -0
- data/examples/v201204/inventory_service/create_video_ad_unit.rb +108 -0
- data/examples/v201204/inventory_service/deactivate_ad_units.rb +119 -0
- data/examples/v201204/inventory_service/get_ad_unit.rb +72 -0
- data/examples/v201204/inventory_service/get_ad_unit_sizes.rb +85 -0
- data/examples/v201204/inventory_service/get_ad_units_by_statement.rb +96 -0
- data/examples/v201204/inventory_service/get_all_ad_units.rb +93 -0
- data/examples/v201204/inventory_service/update_ad_units.rb +94 -0
- data/examples/v201204/label_service/create_labels.rb +83 -0
- data/examples/v201204/label_service/deactivate_labels.rb +118 -0
- data/examples/v201204/label_service/get_all_labels.rb +95 -0
- data/examples/v201204/label_service/get_label.rb +76 -0
- data/examples/v201204/label_service/get_labels_by_statement.rb +81 -0
- data/examples/v201204/label_service/update_labels.rb +102 -0
- data/examples/v201204/line_item_creative_association_service/create_licas.rb +94 -0
- data/examples/v201204/line_item_creative_association_service/deactivate_licas.rb +127 -0
- data/examples/v201204/line_item_creative_association_service/get_all_licas.rb +95 -0
- data/examples/v201204/line_item_creative_association_service/get_lica.rb +77 -0
- data/examples/v201204/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
- data/examples/v201204/line_item_creative_association_service/update_licas.rb +91 -0
- data/examples/v201204/line_item_service/activate_line_items.rb +131 -0
- data/examples/v201204/line_item_service/create_line_items.rb +177 -0
- data/examples/v201204/line_item_service/create_mobile_line_item.rb +135 -0
- data/examples/v201204/line_item_service/create_video_line_item.rb +156 -0
- data/examples/v201204/line_item_service/get_all_line_items.rb +94 -0
- data/examples/v201204/line_item_service/get_line_item.rb +74 -0
- data/examples/v201204/line_item_service/get_line_items_by_statement.rb +93 -0
- data/examples/v201204/line_item_service/get_recently_updated_line_items.rb +98 -0
- data/examples/v201204/line_item_service/target_custom_criteria.rb +129 -0
- data/examples/v201204/line_item_service/update_line_items.rb +109 -0
- data/examples/v201204/network_service/get_all_networks.rb +74 -0
- data/examples/v201204/network_service/get_current_network.rb +66 -0
- data/examples/v201204/network_service/make_test_network.rb +76 -0
- data/examples/v201204/order_service/approve_orders.rb +122 -0
- data/examples/v201204/order_service/create_orders.rb +92 -0
- data/examples/v201204/order_service/get_all_orders.rb +93 -0
- data/examples/v201204/order_service/get_order.rb +74 -0
- data/examples/v201204/order_service/get_orders_by_statement.rb +90 -0
- data/examples/v201204/order_service/update_orders.rb +95 -0
- data/examples/v201204/placement_service/create_placements.rb +131 -0
- data/examples/v201204/placement_service/deactivate_placements.rb +118 -0
- data/examples/v201204/placement_service/get_all_placements.rb +93 -0
- data/examples/v201204/placement_service/get_placement.rb +74 -0
- data/examples/v201204/placement_service/get_placements_by_statement.rb +86 -0
- data/examples/v201204/placement_service/update_placements.rb +97 -0
- data/examples/v201204/publisher_query_language_service/get_all_cities.rb +90 -0
- data/examples/v201204/report_service/download_report.rb +81 -0
- data/examples/v201204/report_service/run_delivery_report.rb +103 -0
- data/examples/v201204/report_service/run_inventory_report.rb +92 -0
- data/examples/v201204/report_service/run_merged_delivery_report.rb +94 -0
- data/examples/v201204/report_service/run_sales_report.rb +89 -0
- data/examples/v201204/suggested_ad_unit_service/approve_all_suggested_ad_units.rb +109 -0
- data/examples/v201204/suggested_ad_unit_service/get_all_suggested_ad_units.rb +96 -0
- data/examples/v201204/suggested_ad_unit_service/get_suggested_ad_unit.rb +75 -0
- data/examples/v201204/suggested_ad_unit_service/get_suggested_ad_units_by_statement.rb +92 -0
- data/examples/v201204/team_service/create_teams.rb +83 -0
- data/examples/v201204/team_service/get_all_teams.rb +92 -0
- data/examples/v201204/team_service/get_team.rb +74 -0
- data/examples/v201204/team_service/get_teams_by_statement.rb +78 -0
- data/examples/v201204/team_service/update_teams.rb +95 -0
- data/examples/v201204/third_party_slot_service/archive_third_party_slots.rb +125 -0
- data/examples/v201204/third_party_slot_service/create_third_party_slot.rb +91 -0
- data/examples/v201204/third_party_slot_service/get_all_third_party_slots.rb +93 -0
- data/examples/v201204/third_party_slot_service/get_third_party_slot_by_statement.rb +86 -0
- data/examples/v201204/third_party_slot_service/update_third_party_slots.rb +95 -0
- data/examples/v201204/user_service/create_users.rb +89 -0
- data/examples/v201204/user_service/deactivate_users.rb +97 -0
- data/examples/v201204/user_service/get_all_roles.rb +73 -0
- data/examples/v201204/user_service/get_all_users.rb +93 -0
- data/examples/v201204/user_service/get_current_user.rb +66 -0
- data/examples/v201204/user_service/get_user.rb +73 -0
- data/examples/v201204/user_service/get_users_by_statement.rb +79 -0
- data/examples/v201204/user_service/update_users.rb +89 -0
- data/examples/v201204/user_team_association_service/create_user_team_associations.rb +86 -0
- data/examples/v201204/user_team_association_service/delete_user_team_associations.rb +111 -0
- data/examples/v201204/user_team_association_service/get_all_user_team_associations.rb +94 -0
- data/examples/v201204/user_team_association_service/get_user_team_association.rb +76 -0
- data/examples/v201204/user_team_association_service/get_user_team_associations_by_statement.rb +94 -0
- data/examples/v201204/user_team_association_service/update_user_team_associations.rb +102 -0
- data/lib/dfp_api.rb +9 -15
- data/lib/dfp_api/api_config.rb +24 -20
- data/lib/dfp_api/client_login_header_handler.rb +17 -21
- data/lib/dfp_api/credential_handler.rb +16 -24
- data/lib/dfp_api/v201108/company_service.rb +3 -3
- data/lib/dfp_api/v201108/company_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/creative_service.rb +3 -3
- data/lib/dfp_api/v201108/creative_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/custom_targeting_service.rb +3 -3
- data/lib/dfp_api/v201108/custom_targeting_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/forecast_service.rb +3 -3
- data/lib/dfp_api/v201108/forecast_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/inventory_service.rb +3 -3
- data/lib/dfp_api/v201108/inventory_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/label_service.rb +3 -3
- data/lib/dfp_api/v201108/label_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/line_item_creative_association_service.rb +3 -3
- data/lib/dfp_api/v201108/line_item_creative_association_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/line_item_service.rb +3 -3
- data/lib/dfp_api/v201108/line_item_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/network_service.rb +3 -3
- data/lib/dfp_api/v201108/network_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/order_service.rb +3 -3
- data/lib/dfp_api/v201108/order_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/placement_service.rb +3 -3
- data/lib/dfp_api/v201108/placement_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/publisher_query_language_service.rb +3 -3
- data/lib/dfp_api/v201108/publisher_query_language_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/report_service.rb +3 -3
- data/lib/dfp_api/v201108/report_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/third_party_slot_service.rb +3 -3
- data/lib/dfp_api/v201108/third_party_slot_service_registry.rb +1 -1
- data/lib/dfp_api/v201108/user_service.rb +3 -3
- data/lib/dfp_api/v201108/user_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/company_service.rb +3 -3
- data/lib/dfp_api/v201111/company_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/content_service.rb +3 -3
- data/lib/dfp_api/v201111/content_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/creative_service.rb +3 -3
- data/lib/dfp_api/v201111/creative_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/creative_template_service.rb +3 -3
- data/lib/dfp_api/v201111/creative_template_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/custom_targeting_service.rb +3 -3
- data/lib/dfp_api/v201111/custom_targeting_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/forecast_service.rb +3 -3
- data/lib/dfp_api/v201111/forecast_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/inventory_service.rb +3 -3
- data/lib/dfp_api/v201111/inventory_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/label_service.rb +3 -3
- data/lib/dfp_api/v201111/label_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/line_item_creative_association_service.rb +3 -3
- data/lib/dfp_api/v201111/line_item_creative_association_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/line_item_service.rb +3 -3
- data/lib/dfp_api/v201111/line_item_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/network_service.rb +3 -3
- data/lib/dfp_api/v201111/network_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/order_service.rb +3 -3
- data/lib/dfp_api/v201111/order_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/placement_service.rb +3 -3
- data/lib/dfp_api/v201111/placement_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/publisher_query_language_service.rb +3 -3
- data/lib/dfp_api/v201111/publisher_query_language_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/report_service.rb +3 -3
- data/lib/dfp_api/v201111/report_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/suggested_ad_unit_service.rb +3 -3
- data/lib/dfp_api/v201111/suggested_ad_unit_service_registry.rb +2 -2
- data/lib/dfp_api/v201111/third_party_slot_service.rb +3 -3
- data/lib/dfp_api/v201111/third_party_slot_service_registry.rb +1 -1
- data/lib/dfp_api/v201111/user_service.rb +3 -3
- data/lib/dfp_api/v201111/user_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/company_service.rb +3 -3
- data/lib/dfp_api/v201201/company_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/content_service.rb +3 -3
- data/lib/dfp_api/v201201/content_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/creative_service.rb +3 -3
- data/lib/dfp_api/v201201/creative_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/creative_template_service.rb +3 -3
- data/lib/dfp_api/v201201/creative_template_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/custom_targeting_service.rb +3 -3
- data/lib/dfp_api/v201201/custom_targeting_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/forecast_service.rb +3 -3
- data/lib/dfp_api/v201201/forecast_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/inventory_service.rb +3 -3
- data/lib/dfp_api/v201201/inventory_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/label_service.rb +3 -3
- data/lib/dfp_api/v201201/label_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/line_item_creative_association_service.rb +3 -3
- data/lib/dfp_api/v201201/line_item_creative_association_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/line_item_service.rb +3 -3
- data/lib/dfp_api/v201201/line_item_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/network_service.rb +3 -3
- data/lib/dfp_api/v201201/network_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/order_service.rb +3 -3
- data/lib/dfp_api/v201201/order_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/placement_service.rb +3 -3
- data/lib/dfp_api/v201201/placement_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/publisher_query_language_service.rb +3 -3
- data/lib/dfp_api/v201201/publisher_query_language_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/report_service.rb +3 -3
- data/lib/dfp_api/v201201/report_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/suggested_ad_unit_service.rb +3 -3
- data/lib/dfp_api/v201201/suggested_ad_unit_service_registry.rb +2 -2
- data/lib/dfp_api/v201201/team_service.rb +3 -3
- data/lib/dfp_api/v201201/team_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/third_party_slot_service.rb +3 -3
- data/lib/dfp_api/v201201/third_party_slot_service_registry.rb +1 -1
- data/lib/dfp_api/v201201/user_service.rb +3 -3
- data/lib/dfp_api/v201201/user_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/audience_segment_service.rb +3 -3
- data/lib/dfp_api/v201203/audience_segment_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/company_service.rb +3 -3
- data/lib/dfp_api/v201203/company_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/content_service.rb +3 -3
- data/lib/dfp_api/v201203/content_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/creative_service.rb +3 -3
- data/lib/dfp_api/v201203/creative_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/creative_template_service.rb +3 -3
- data/lib/dfp_api/v201203/creative_template_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/custom_targeting_service.rb +3 -3
- data/lib/dfp_api/v201203/custom_targeting_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/forecast_service.rb +3 -3
- data/lib/dfp_api/v201203/forecast_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/inventory_service.rb +3 -3
- data/lib/dfp_api/v201203/inventory_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/label_service.rb +3 -3
- data/lib/dfp_api/v201203/label_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/line_item_creative_association_service.rb +3 -3
- data/lib/dfp_api/v201203/line_item_creative_association_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/line_item_service.rb +3 -3
- data/lib/dfp_api/v201203/line_item_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/network_service.rb +3 -3
- data/lib/dfp_api/v201203/network_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/order_service.rb +3 -3
- data/lib/dfp_api/v201203/order_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/placement_service.rb +3 -3
- data/lib/dfp_api/v201203/placement_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/publisher_query_language_service.rb +3 -3
- data/lib/dfp_api/v201203/publisher_query_language_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/report_service.rb +3 -3
- data/lib/dfp_api/v201203/report_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/suggested_ad_unit_service.rb +3 -3
- data/lib/dfp_api/v201203/suggested_ad_unit_service_registry.rb +2 -2
- data/lib/dfp_api/v201203/team_service.rb +3 -3
- data/lib/dfp_api/v201203/team_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/third_party_slot_service.rb +3 -3
- data/lib/dfp_api/v201203/third_party_slot_service_registry.rb +1 -1
- data/lib/dfp_api/v201203/user_service.rb +3 -3
- data/lib/dfp_api/v201203/user_service_registry.rb +1 -1
- data/lib/dfp_api/v201204/audience_segment_service.rb +34 -0
- data/lib/dfp_api/v201204/audience_segment_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/company_service.rb +54 -0
- data/lib/dfp_api/v201204/company_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/content_service.rb +42 -0
- data/lib/dfp_api/v201204/content_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/creative_service.rb +54 -0
- data/lib/dfp_api/v201204/creative_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/creative_template_service.rb +38 -0
- data/lib/dfp_api/v201204/creative_template_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/custom_field_service.rb +78 -0
- data/lib/dfp_api/v201204/custom_field_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/custom_targeting_service.rb +62 -0
- data/lib/dfp_api/v201204/custom_targeting_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/forecast_service.rb +38 -0
- data/lib/dfp_api/v201204/forecast_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/inventory_service.rb +62 -0
- data/lib/dfp_api/v201204/inventory_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/label_service.rb +58 -0
- data/lib/dfp_api/v201204/label_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/line_item_creative_association_service.rb +62 -0
- data/lib/dfp_api/v201204/line_item_creative_association_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/line_item_service.rb +58 -0
- data/lib/dfp_api/v201204/line_item_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/network_service.rb +46 -0
- data/lib/dfp_api/v201204/network_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/order_service.rb +58 -0
- data/lib/dfp_api/v201204/order_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/placement_service.rb +58 -0
- data/lib/dfp_api/v201204/placement_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/publisher_query_language_service.rb +34 -0
- data/lib/dfp_api/v201204/publisher_query_language_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/report_service.rb +42 -0
- data/lib/dfp_api/v201204/report_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/suggested_ad_unit_service.rb +42 -0
- data/lib/dfp_api/v201204/suggested_ad_unit_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/team_service.rb +54 -0
- data/lib/dfp_api/v201204/team_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/third_party_slot_service.rb +46 -0
- data/lib/dfp_api/v201204/third_party_slot_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/user_service.rb +66 -0
- data/lib/dfp_api/v201204/user_service_registry.rb +46 -0
- data/lib/dfp_api/v201204/user_team_association_service.rb +58 -0
- data/lib/dfp_api/v201204/user_team_association_service_registry.rb +46 -0
- data/lib/dfp_api/version.rb +1 -1
- data/test/suite_unittests.rb +0 -3
- metadata +662 -498
- data/lib/dfp_api/extensions.rb +0 -54
- data/test/bugs/test_issue_00000016.rb +0 -155
data/examples/v201204/user_team_association_service/get_user_team_associations_by_statement.rb
ADDED
@@ -0,0 +1,94 @@
|
|
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 teams that the current user belongs to. The statement
|
22
|
+
# retrieves up to the maximum page size limit of 500. To create teams, run
|
23
|
+
# create_user_team_associations.rb.
|
24
|
+
#
|
25
|
+
# Tags: UserTeamAssociationService.getUserTeamAssociationsByStatement
|
26
|
+
# Tags: UserService.getCurrentUser
|
27
|
+
|
28
|
+
require 'dfp_api'
|
29
|
+
|
30
|
+
API_VERSION = :v201204
|
31
|
+
PAGE_SIZE = 500
|
32
|
+
|
33
|
+
def get_user_team_associations_by_statement()
|
34
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
35
|
+
dfp = DfpApi::Api.new
|
36
|
+
|
37
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
38
|
+
# the configuration file or provide your own logger:
|
39
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
40
|
+
|
41
|
+
# Get the UserTeamAssociationService.
|
42
|
+
uta_service = dfp.service(:UserTeamAssociationService, API_VERSION)
|
43
|
+
|
44
|
+
# Get the UserService.
|
45
|
+
user_service = dfp.service(:UserService, API_VERSION)
|
46
|
+
|
47
|
+
# Get the current user.
|
48
|
+
user = user_service.get_current_user()
|
49
|
+
|
50
|
+
# Create filter text to select user team associations by the user ID.
|
51
|
+
statement = {
|
52
|
+
:query => "WHERE userId = :user_id LIMIT %s" % PAGE_SIZE,
|
53
|
+
:values => [
|
54
|
+
{:key => 'user_id',
|
55
|
+
:value => {:value => user[:id], :xsi_type => 'NumberValue'}},
|
56
|
+
]
|
57
|
+
}
|
58
|
+
|
59
|
+
# Get user team associations by statement.
|
60
|
+
page = uta_service.get_user_team_associations_by_statement(statement)
|
61
|
+
|
62
|
+
if page and page[:results]
|
63
|
+
page[:results].each_with_index do |association, index|
|
64
|
+
puts "%d) Team user association between team ID %d and user ID %d." %
|
65
|
+
[index, association[:team_id], association[:user_id]]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Print a footer.
|
70
|
+
if page.include?(:total_result_set_size)
|
71
|
+
puts "Number of results found: %d" % page[:total_result_set_size]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
if __FILE__ == $0
|
76
|
+
begin
|
77
|
+
get_user_team_associations_by_statement()
|
78
|
+
|
79
|
+
# HTTP errors.
|
80
|
+
rescue AdsCommon::Errors::HttpError => e
|
81
|
+
puts "HTTP Error: %s" % e
|
82
|
+
|
83
|
+
# API errors.
|
84
|
+
rescue DfpApi::Errors::ApiException => e
|
85
|
+
puts "Message: %s" % e.message
|
86
|
+
puts 'Errors:'
|
87
|
+
e.errors.each_with_index do |error, index|
|
88
|
+
puts "\tError [%d]:" % (index + 1)
|
89
|
+
error.each do |field, value|
|
90
|
+
puts "\t\t%s: %s" % [field, value]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,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 updates user team associations. It updates a user team
|
22
|
+
# association by setting the overridden access type to read only for the first
|
23
|
+
# 500 teams that the user belongs to. To determine which users exists, run
|
24
|
+
# get_all_users.rb.
|
25
|
+
#
|
26
|
+
# Tags: UserTeamAssociationService.getUserTeamAssociationsByStatement
|
27
|
+
# Tags: UserTeamAssociationService.updateUserTeamAssociations
|
28
|
+
|
29
|
+
require 'dfp_api'
|
30
|
+
|
31
|
+
API_VERSION = :v201204
|
32
|
+
PAGE_SIZE = 500
|
33
|
+
|
34
|
+
def update_user_team_associations()
|
35
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
36
|
+
dfp = DfpApi::Api.new
|
37
|
+
|
38
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
39
|
+
# the configuration file or provide your own logger:
|
40
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
41
|
+
|
42
|
+
# Get the UserTeamAssociationService.
|
43
|
+
uta_service = dfp.service(:UserTeamAssociationService, API_VERSION)
|
44
|
+
|
45
|
+
# Set the user to set to read only access within its teams.
|
46
|
+
user_id = 'INSERT_USER_ID_HERE'.to_i
|
47
|
+
|
48
|
+
# Create filter text to select user team associations by the user ID.
|
49
|
+
statement = {
|
50
|
+
:query => "WHERE userId = :user_id LIMIT %s" % PAGE_SIZE,
|
51
|
+
:values => [
|
52
|
+
{:key => 'user_id',
|
53
|
+
:value => {:value => user_id, :xsi_type => 'NumberValue'}},
|
54
|
+
]
|
55
|
+
}
|
56
|
+
|
57
|
+
# Get user team associations by statement.
|
58
|
+
page = uta_service.get_user_team_associations_by_statement(statement)
|
59
|
+
|
60
|
+
if page[:results] and !page[:results].empty?
|
61
|
+
associations = page[:results]
|
62
|
+
associations.each do |association|
|
63
|
+
# Update local user team association to read-only access.
|
64
|
+
association[:overridden_team_access_type] = 'READ_ONLY'
|
65
|
+
end
|
66
|
+
|
67
|
+
# Update the user team association on the server.
|
68
|
+
return_associations =
|
69
|
+
uta_service.update_user_team_associations(associations)
|
70
|
+
|
71
|
+
# Display results.
|
72
|
+
return_associations.each do |association|
|
73
|
+
puts ("User team association between user ID %d and team ID %d was " +
|
74
|
+
"updated with access type '%s'") %
|
75
|
+
[association[:user_id], association[:team_id],
|
76
|
+
association[:overridden_team_access_type]]
|
77
|
+
end
|
78
|
+
else
|
79
|
+
puts 'No user team associations were updated.'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
if __FILE__ == $0
|
84
|
+
begin
|
85
|
+
update_user_team_associations()
|
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
|
data/lib/dfp_api.rb
CHANGED
@@ -20,12 +20,10 @@
|
|
20
20
|
# Contains the main classes for the client library. Takes care of all
|
21
21
|
# dependencies.
|
22
22
|
|
23
|
-
gem 'google-ads-common', '~>0.
|
23
|
+
gem 'google-ads-common', '~>0.7.0'
|
24
24
|
|
25
25
|
require 'ads_common/api'
|
26
|
-
require 'ads_common/savon_service'
|
27
26
|
require 'ads_common/savon_headers/oauth_header_handler'
|
28
|
-
require 'ads_common/savon_headers/simple_header_handler'
|
29
27
|
require 'dfp_api/api_config'
|
30
28
|
require 'dfp_api/client_login_header_handler'
|
31
29
|
require 'dfp_api/credential_handler'
|
@@ -50,27 +48,23 @@ module DfpApi
|
|
50
48
|
DfpApi::ApiConfig
|
51
49
|
end
|
52
50
|
|
53
|
-
# Sets the logger to use.
|
54
|
-
def logger=(logger)
|
55
|
-
super(logger)
|
56
|
-
AdsCommon::SavonService.logger = logger
|
57
|
-
end
|
58
|
-
|
59
51
|
private
|
60
52
|
|
61
|
-
# Retrieve DFP
|
62
|
-
def
|
63
|
-
handler = nil
|
53
|
+
# Retrieve DFP HeaderHandler per credential.
|
54
|
+
def soap_header_handler(auth_handler, version, namespace)
|
64
55
|
auth_method = @config.read('authentication.method', :CLIENTLOGIN)
|
65
56
|
handler = case auth_method
|
66
57
|
when :CLIENTLOGIN
|
67
58
|
DfpApi::ClientLoginHeaderHandler
|
68
59
|
when :OAUTH
|
69
60
|
AdsCommon::SavonHeaders::OAuthHeaderHandler
|
61
|
+
else
|
62
|
+
raise AdsCommon::Errors::AuthError,
|
63
|
+
"Unknown auth method: %s" % auth_method
|
70
64
|
end
|
71
|
-
ns = api_config.
|
72
|
-
|
73
|
-
|
65
|
+
ns = api_config.client_login_config(:HEADER_NAMESPACE_PREAMBLE) +
|
66
|
+
version.to_s
|
67
|
+
return handler.new(@credential_handler, auth_handler, ns, version)
|
74
68
|
end
|
75
69
|
end
|
76
70
|
end
|
data/lib/dfp_api/api_config.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#!/usr/bin/ruby
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Encoding: utf-8
|
2
3
|
#
|
3
4
|
# Authors:: api.dklimkin@gmail.com (Danial Klimkin)
|
4
5
|
#
|
@@ -34,9 +35,9 @@ module DfpApi
|
|
34
35
|
end
|
35
36
|
|
36
37
|
# Set defaults
|
37
|
-
DEFAULT_VERSION = :
|
38
|
+
DEFAULT_VERSION = :v201204
|
38
39
|
DEFAULT_ENVIRONMENT = :PRODUCTION
|
39
|
-
LATEST_VERSION = :
|
40
|
+
LATEST_VERSION = :v201204
|
40
41
|
|
41
42
|
# Set other constants
|
42
43
|
API_NAME = 'DfpApi'
|
@@ -72,7 +73,16 @@ module DfpApi
|
|
72
73
|
:CustomTargetingService, :PublisherQueryLanguageService,
|
73
74
|
:LabelService, :ThirdPartySlotService, :ContentService,
|
74
75
|
:SuggestedAdUnitService, :CreativeTemplateService,
|
75
|
-
:TeamService, :AudienceSegmentService]
|
76
|
+
:TeamService, :AudienceSegmentService],
|
77
|
+
:v201204 => [:CompanyService, :CreativeService, :ForecastService,
|
78
|
+
:InventoryService, :LineItemCreativeAssociationService,
|
79
|
+
:LineItemService, :NetworkService, :OrderService,
|
80
|
+
:PlacementService, :ReportService, :UserService,
|
81
|
+
:CustomTargetingService, :PublisherQueryLanguageService,
|
82
|
+
:LabelService, :ThirdPartySlotService, :ContentService,
|
83
|
+
:SuggestedAdUnitService, :CreativeTemplateService,
|
84
|
+
:TeamService, :AudienceSegmentService, :CustomFieldService,
|
85
|
+
:UserTeamAssociationService]
|
76
86
|
}
|
77
87
|
|
78
88
|
# Configure the different environments, with the base URL for each one
|
@@ -82,17 +92,14 @@ module DfpApi
|
|
82
92
|
:v201108 => 'https://www.google.com/apis/ads/publisher/',
|
83
93
|
:v201111 => 'https://www.google.com/apis/ads/publisher/',
|
84
94
|
:v201201 => 'https://www.google.com/apis/ads/publisher/',
|
85
|
-
:v201203 => 'https://www.google.com/apis/ads/publisher/'
|
95
|
+
:v201203 => 'https://www.google.com/apis/ads/publisher/',
|
96
|
+
:v201204 => 'https://www.google.com/apis/ads/publisher/'
|
86
97
|
}
|
87
98
|
}
|
88
99
|
|
89
|
-
#
|
90
|
-
@@
|
91
|
-
:
|
92
|
-
}
|
93
|
-
|
94
|
-
@@headers_config = {
|
95
|
-
:REQUEST_HEADER => 'RequestHeader',
|
100
|
+
# Auth constants for ClientLogin method.
|
101
|
+
@@client_login_config = {
|
102
|
+
:AUTH_SERVER => 'https://www.google.com',
|
96
103
|
:HEADER_NAMESPACE_PREAMBLE =>
|
97
104
|
'https://www.google.com/apis/ads/publisher/',
|
98
105
|
:LOGIN_SERVICE_NAME => 'gam'
|
@@ -121,24 +128,21 @@ module DfpApi
|
|
121
128
|
@@service_config
|
122
129
|
end
|
123
130
|
|
124
|
-
def self.environment_config
|
125
|
-
@@environment_config
|
131
|
+
def self.environment_config(environment, key)
|
132
|
+
return @@environment_config.include?(environment) ?
|
133
|
+
@@environment_config[environment][key] : nil
|
126
134
|
end
|
127
135
|
|
128
136
|
def self.subdir_config
|
129
137
|
nil
|
130
138
|
end
|
131
139
|
|
132
|
-
def self.
|
133
|
-
@@
|
140
|
+
def self.client_login_config(key)
|
141
|
+
return @@client_login_config[key]
|
134
142
|
end
|
135
143
|
|
136
144
|
def self.default_config_filename
|
137
145
|
DEFAULT_CONFIG_FILENAME
|
138
146
|
end
|
139
|
-
|
140
|
-
def self.headers_config
|
141
|
-
@@headers_config
|
142
|
-
end
|
143
147
|
end
|
144
148
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
#!/usr/bin/ruby
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Encoding: utf-8
|
2
3
|
#
|
3
4
|
# Authors:: api.dklimkin@gmail.com (Danial Klimkin)
|
4
5
|
#
|
@@ -19,14 +20,14 @@
|
|
19
20
|
#
|
20
21
|
# Handles SOAP headers and namespaces definition for ClientLogin type header.
|
21
22
|
|
22
|
-
require 'ads_common/savon_headers/
|
23
|
+
require 'ads_common/savon_headers/base_header_handler'
|
23
24
|
|
24
25
|
module DfpApi
|
25
|
-
class ClientLoginHeaderHandler < AdsCommon::SavonHeaders::
|
26
|
+
class ClientLoginHeaderHandler < AdsCommon::SavonHeaders::BaseHeaderHandler
|
26
27
|
private
|
27
28
|
|
28
|
-
# Generates
|
29
|
-
#
|
29
|
+
# Generates DFP API specific request header with ClientLogin data in
|
30
|
+
# required namespace.
|
30
31
|
#
|
31
32
|
# Args:
|
32
33
|
# - None
|
@@ -35,22 +36,17 @@ module DfpApi
|
|
35
36
|
# - Hash containing a header with filled in credentials
|
36
37
|
#
|
37
38
|
def generate_request_header()
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
else
|
50
|
-
request_header[prepend_namespace(header)] = value
|
51
|
-
end
|
52
|
-
request_header
|
53
|
-
end
|
39
|
+
request_header = super()
|
40
|
+
auth_header = prepend_namespace('authentication')
|
41
|
+
credentials = @credential_handler.credentials
|
42
|
+
request_header[auth_header] = {
|
43
|
+
prepend_namespace('token') => @auth_handler.get_token(credentials)
|
44
|
+
}
|
45
|
+
request_header[:attributes!] ||= {}
|
46
|
+
request_header[:attributes!][auth_header] = {
|
47
|
+
'xsi:type' => prepend_namespace('ClientLogin'),
|
48
|
+
}
|
49
|
+
return request_header
|
54
50
|
end
|
55
51
|
end
|
56
52
|
end
|
@@ -26,37 +26,29 @@ module DfpApi
|
|
26
26
|
class CredentialHandler < AdsCommon::CredentialHandler
|
27
27
|
# Create the list of credentials to be used by the auth handler for header
|
28
28
|
# generation.
|
29
|
-
def credentials(
|
30
|
-
|
29
|
+
def credentials(credentials_override = nil)
|
30
|
+
result = super(credentials_override)
|
31
|
+
validate_headers_for_server(result)
|
32
|
+
result[:extra_headers] = {
|
33
|
+
'applicationName' => generate_soap_user_agent(),
|
34
|
+
'networkCode' => result[:network_code]
|
35
|
+
}
|
36
|
+
return result
|
37
|
+
end
|
31
38
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
:auth_token => @credentials[:auth_token]}
|
37
|
-
when :OAUTH
|
38
|
-
{:oauth_consumer_key => @credentials[:oauth_consumer_key],
|
39
|
-
:oauth_consumer_secret => @credentials[:oauth_consumer_secret],
|
40
|
-
:oauth_verification_code => @credentials[:oauth_verification_code],
|
41
|
-
:oauth_token => @credentials[:oauth_token],
|
42
|
-
:oauth_token_secret => @credentials[:oauth_token_secret],
|
43
|
-
:oauth_callback => @credentials[:oauth_callback],
|
44
|
-
:oauth_method => @credentials[:oauth_method],
|
45
|
-
:oauth_request_token => @credentials[:oauth_request_token]}
|
46
|
-
end
|
47
|
-
client_lib = "DfpApi-Ruby-%s" % DfpApi::ApiConfig::CLIENT_LIB_VERSION
|
48
|
-
application_name = @credentials[:application_name] || $0
|
49
|
-
result[:applicationName] = "%s|%s" % [client_lib, application_name]
|
50
|
-
result[:networkCode] = @credentials[:network_code]
|
51
|
-
return result.reject {|k, v| v.nil?}
|
39
|
+
# Generates string to user as user agent in SOAP headers.
|
40
|
+
def generate_soap_user_agent(extra_ids = [])
|
41
|
+
extra_ids << ["DfpApi-Ruby-%s" % DfpApi::ApiConfig::CLIENT_LIB_VERSION]
|
42
|
+
super(extra_ids)
|
52
43
|
end
|
53
44
|
|
54
45
|
private
|
55
46
|
|
56
47
|
# Validates that the right credentials are being used for the chosen
|
57
48
|
# environment.
|
58
|
-
|
59
|
-
|
49
|
+
# TODO(dklimkin): implement NetworkCode check.
|
50
|
+
def validate_headers_for_server(credentials)
|
51
|
+
if credentials[:application_name].nil?
|
60
52
|
raise AdsCommon::Errors::AuthError, 'Application name is not specified'
|
61
53
|
end
|
62
54
|
return nil
|