google-adwords-api 0.9.2 → 0.9.3

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 (211) hide show
  1. data/ChangeLog +5 -0
  2. data/README +3 -3
  3. data/examples/v201302/account_management/create_account.rb +8 -0
  4. data/examples/v201302/account_management/get_account_alerts.rb +8 -0
  5. data/examples/v201302/account_management/get_account_changes.rb +8 -0
  6. data/examples/v201302/account_management/get_account_hierarchy.rb +8 -0
  7. data/examples/v201302/advanced_operations/add_ad_group_bid_modifier.rb +8 -0
  8. data/examples/v201302/advanced_operations/add_click_to_download_ad.rb +8 -0
  9. data/examples/v201302/advanced_operations/add_site_links.rb +8 -0
  10. data/examples/v201302/advanced_operations/create_and_attach_shared_keyword_set.rb +8 -0
  11. data/examples/v201302/advanced_operations/find_and_remove_criteria_from_shared_set.rb +8 -0
  12. data/examples/v201302/advanced_operations/get_ad_group_bid_modifiers.rb +8 -0
  13. data/examples/v201302/basic_operations/add_ad_groups.rb +8 -0
  14. data/examples/v201302/basic_operations/add_campaigns.rb +8 -0
  15. data/examples/v201302/basic_operations/add_keywords.rb +8 -0
  16. data/examples/v201302/basic_operations/add_text_ads.rb +8 -0
  17. data/examples/v201302/basic_operations/delete_ad.rb +8 -0
  18. data/examples/v201302/basic_operations/delete_ad_group.rb +8 -0
  19. data/examples/v201302/basic_operations/delete_campaign.rb +8 -0
  20. data/examples/v201302/basic_operations/delete_keyword.rb +8 -0
  21. data/examples/v201302/basic_operations/get_ad_groups.rb +8 -0
  22. data/examples/v201302/basic_operations/get_campaigns.rb +8 -0
  23. data/examples/v201302/basic_operations/get_campaigns_with_awql.rb +8 -0
  24. data/examples/v201302/basic_operations/get_keywords.rb +8 -0
  25. data/examples/v201302/basic_operations/get_text_ads.rb +8 -0
  26. data/examples/v201302/basic_operations/pause_ad.rb +8 -0
  27. data/examples/v201302/basic_operations/update_ad_group.rb +8 -0
  28. data/examples/v201302/basic_operations/update_campaign.rb +8 -0
  29. data/examples/v201302/basic_operations/update_keyword.rb +8 -0
  30. data/examples/v201302/campaign_management/add_experiment.rb +8 -0
  31. data/examples/v201302/campaign_management/add_keywords_in_bulk.rb +8 -0
  32. data/examples/v201302/campaign_management/add_location_extension.rb +8 -0
  33. data/examples/v201302/campaign_management/add_location_extension_override.rb +8 -0
  34. data/examples/v201302/campaign_management/get_all_disapproved_ads.rb +8 -0
  35. data/examples/v201302/campaign_management/get_all_disapproved_ads_with_awql.rb +8 -0
  36. data/examples/v201302/campaign_management/promote_experiment.rb +8 -0
  37. data/examples/v201302/campaign_management/set_ad_parameters.rb +8 -0
  38. data/examples/v201302/campaign_management/set_criterion_bid_modifier.rb +8 -0
  39. data/examples/v201302/campaign_management/validate_text_ad.rb +8 -0
  40. data/examples/v201302/error_handling/handle_partial_failures.rb +8 -0
  41. data/examples/v201302/error_handling/handle_policy_violation_error.rb +8 -0
  42. data/examples/v201302/migration/set_campaign_enhanced.rb +8 -0
  43. data/examples/v201302/migration/upgrade_legacy_sitelinks.rb +8 -0
  44. data/examples/v201302/misc/get_all_images_and_videos.rb +8 -0
  45. data/examples/v201302/misc/{use_oauth2.rb → setup_oauth2.rb} +16 -25
  46. data/examples/v201302/misc/upload_image.rb +8 -0
  47. data/examples/v201302/optimization/estimate_keyword_traffic.rb +8 -0
  48. data/examples/v201302/optimization/get_keyword_bid_simulations.rb +8 -0
  49. data/examples/v201302/optimization/get_keyword_ideas.rb +8 -0
  50. data/examples/v201302/optimization/get_placement_ideas.rb +8 -0
  51. data/examples/v201302/remarketing/add_audience.rb +8 -0
  52. data/examples/v201302/remarketing/add_conversion_tracker.rb +8 -0
  53. data/examples/v201302/reporting/download_criteria_report.rb +8 -0
  54. data/examples/v201302/reporting/download_criteria_report_with_awql.rb +8 -0
  55. data/examples/v201302/reporting/get_campaign_stats.rb +8 -0
  56. data/examples/v201302/reporting/get_report_fields.rb +8 -0
  57. data/examples/v201302/reporting/parallel_report_download.rb +8 -0
  58. data/examples/v201302/targeting/add_campaign_targeting_criteria.rb +8 -0
  59. data/examples/v201302/targeting/add_demographic_targeting_criteria.rb +8 -0
  60. data/examples/v201302/targeting/get_campaign_targeting_criteria.rb +8 -0
  61. data/examples/v201302/targeting/get_targetable_languages_and_carriers.rb +8 -0
  62. data/examples/v201302/targeting/lookup_location.rb +8 -0
  63. data/examples/v201306/account_management/create_account.rb +95 -0
  64. data/examples/v201306/account_management/get_account_alerts.rb +122 -0
  65. data/examples/v201306/account_management/get_account_changes.rb +145 -0
  66. data/examples/v201306/account_management/get_account_hierarchy.rb +103 -0
  67. data/examples/v201306/advanced_operations/add_ad_group_bid_modifier.rb +105 -0
  68. data/examples/v201306/advanced_operations/add_click_to_download_ad.rb +137 -0
  69. data/examples/v201306/advanced_operations/add_site_links.rb +244 -0
  70. data/examples/v201306/advanced_operations/create_and_attach_shared_keyword_set.rb +147 -0
  71. data/examples/v201306/advanced_operations/find_and_remove_criteria_from_shared_set.rb +181 -0
  72. data/examples/v201306/advanced_operations/get_ad_group_bid_modifiers.rb +106 -0
  73. data/examples/v201306/basic_operations/add_ad_groups.rb +143 -0
  74. data/examples/v201306/basic_operations/add_campaigns.rb +162 -0
  75. data/examples/v201306/basic_operations/add_keywords.rb +116 -0
  76. data/examples/v201306/basic_operations/add_text_ads.rb +113 -0
  77. data/examples/v201306/basic_operations/delete_ad.rb +93 -0
  78. data/examples/v201306/basic_operations/delete_ad_group.rb +110 -0
  79. data/examples/v201306/basic_operations/delete_campaign.rb +111 -0
  80. data/examples/v201306/basic_operations/delete_keyword.rb +98 -0
  81. data/examples/v201306/basic_operations/get_ad_groups.rb +106 -0
  82. data/examples/v201306/basic_operations/get_campaigns.rb +101 -0
  83. data/examples/v201306/basic_operations/get_campaigns_with_awql.rb +93 -0
  84. data/examples/v201306/basic_operations/get_keywords.rb +112 -0
  85. data/examples/v201306/basic_operations/get_text_ads.rb +114 -0
  86. data/examples/v201306/basic_operations/pause_ad.rb +92 -0
  87. data/examples/v201306/basic_operations/update_ad_group.rb +89 -0
  88. data/examples/v201306/basic_operations/update_campaign.rb +90 -0
  89. data/examples/v201306/basic_operations/update_keyword.rb +110 -0
  90. data/examples/v201306/campaign_management/add_experiment.rb +166 -0
  91. data/examples/v201306/campaign_management/add_keywords_in_bulk.rb +158 -0
  92. data/examples/v201306/campaign_management/add_location_extension.rb +125 -0
  93. data/examples/v201306/campaign_management/add_location_extension_override.rb +91 -0
  94. data/examples/v201306/campaign_management/get_all_disapproved_ads.rb +101 -0
  95. data/examples/v201306/campaign_management/get_all_disapproved_ads_with_awql.rb +92 -0
  96. data/examples/v201306/campaign_management/promote_experiment.rb +85 -0
  97. data/examples/v201306/campaign_management/set_ad_parameters.rb +122 -0
  98. data/examples/v201306/campaign_management/set_criterion_bid_modifier.rb +110 -0
  99. data/examples/v201306/campaign_management/validate_text_ad.rb +114 -0
  100. data/examples/v201306/error_handling/handle_captcha_challenge.rb +93 -0
  101. data/examples/v201306/error_handling/handle_partial_failures.rb +134 -0
  102. data/examples/v201306/error_handling/handle_policy_violation_error.rb +145 -0
  103. data/examples/v201306/error_handling/handle_two_factor_authorization_error.rb +88 -0
  104. data/examples/v201306/migration/upgrade_legacy_sitelinks.rb +313 -0
  105. data/examples/v201306/misc/get_all_images_and_videos.rb +108 -0
  106. data/examples/v201306/misc/setup_oauth2.rb +88 -0
  107. data/examples/v201306/misc/upload_image.rb +97 -0
  108. data/examples/v201306/misc/use_oauth2_jwt.rb +93 -0
  109. data/examples/v201306/optimization/estimate_keyword_traffic.rb +137 -0
  110. data/examples/v201306/optimization/get_keyword_bid_simulations.rb +100 -0
  111. data/examples/v201306/optimization/get_keyword_ideas.rb +130 -0
  112. data/examples/v201306/optimization/get_placement_ideas.rb +112 -0
  113. data/examples/v201306/remarketing/add_audience.rb +123 -0
  114. data/examples/v201306/remarketing/add_conversion_tracker.rb +104 -0
  115. data/examples/v201306/reporting/download_criteria_report.rb +87 -0
  116. data/examples/v201306/reporting/download_criteria_report_with_awql.rb +86 -0
  117. data/examples/v201306/reporting/get_campaign_stats.rb +113 -0
  118. data/examples/v201306/reporting/get_report_fields.rb +79 -0
  119. data/examples/v201306/reporting/parallel_report_download.rb +171 -0
  120. data/examples/v201306/targeting/add_campaign_targeting_criteria.rb +123 -0
  121. data/examples/v201306/targeting/add_demographic_targeting_criteria.rb +116 -0
  122. data/examples/v201306/targeting/get_campaign_targeting_criteria.rb +110 -0
  123. data/examples/v201306/targeting/get_targetable_languages_and_carriers.rb +94 -0
  124. data/examples/v201306/targeting/lookup_location.rb +112 -0
  125. data/lib/adwords_api/api_config.rb +80 -4
  126. data/lib/adwords_api/v201306/ad_extension_override_service.rb +38 -0
  127. data/lib/adwords_api/v201306/ad_extension_override_service_registry.rb +46 -0
  128. data/lib/adwords_api/v201306/ad_group_ad_service.rb +42 -0
  129. data/lib/adwords_api/v201306/ad_group_ad_service_registry.rb +46 -0
  130. data/lib/adwords_api/v201306/ad_group_bid_modifier_service.rb +38 -0
  131. data/lib/adwords_api/v201306/ad_group_bid_modifier_service_registry.rb +46 -0
  132. data/lib/adwords_api/v201306/ad_group_criterion_service.rb +42 -0
  133. data/lib/adwords_api/v201306/ad_group_criterion_service_registry.rb +46 -0
  134. data/lib/adwords_api/v201306/ad_group_feed_service.rb +38 -0
  135. data/lib/adwords_api/v201306/ad_group_feed_service_registry.rb +46 -0
  136. data/lib/adwords_api/v201306/ad_group_service.rb +42 -0
  137. data/lib/adwords_api/v201306/ad_group_service_registry.rb +46 -0
  138. data/lib/adwords_api/v201306/ad_param_service.rb +38 -0
  139. data/lib/adwords_api/v201306/ad_param_service_registry.rb +46 -0
  140. data/lib/adwords_api/v201306/adwords_user_list_service.rb +38 -0
  141. data/lib/adwords_api/v201306/adwords_user_list_service_registry.rb +46 -0
  142. data/lib/adwords_api/v201306/alert_service.rb +34 -0
  143. data/lib/adwords_api/v201306/alert_service_registry.rb +46 -0
  144. data/lib/adwords_api/v201306/bidding_strategy_service.rb +38 -0
  145. data/lib/adwords_api/v201306/bidding_strategy_service_registry.rb +46 -0
  146. data/lib/adwords_api/v201306/budget_order_service.rb +42 -0
  147. data/lib/adwords_api/v201306/budget_order_service_registry.rb +46 -0
  148. data/lib/adwords_api/v201306/budget_service.rb +38 -0
  149. data/lib/adwords_api/v201306/budget_service_registry.rb +46 -0
  150. data/lib/adwords_api/v201306/campaign_ad_extension_service.rb +38 -0
  151. data/lib/adwords_api/v201306/campaign_ad_extension_service_registry.rb +46 -0
  152. data/lib/adwords_api/v201306/campaign_criterion_service.rb +42 -0
  153. data/lib/adwords_api/v201306/campaign_criterion_service_registry.rb +46 -0
  154. data/lib/adwords_api/v201306/campaign_feed_service.rb +38 -0
  155. data/lib/adwords_api/v201306/campaign_feed_service_registry.rb +46 -0
  156. data/lib/adwords_api/v201306/campaign_service.rb +42 -0
  157. data/lib/adwords_api/v201306/campaign_service_registry.rb +46 -0
  158. data/lib/adwords_api/v201306/campaign_shared_set_service.rb +38 -0
  159. data/lib/adwords_api/v201306/campaign_shared_set_service_registry.rb +47 -0
  160. data/lib/adwords_api/v201306/constant_data_service.rb +62 -0
  161. data/lib/adwords_api/v201306/constant_data_service_registry.rb +46 -0
  162. data/lib/adwords_api/v201306/conversion_tracker_service.rb +38 -0
  163. data/lib/adwords_api/v201306/conversion_tracker_service_registry.rb +46 -0
  164. data/lib/adwords_api/v201306/customer_service.rb +34 -0
  165. data/lib/adwords_api/v201306/customer_service_registry.rb +46 -0
  166. data/lib/adwords_api/v201306/customer_sync_service.rb +34 -0
  167. data/lib/adwords_api/v201306/customer_sync_service_registry.rb +47 -0
  168. data/lib/adwords_api/v201306/data_service.rb +38 -0
  169. data/lib/adwords_api/v201306/data_service_registry.rb +46 -0
  170. data/lib/adwords_api/v201306/experiment_service.rb +38 -0
  171. data/lib/adwords_api/v201306/experiment_service_registry.rb +46 -0
  172. data/lib/adwords_api/v201306/feed_item_service.rb +38 -0
  173. data/lib/adwords_api/v201306/feed_item_service_registry.rb +46 -0
  174. data/lib/adwords_api/v201306/feed_mapping_service.rb +38 -0
  175. data/lib/adwords_api/v201306/feed_mapping_service_registry.rb +46 -0
  176. data/lib/adwords_api/v201306/feed_service.rb +38 -0
  177. data/lib/adwords_api/v201306/feed_service_registry.rb +46 -0
  178. data/lib/adwords_api/v201306/geo_location_service.rb +34 -0
  179. data/lib/adwords_api/v201306/geo_location_service_registry.rb +46 -0
  180. data/lib/adwords_api/v201306/location_criterion_service.rb +34 -0
  181. data/lib/adwords_api/v201306/location_criterion_service_registry.rb +46 -0
  182. data/lib/adwords_api/v201306/managed_customer_service.rb +50 -0
  183. data/lib/adwords_api/v201306/managed_customer_service_registry.rb +46 -0
  184. data/lib/adwords_api/v201306/media_service.rb +38 -0
  185. data/lib/adwords_api/v201306/media_service_registry.rb +46 -0
  186. data/lib/adwords_api/v201306/mutate_job_service.rb +42 -0
  187. data/lib/adwords_api/v201306/mutate_job_service_registry.rb +46 -0
  188. data/lib/adwords_api/v201306/report_definition_service.rb +34 -0
  189. data/lib/adwords_api/v201306/report_definition_service_registry.rb +46 -0
  190. data/lib/adwords_api/v201306/shared_criterion_service.rb +38 -0
  191. data/lib/adwords_api/v201306/shared_criterion_service_registry.rb +47 -0
  192. data/lib/adwords_api/v201306/shared_set_service.rb +38 -0
  193. data/lib/adwords_api/v201306/shared_set_service_registry.rb +47 -0
  194. data/lib/adwords_api/v201306/targeting_idea_service.rb +38 -0
  195. data/lib/adwords_api/v201306/targeting_idea_service_registry.rb +46 -0
  196. data/lib/adwords_api/v201306/traffic_estimator_service.rb +34 -0
  197. data/lib/adwords_api/v201306/traffic_estimator_service_registry.rb +46 -0
  198. data/lib/adwords_api/version.rb +1 -1
  199. data/test/adwords_api/test_adwords_api.rb +1 -1
  200. data/test/adwords_api/test_api_config.rb +8 -8
  201. data/test/adwords_api/test_report_utils.rb +1 -1
  202. data/test/bugs/test_issue_00000031.rb +2 -2
  203. data/test/bugs/test_issue_00000063.rb +6 -6
  204. data/test/suite_exampletests_v201302.rb +1 -1
  205. data/test/suite_exampletests_v201306.rb +37 -0
  206. data/test/templates/v201209/basic_operations_get_campaigns.def +1 -1
  207. data/test/templates/v201302/basic_operations_get_campaigns.def +1 -1
  208. data/test/templates/v201302/misc_use_oauth2_jwt.def +1 -1
  209. data/test/templates/v201306/basic_operations_get_campaigns.def +114 -0
  210. data/test/templates/v201306/misc_use_oauth2_jwt.def +131 -0
  211. metadata +142 -5
@@ -140,6 +140,14 @@ if __FILE__ == $0
140
140
  criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
141
141
  add_experiment(campaign_id, ad_group_id, criterion_id)
142
142
 
143
+ # Authorization error.
144
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
145
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
146
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
147
+ "to retrieve and store OAuth2 tokens."
148
+ puts "See this wiki page for more details:\n\n " +
149
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
150
+
143
151
  # HTTP errors.
144
152
  rescue AdsCommon::Errors::HttpError => e
145
153
  puts "HTTP Error: %s" % e
@@ -132,6 +132,14 @@ if __FILE__ == $0
132
132
  begin
133
133
  add_keywords_in_bulk()
134
134
 
135
+ # Authorization error.
136
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
137
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
138
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
139
+ "to retrieve and store OAuth2 tokens."
140
+ puts "See this wiki page for more details:\n\n " +
141
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
142
+
135
143
  # HTTP errors.
136
144
  rescue AdsCommon::Errors::HttpError => e
137
145
  puts "HTTP Error: %s" % e
@@ -99,6 +99,14 @@ if __FILE__ == $0
99
99
  campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
100
100
  add_location_extension(campaign_id)
101
101
 
102
+ # Authorization error.
103
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
104
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
105
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
106
+ "to retrieve and store OAuth2 tokens."
107
+ puts "See this wiki page for more details:\n\n " +
108
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
109
+
102
110
  # HTTP errors.
103
111
  rescue AdsCommon::Errors::HttpError => e
104
112
  puts "HTTP Error: %s" % e
@@ -65,6 +65,14 @@ if __FILE__ == $0
65
65
  location_extension_id = 'INSERT_LOCATION_EXTENSION_ID_HERE'.to_i
66
66
  add_location_extension_override(ad_id, location_extension_id)
67
67
 
68
+ # Authorization error.
69
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
70
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
71
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
72
+ "to retrieve and store OAuth2 tokens."
73
+ puts "See this wiki page for more details:\n\n " +
74
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
75
+
68
76
  # HTTP errors.
69
77
  rescue AdsCommon::Errors::HttpError => e
70
78
  puts "HTTP Error: %s" % e
@@ -75,6 +75,14 @@ if __FILE__ == $0
75
75
  ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
76
76
  get_all_disapproved_ads(ad_group_id)
77
77
 
78
+ # Authorization error.
79
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
80
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
81
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
82
+ "to retrieve and store OAuth2 tokens."
83
+ puts "See this wiki page for more details:\n\n " +
84
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
85
+
78
86
  # HTTP errors.
79
87
  rescue AdsCommon::Errors::HttpError => e
80
88
  puts "HTTP Error: %s" % e
@@ -66,6 +66,14 @@ if __FILE__ == $0
66
66
  ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
67
67
  get_all_disapproved_ads_with_awql(ad_group_id)
68
68
 
69
+ # Authorization error.
70
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
71
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
72
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
73
+ "to retrieve and store OAuth2 tokens."
74
+ puts "See this wiki page for more details:\n\n " +
75
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
76
+
69
77
  # HTTP errors.
70
78
  rescue AdsCommon::Errors::HttpError => e
71
79
  puts 'HTTP Error: %s' % e
@@ -59,6 +59,14 @@ if __FILE__ == $0
59
59
  experiment_id = 'INSERT_EXPERIMENT_ID_HERE'.to_i
60
60
  promote_experiment(experiment_id)
61
61
 
62
+ # Authorization error.
63
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
64
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
65
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
66
+ "to retrieve and store OAuth2 tokens."
67
+ puts "See this wiki page for more details:\n\n " +
68
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
69
+
62
70
  # HTTP errors.
63
71
  rescue AdsCommon::Errors::HttpError => e
64
72
  puts "HTTP Error: %s" % e
@@ -96,6 +96,14 @@ if __FILE__ == $0
96
96
  criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
97
97
  set_ad_parameters(ad_group_id, criterion_id)
98
98
 
99
+ # Authorization error.
100
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
101
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
102
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
103
+ "to retrieve and store OAuth2 tokens."
104
+ puts "See this wiki page for more details:\n\n " +
105
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
106
+
99
107
  # HTTP errors.
100
108
  rescue AdsCommon::Errors::HttpError => e
101
109
  puts "HTTP Error: %s" % e
@@ -84,6 +84,14 @@ if __FILE__ == $0
84
84
 
85
85
  set_criterion_bid_modifier(campaign_id, bid_modifier)
86
86
 
87
+ # Authorization error.
88
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
89
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
90
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
91
+ "to retrieve and store OAuth2 tokens."
92
+ puts "See this wiki page for more details:\n\n " +
93
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
94
+
87
95
  # HTTP errors.
88
96
  rescue AdsCommon::Errors::HttpError => e
89
97
  puts "HTTP Error: %s" % e
@@ -88,6 +88,14 @@ if __FILE__ == $0
88
88
  ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
89
89
  validate_text_ad(ad_group_id)
90
90
 
91
+ # Authorization error.
92
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
93
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
94
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
95
+ "to retrieve and store OAuth2 tokens."
96
+ puts "See this wiki page for more details:\n\n " +
97
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
98
+
91
99
  # HTTP errors.
92
100
  rescue AdsCommon::Errors::HttpError => e
93
101
  puts "HTTP Error: %s" % e
@@ -108,6 +108,14 @@ if __FILE__ == $0
108
108
  ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
109
109
  handle_partial_failures(ad_group_id)
110
110
 
111
+ # Authorization error.
112
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
113
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
114
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
115
+ "to retrieve and store OAuth2 tokens."
116
+ puts "See this wiki page for more details:\n\n " +
117
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
118
+
111
119
  # HTTP errors.
112
120
  rescue AdsCommon::Errors::HttpError => e
113
121
  puts "HTTP Error: %s" % e
@@ -119,6 +119,14 @@ if __FILE__ == $0
119
119
  ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
120
120
  handle_policy_violation_error(ad_group_id)
121
121
 
122
+ # Authorization error.
123
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
124
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
125
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
126
+ "to retrieve and store OAuth2 tokens."
127
+ puts "See this wiki page for more details:\n\n " +
128
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
129
+
122
130
  # HTTP errors.
123
131
  rescue AdsCommon::Errors::HttpError => e
124
132
  puts "HTTP Error: %s" % e
@@ -65,6 +65,14 @@ if __FILE__ == $0
65
65
  campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
66
66
  set_campaign_enhanced(campaign_id)
67
67
 
68
+ # Authorization error.
69
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
70
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
71
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
72
+ "to retrieve and store OAuth2 tokens."
73
+ puts "See this wiki page for more details:\n\n " +
74
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
75
+
68
76
  # HTTP errors.
69
77
  rescue AdsCommon::Errors::HttpError => e
70
78
  puts "HTTP Error: %s" % e
@@ -287,6 +287,14 @@ if __FILE__ == $0
287
287
 
288
288
  upgrade_legacy_sitelinks(campaign_ids)
289
289
 
290
+ # Authorization error.
291
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
292
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
293
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
294
+ "to retrieve and store OAuth2 tokens."
295
+ puts "See this wiki page for more details:\n\n " +
296
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
297
+
290
298
  # HTTP errors.
291
299
  rescue AdsCommon::Errors::HttpError => e
292
300
  puts "HTTP Error: %s" % e
@@ -82,6 +82,14 @@ if __FILE__ == $0
82
82
  begin
83
83
  get_all_images_and_videos()
84
84
 
85
+ # Authorization error.
86
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
87
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
88
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
89
+ "to retrieve and store OAuth2 tokens."
90
+ puts "See this wiki page for more details:\n\n " +
91
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
92
+
85
93
  # HTTP errors.
86
94
  rescue AdsCommon::Errors::HttpError => e
87
95
  puts "HTTP Error: %s" % e
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
5
  #
6
- # Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
6
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
7
  #
8
8
  # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
9
  # you may not use this file except in compliance with the License.
@@ -18,13 +18,13 @@
18
18
  # See the License for the specific language governing permissions and
19
19
  # limitations under the License.
20
20
  #
21
- # This example illustrates how to use OAuth2.0 authentication method.
21
+ # This example illustrates how to set up OAuth2.0 authentication credentials.
22
22
  #
23
23
  # Tags: CampaignService.get
24
24
 
25
25
  require 'adwords_api'
26
26
 
27
- def use_oauth2()
27
+ def setup_oauth2()
28
28
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
29
29
  # when called without parameters.
30
30
  adwords = AdwordsApi::Api.new
@@ -42,6 +42,17 @@ def use_oauth2()
42
42
  verification_code = gets.chomp
43
43
  verification_code
44
44
  end
45
+ if token
46
+ print "\nWould you like to update your adwords_api.yml to save " +
47
+ "OAuth2 crdentials? (y/N): "
48
+ response = gets.chomp
49
+ if ('y'.casecmp(response) == 0) or ('yes'.casecmp(response) == 0)
50
+ adwords.save_oauth2_token(token)
51
+ puts 'OAuth2 token is now saved to ~/adwords_api.yml and will be ' +
52
+ 'automatically used by the library.'
53
+ end
54
+ end
55
+
45
56
  # Alternatively, you can provide one within the parameters:
46
57
  #token = adwords.authorize({:oauth2_verification_code => verification_code})
47
58
 
@@ -50,34 +61,14 @@ def use_oauth2()
50
61
  # should persist it to be used in subsequent invocations like this:
51
62
  #adwords.authorize({:oauth2_token => token})
52
63
 
53
- # No exception thrown - we are good to make the request.
54
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
55
-
56
- # Get all the campaigns for this account; empty selector.
57
- selector = {
58
- :fields => ['Id', 'Name', 'Status'],
59
- :ordering => [
60
- {:field => 'Name', :sort_order => 'ASCENDING'}
61
- ]
62
- }
63
-
64
- response = campaign_srv.get(selector)
65
- if response and response[:entries]
66
- campaigns = response[:entries]
67
- campaigns.each do |campaign|
68
- puts "Campaign ID %d, name '%s' and status '%s'" %
69
- [campaign[:id], campaign[:name], campaign[:status]]
70
- end
71
- else
72
- puts 'No campaigns were found.'
73
- end
64
+ # No exception thrown - we are good to make a request.
74
65
  end
75
66
 
76
67
  if __FILE__ == $0
77
68
  API_VERSION = :v201302
78
69
 
79
70
  begin
80
- use_oauth2()
71
+ setup_oauth2()
81
72
 
82
73
  # HTTP errors.
83
74
  rescue AdsCommon::Errors::HttpError => e
@@ -71,6 +71,14 @@ if __FILE__ == $0
71
71
  begin
72
72
  upload_image()
73
73
 
74
+ # Authorization error.
75
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
76
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
77
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
78
+ "to retrieve and store OAuth2 tokens."
79
+ puts "See this wiki page for more details:\n\n " +
80
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
81
+
74
82
  # HTTP errors.
75
83
  rescue AdsCommon::Errors::HttpError => e
76
84
  puts "HTTP Error: %s" % e
@@ -111,6 +111,14 @@ if __FILE__ == $0
111
111
  begin
112
112
  estimate_keyword_traffic()
113
113
 
114
+ # Authorization error.
115
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
116
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
117
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
118
+ "to retrieve and store OAuth2 tokens."
119
+ puts "See this wiki page for more details:\n\n " +
120
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
121
+
114
122
  # HTTP errors.
115
123
  rescue AdsCommon::Errors::HttpError => e
116
124
  puts "HTTP Error: %s" % e
@@ -74,6 +74,14 @@ if __FILE__ == $0
74
74
  keyword_id = 'INSERT_KEYWORD_ID_HERE'.to_i
75
75
  get_criterion_bid_landscapes(ad_group_id, keyword_id)
76
76
 
77
+ # Authorization error.
78
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
79
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
80
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
81
+ "to retrieve and store OAuth2 tokens."
82
+ puts "See this wiki page for more details:\n\n " +
83
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
84
+
77
85
  # HTTP errors.
78
86
  rescue AdsCommon::Errors::HttpError => e
79
87
  puts "HTTP Error: %s" % e
@@ -104,6 +104,14 @@ if __FILE__ == $0
104
104
  keyword_text = 'INSERT_KEYWORD_TEXT_HERE'
105
105
  get_keyword_ideas(keyword_text)
106
106
 
107
+ # Authorization error.
108
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
109
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
110
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
111
+ "to retrieve and store OAuth2 tokens."
112
+ puts "See this wiki page for more details:\n\n " +
113
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
114
+
107
115
  # HTTP errors.
108
116
  rescue AdsCommon::Errors::HttpError => e
109
117
  puts "HTTP Error: %s" % e
@@ -86,6 +86,14 @@ if __FILE__ == $0
86
86
  url = 'INSERT_PLACEMENT_URL_HERE'
87
87
  get_placement_ideas(url)
88
88
 
89
+ # Authorization error.
90
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
91
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
92
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
93
+ "to retrieve and store OAuth2 tokens."
94
+ puts "See this wiki page for more details:\n\n " +
95
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
96
+
89
97
  # HTTP errors.
90
98
  rescue AdsCommon::Errors::HttpError => e
91
99
  puts "HTTP Error: %s" % e
@@ -97,6 +97,14 @@ if __FILE__ == $0
97
97
  begin
98
98
  add_audience()
99
99
 
100
+ # Authorization error.
101
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
102
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
103
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
104
+ "to retrieve and store OAuth2 tokens."
105
+ puts "See this wiki page for more details:\n\n " +
106
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
107
+
100
108
  # HTTP errors.
101
109
  rescue AdsCommon::Errors::HttpError => e
102
110
  puts "HTTP Error: %s" % e
@@ -78,6 +78,14 @@ if __FILE__ == $0
78
78
  begin
79
79
  add_conversion_tracker()
80
80
 
81
+ # Authorization error.
82
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
83
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
84
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
85
+ "to retrieve and store OAuth2 tokens."
86
+ puts "See this wiki page for more details:\n\n " +
87
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
88
+
81
89
  # HTTP errors.
82
90
  rescue AdsCommon::Errors::HttpError => e
83
91
  puts "HTTP Error: %s" % e
@@ -68,6 +68,14 @@ if __FILE__ == $0
68
68
  file_name = 'INSERT_OUTPUT_FILE_NAME_HERE'
69
69
  download_criteria_report(file_name)
70
70
 
71
+ # Authorization error.
72
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
73
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
74
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
75
+ "to retrieve and store OAuth2 tokens."
76
+ puts "See this wiki page for more details:\n\n " +
77
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
78
+
71
79
  # HTTP errors.
72
80
  rescue AdsCommon::Errors::HttpError => e
73
81
  puts "HTTP Error: %s" % e
@@ -67,6 +67,14 @@ if __FILE__ == $0
67
67
  report_format = 'CSV'
68
68
  download_criteria_report_with_awql(file_name, report_format)
69
69
 
70
+ # Authorization error.
71
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
72
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
73
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
74
+ "to retrieve and store OAuth2 tokens."
75
+ puts "See this wiki page for more details:\n\n " +
76
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
77
+
70
78
  # HTTP errors.
71
79
  rescue AdsCommon::Errors::HttpError => e
72
80
  puts 'HTTP Error: %s' % e