google-adwords-api 0.7.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (274) hide show
  1. data/ChangeLog +6 -0
  2. data/README +12 -9
  3. data/adwords_api.yml +3 -17
  4. data/examples/v201206/account_management/create_account.rb +3 -0
  5. data/examples/v201206/account_management/get_account_alerts.rb +3 -0
  6. data/examples/v201206/account_management/get_account_hierarchy.rb +3 -0
  7. data/examples/v201206/account_management/get_client_customer_id.rb +3 -0
  8. data/examples/v201206/account_management/get_client_unit_usage.rb +3 -0
  9. data/examples/v201206/reporting/parallel_report_download.rb +3 -0
  10. data/examples/v201209/account_management/create_account.rb +3 -0
  11. data/examples/v201209/account_management/get_account_alerts.rb +3 -0
  12. data/examples/v201209/account_management/get_account_hierarchy.rb +3 -0
  13. data/examples/v201209/account_management/get_client_customer_id.rb +3 -0
  14. data/examples/v201209/account_management/get_client_unit_usage.rb +3 -0
  15. data/examples/{v201109/misc/use_oauth2.rb → v201209/misc/use_oauth2_jwt.rb} +19 -23
  16. data/examples/v201209/reporting/parallel_report_download.rb +3 -0
  17. data/lib/adwords_api.rb +8 -3
  18. data/lib/adwords_api/api_config.rb +0 -132
  19. data/lib/adwords_api/credential_handler.rb +3 -17
  20. data/lib/adwords_api/report_header_handler.rb +1 -2
  21. data/lib/adwords_api/report_utils.rb +1 -8
  22. data/lib/adwords_api/version.rb +1 -1
  23. data/test/adwords_api/test_adwords_api.rb +23 -9
  24. data/test/adwords_api/test_api_config.rb +0 -8
  25. data/test/adwords_api/test_credential_handler.rb +45 -9
  26. data/test/adwords_api/test_report_utils.rb +3 -2
  27. data/test/{suite_exampletests_v201109.rb → suite_integration.rb} +14 -11
  28. data/test/templates/v201209/basic_operations_get_campaigns.def +114 -0
  29. data/test/test_utils.rb +105 -0
  30. metadata +8 -250
  31. data/examples/v201109/account_management/create_account.rb +0 -80
  32. data/examples/v201109/account_management/get_account_alerts.rb +0 -111
  33. data/examples/v201109/account_management/get_account_changes.rb +0 -137
  34. data/examples/v201109/account_management/get_account_hierarchy.rb +0 -93
  35. data/examples/v201109/account_management/get_client_customer_id.rb +0 -85
  36. data/examples/v201109/account_management/get_client_unit_usage.rb +0 -87
  37. data/examples/v201109/basic_operations/add_ad_groups.rb +0 -111
  38. data/examples/v201109/basic_operations/add_campaigns.rb +0 -125
  39. data/examples/v201109/basic_operations/add_keywords.rb +0 -108
  40. data/examples/v201109/basic_operations/add_text_ads.rb +0 -105
  41. data/examples/v201109/basic_operations/delete_ad.rb +0 -85
  42. data/examples/v201109/basic_operations/delete_ad_group.rb +0 -102
  43. data/examples/v201109/basic_operations/delete_campaign.rb +0 -103
  44. data/examples/v201109/basic_operations/delete_keyword.rb +0 -90
  45. data/examples/v201109/basic_operations/get_ad_groups.rb +0 -98
  46. data/examples/v201109/basic_operations/get_campaigns.rb +0 -93
  47. data/examples/v201109/basic_operations/get_keywords.rb +0 -104
  48. data/examples/v201109/basic_operations/get_text_ads.rb +0 -106
  49. data/examples/v201109/basic_operations/pause_ad.rb +0 -84
  50. data/examples/v201109/basic_operations/update_ad_group.rb +0 -81
  51. data/examples/v201109/basic_operations/update_campaign.rb +0 -84
  52. data/examples/v201109/basic_operations/update_keyword.rb +0 -99
  53. data/examples/v201109/campaign_management/add_experiment.rb +0 -158
  54. data/examples/v201109/campaign_management/add_keywords_in_bulk.rb +0 -150
  55. data/examples/v201109/campaign_management/add_location_extension.rb +0 -117
  56. data/examples/v201109/campaign_management/add_location_extension_override.rb +0 -83
  57. data/examples/v201109/campaign_management/get_all_disapproved_ads.rb +0 -93
  58. data/examples/v201109/campaign_management/promote_experiment.rb +0 -77
  59. data/examples/v201109/campaign_management/set_ad_parameters.rb +0 -114
  60. data/examples/v201109/campaign_management/validate_text_ad.rb +0 -106
  61. data/examples/v201109/error_handling/handle_captcha_challenge.rb +0 -93
  62. data/examples/v201109/error_handling/handle_partial_failures.rb +0 -126
  63. data/examples/v201109/error_handling/handle_policy_violation_error.rb +0 -137
  64. data/examples/v201109/error_handling/handle_two_factor_authorization_error.rb +0 -87
  65. data/examples/v201109/misc/get_all_images_and_videos.rb +0 -100
  66. data/examples/v201109/misc/upload_image.rb +0 -89
  67. data/examples/v201109/misc/use_oauth.rb +0 -100
  68. data/examples/v201109/optimization/estimate_keyword_traffic.rb +0 -129
  69. data/examples/v201109/optimization/get_keyword_bid_simulations.rb +0 -92
  70. data/examples/v201109/optimization/get_keyword_ideas.rb +0 -106
  71. data/examples/v201109/optimization/get_placement_ideas.rb +0 -104
  72. data/examples/v201109/remarketing/add_audience.rb +0 -115
  73. data/examples/v201109/remarketing/add_conversion_tracker.rb +0 -97
  74. data/examples/v201109/reporting/download_criteria_report.rb +0 -79
  75. data/examples/v201109/reporting/get_campaign_stats.rb +0 -105
  76. data/examples/v201109/reporting/get_defined_reports.rb +0 -75
  77. data/examples/v201109/reporting/get_report_fields.rb +0 -71
  78. data/examples/v201109/reporting/parallel_report_download.rb +0 -159
  79. data/examples/v201109/targeting/add_campaign_targeting_criteria.rb +0 -118
  80. data/examples/v201109/targeting/get_campaign_targeting_criteria.rb +0 -102
  81. data/examples/v201109/targeting/get_targetable_languages_and_carriers.rb +0 -86
  82. data/examples/v201109/targeting/lookup_location.rb +0 -103
  83. data/examples/v201109_1/account_management/create_account.rb +0 -80
  84. data/examples/v201109_1/account_management/get_account_alerts.rb +0 -111
  85. data/examples/v201109_1/account_management/get_account_changes.rb +0 -137
  86. data/examples/v201109_1/account_management/get_account_hierarchy.rb +0 -93
  87. data/examples/v201109_1/account_management/get_client_customer_id.rb +0 -85
  88. data/examples/v201109_1/account_management/get_client_unit_usage.rb +0 -87
  89. data/examples/v201109_1/basic_operations/add_ad_groups.rb +0 -111
  90. data/examples/v201109_1/basic_operations/add_campaigns.rb +0 -140
  91. data/examples/v201109_1/basic_operations/add_keywords.rb +0 -108
  92. data/examples/v201109_1/basic_operations/add_text_ads.rb +0 -105
  93. data/examples/v201109_1/basic_operations/delete_ad.rb +0 -85
  94. data/examples/v201109_1/basic_operations/delete_ad_group.rb +0 -102
  95. data/examples/v201109_1/basic_operations/delete_campaign.rb +0 -103
  96. data/examples/v201109_1/basic_operations/delete_keyword.rb +0 -90
  97. data/examples/v201109_1/basic_operations/get_ad_groups.rb +0 -98
  98. data/examples/v201109_1/basic_operations/get_campaigns.rb +0 -93
  99. data/examples/v201109_1/basic_operations/get_keywords.rb +0 -104
  100. data/examples/v201109_1/basic_operations/get_text_ads.rb +0 -106
  101. data/examples/v201109_1/basic_operations/pause_ad.rb +0 -84
  102. data/examples/v201109_1/basic_operations/update_ad_group.rb +0 -81
  103. data/examples/v201109_1/basic_operations/update_campaign.rb +0 -84
  104. data/examples/v201109_1/basic_operations/update_keyword.rb +0 -99
  105. data/examples/v201109_1/campaign_management/add_experiment.rb +0 -158
  106. data/examples/v201109_1/campaign_management/add_keywords_in_bulk.rb +0 -150
  107. data/examples/v201109_1/campaign_management/add_location_extension.rb +0 -117
  108. data/examples/v201109_1/campaign_management/add_location_extension_override.rb +0 -83
  109. data/examples/v201109_1/campaign_management/get_all_disapproved_ads.rb +0 -93
  110. data/examples/v201109_1/campaign_management/promote_experiment.rb +0 -77
  111. data/examples/v201109_1/campaign_management/set_ad_parameters.rb +0 -114
  112. data/examples/v201109_1/campaign_management/validate_text_ad.rb +0 -106
  113. data/examples/v201109_1/error_handling/handle_captcha_challenge.rb +0 -93
  114. data/examples/v201109_1/error_handling/handle_partial_failures.rb +0 -126
  115. data/examples/v201109_1/error_handling/handle_policy_violation_error.rb +0 -137
  116. data/examples/v201109_1/error_handling/handle_two_factor_authorization_error.rb +0 -87
  117. data/examples/v201109_1/misc/get_all_images_and_videos.rb +0 -100
  118. data/examples/v201109_1/misc/upload_image.rb +0 -89
  119. data/examples/v201109_1/misc/use_oauth.rb +0 -100
  120. data/examples/v201109_1/misc/use_oauth2.rb +0 -97
  121. data/examples/v201109_1/optimization/estimate_keyword_traffic.rb +0 -129
  122. data/examples/v201109_1/optimization/get_keyword_bid_simulations.rb +0 -92
  123. data/examples/v201109_1/optimization/get_keyword_ideas.rb +0 -112
  124. data/examples/v201109_1/optimization/get_placement_ideas.rb +0 -104
  125. data/examples/v201109_1/remarketing/add_audience.rb +0 -115
  126. data/examples/v201109_1/remarketing/add_conversion_tracker.rb +0 -97
  127. data/examples/v201109_1/reporting/download_criteria_report.rb +0 -79
  128. data/examples/v201109_1/reporting/get_campaign_stats.rb +0 -105
  129. data/examples/v201109_1/reporting/get_defined_reports.rb +0 -75
  130. data/examples/v201109_1/reporting/get_report_fields.rb +0 -71
  131. data/examples/v201109_1/reporting/parallel_report_download.rb +0 -159
  132. data/examples/v201109_1/targeting/add_campaign_targeting_criteria.rb +0 -118
  133. data/examples/v201109_1/targeting/get_campaign_targeting_criteria.rb +0 -102
  134. data/examples/v201109_1/targeting/get_targetable_languages_and_carriers.rb +0 -86
  135. data/examples/v201109_1/targeting/lookup_location.rb +0 -103
  136. data/examples/v201206/misc/use_oauth.rb +0 -100
  137. data/examples/v201209/misc/use_oauth.rb +0 -100
  138. data/lib/adwords_api/v201109/ad_extension_override_service.rb +0 -38
  139. data/lib/adwords_api/v201109/ad_extension_override_service_registry.rb +0 -46
  140. data/lib/adwords_api/v201109/ad_group_ad_service.rb +0 -38
  141. data/lib/adwords_api/v201109/ad_group_ad_service_registry.rb +0 -46
  142. data/lib/adwords_api/v201109/ad_group_criterion_service.rb +0 -38
  143. data/lib/adwords_api/v201109/ad_group_criterion_service_registry.rb +0 -46
  144. data/lib/adwords_api/v201109/ad_group_service.rb +0 -38
  145. data/lib/adwords_api/v201109/ad_group_service_registry.rb +0 -46
  146. data/lib/adwords_api/v201109/ad_param_service.rb +0 -38
  147. data/lib/adwords_api/v201109/ad_param_service_registry.rb +0 -46
  148. data/lib/adwords_api/v201109/alert_service.rb +0 -34
  149. data/lib/adwords_api/v201109/alert_service_registry.rb +0 -46
  150. data/lib/adwords_api/v201109/budget_order_service.rb +0 -42
  151. data/lib/adwords_api/v201109/budget_order_service_registry.rb +0 -46
  152. data/lib/adwords_api/v201109/bulk_mutate_job_service.rb +0 -38
  153. data/lib/adwords_api/v201109/bulk_mutate_job_service_registry.rb +0 -46
  154. data/lib/adwords_api/v201109/campaign_ad_extension_service.rb +0 -38
  155. data/lib/adwords_api/v201109/campaign_ad_extension_service_registry.rb +0 -46
  156. data/lib/adwords_api/v201109/campaign_criterion_service.rb +0 -38
  157. data/lib/adwords_api/v201109/campaign_criterion_service_registry.rb +0 -46
  158. data/lib/adwords_api/v201109/campaign_service.rb +0 -38
  159. data/lib/adwords_api/v201109/campaign_service_registry.rb +0 -46
  160. data/lib/adwords_api/v201109/campaign_target_service.rb +0 -38
  161. data/lib/adwords_api/v201109/campaign_target_service_registry.rb +0 -46
  162. data/lib/adwords_api/v201109/constant_data_service.rb +0 -38
  163. data/lib/adwords_api/v201109/constant_data_service_registry.rb +0 -46
  164. data/lib/adwords_api/v201109/conversion_tracker_service.rb +0 -38
  165. data/lib/adwords_api/v201109/conversion_tracker_service_registry.rb +0 -46
  166. data/lib/adwords_api/v201109/create_account_service.rb +0 -34
  167. data/lib/adwords_api/v201109/create_account_service_registry.rb +0 -47
  168. data/lib/adwords_api/v201109/customer_sync_service.rb +0 -34
  169. data/lib/adwords_api/v201109/customer_sync_service_registry.rb +0 -47
  170. data/lib/adwords_api/v201109/data_service.rb +0 -38
  171. data/lib/adwords_api/v201109/data_service_registry.rb +0 -46
  172. data/lib/adwords_api/v201109/experiment_service.rb +0 -38
  173. data/lib/adwords_api/v201109/experiment_service_registry.rb +0 -46
  174. data/lib/adwords_api/v201109/geo_location_service.rb +0 -34
  175. data/lib/adwords_api/v201109/geo_location_service_registry.rb +0 -46
  176. data/lib/adwords_api/v201109/info_service.rb +0 -34
  177. data/lib/adwords_api/v201109/info_service_registry.rb +0 -46
  178. data/lib/adwords_api/v201109/location_criterion_service.rb +0 -34
  179. data/lib/adwords_api/v201109/location_criterion_service_registry.rb +0 -46
  180. data/lib/adwords_api/v201109/media_service.rb +0 -38
  181. data/lib/adwords_api/v201109/media_service_registry.rb +0 -46
  182. data/lib/adwords_api/v201109/mutate_job_service.rb +0 -42
  183. data/lib/adwords_api/v201109/mutate_job_service_registry.rb +0 -46
  184. data/lib/adwords_api/v201109/report_definition_service.rb +0 -38
  185. data/lib/adwords_api/v201109/report_definition_service_registry.rb +0 -46
  186. data/lib/adwords_api/v201109/serviced_account_service.rb +0 -34
  187. data/lib/adwords_api/v201109/serviced_account_service_registry.rb +0 -46
  188. data/lib/adwords_api/v201109/targeting_idea_service.rb +0 -38
  189. data/lib/adwords_api/v201109/targeting_idea_service_registry.rb +0 -46
  190. data/lib/adwords_api/v201109/traffic_estimator_service.rb +0 -34
  191. data/lib/adwords_api/v201109/traffic_estimator_service_registry.rb +0 -46
  192. data/lib/adwords_api/v201109/user_list_service.rb +0 -38
  193. data/lib/adwords_api/v201109/user_list_service_registry.rb +0 -46
  194. data/lib/adwords_api/v201109_1/ad_extension_override_service.rb +0 -38
  195. data/lib/adwords_api/v201109_1/ad_extension_override_service_registry.rb +0 -46
  196. data/lib/adwords_api/v201109_1/ad_group_ad_service.rb +0 -38
  197. data/lib/adwords_api/v201109_1/ad_group_ad_service_registry.rb +0 -46
  198. data/lib/adwords_api/v201109_1/ad_group_criterion_service.rb +0 -38
  199. data/lib/adwords_api/v201109_1/ad_group_criterion_service_registry.rb +0 -46
  200. data/lib/adwords_api/v201109_1/ad_group_service.rb +0 -38
  201. data/lib/adwords_api/v201109_1/ad_group_service_registry.rb +0 -46
  202. data/lib/adwords_api/v201109_1/ad_param_service.rb +0 -38
  203. data/lib/adwords_api/v201109_1/ad_param_service_registry.rb +0 -46
  204. data/lib/adwords_api/v201109_1/alert_service.rb +0 -34
  205. data/lib/adwords_api/v201109_1/alert_service_registry.rb +0 -46
  206. data/lib/adwords_api/v201109_1/budget_order_service.rb +0 -42
  207. data/lib/adwords_api/v201109_1/budget_order_service_registry.rb +0 -46
  208. data/lib/adwords_api/v201109_1/bulk_mutate_job_service.rb +0 -38
  209. data/lib/adwords_api/v201109_1/bulk_mutate_job_service_registry.rb +0 -46
  210. data/lib/adwords_api/v201109_1/campaign_ad_extension_service.rb +0 -38
  211. data/lib/adwords_api/v201109_1/campaign_ad_extension_service_registry.rb +0 -46
  212. data/lib/adwords_api/v201109_1/campaign_criterion_service.rb +0 -38
  213. data/lib/adwords_api/v201109_1/campaign_criterion_service_registry.rb +0 -46
  214. data/lib/adwords_api/v201109_1/campaign_service.rb +0 -38
  215. data/lib/adwords_api/v201109_1/campaign_service_registry.rb +0 -46
  216. data/lib/adwords_api/v201109_1/campaign_target_service.rb +0 -38
  217. data/lib/adwords_api/v201109_1/campaign_target_service_registry.rb +0 -46
  218. data/lib/adwords_api/v201109_1/constant_data_service.rb +0 -38
  219. data/lib/adwords_api/v201109_1/constant_data_service_registry.rb +0 -46
  220. data/lib/adwords_api/v201109_1/conversion_tracker_service.rb +0 -38
  221. data/lib/adwords_api/v201109_1/conversion_tracker_service_registry.rb +0 -46
  222. data/lib/adwords_api/v201109_1/create_account_service.rb +0 -34
  223. data/lib/adwords_api/v201109_1/create_account_service_registry.rb +0 -47
  224. data/lib/adwords_api/v201109_1/customer_service.rb +0 -34
  225. data/lib/adwords_api/v201109_1/customer_service_registry.rb +0 -46
  226. data/lib/adwords_api/v201109_1/customer_sync_service.rb +0 -34
  227. data/lib/adwords_api/v201109_1/customer_sync_service_registry.rb +0 -47
  228. data/lib/adwords_api/v201109_1/data_service.rb +0 -38
  229. data/lib/adwords_api/v201109_1/data_service_registry.rb +0 -46
  230. data/lib/adwords_api/v201109_1/experiment_service.rb +0 -38
  231. data/lib/adwords_api/v201109_1/experiment_service_registry.rb +0 -46
  232. data/lib/adwords_api/v201109_1/geo_location_service.rb +0 -34
  233. data/lib/adwords_api/v201109_1/geo_location_service_registry.rb +0 -46
  234. data/lib/adwords_api/v201109_1/info_service.rb +0 -34
  235. data/lib/adwords_api/v201109_1/info_service_registry.rb +0 -46
  236. data/lib/adwords_api/v201109_1/location_criterion_service.rb +0 -34
  237. data/lib/adwords_api/v201109_1/location_criterion_service_registry.rb +0 -46
  238. data/lib/adwords_api/v201109_1/managed_customer_service.rb +0 -38
  239. data/lib/adwords_api/v201109_1/managed_customer_service_registry.rb +0 -46
  240. data/lib/adwords_api/v201109_1/media_service.rb +0 -38
  241. data/lib/adwords_api/v201109_1/media_service_registry.rb +0 -46
  242. data/lib/adwords_api/v201109_1/mutate_job_service.rb +0 -42
  243. data/lib/adwords_api/v201109_1/mutate_job_service_registry.rb +0 -46
  244. data/lib/adwords_api/v201109_1/report_definition_service.rb +0 -38
  245. data/lib/adwords_api/v201109_1/report_definition_service_registry.rb +0 -46
  246. data/lib/adwords_api/v201109_1/serviced_account_service.rb +0 -34
  247. data/lib/adwords_api/v201109_1/serviced_account_service_registry.rb +0 -46
  248. data/lib/adwords_api/v201109_1/targeting_idea_service.rb +0 -38
  249. data/lib/adwords_api/v201109_1/targeting_idea_service_registry.rb +0 -46
  250. data/lib/adwords_api/v201109_1/traffic_estimator_service.rb +0 -34
  251. data/lib/adwords_api/v201109_1/traffic_estimator_service_registry.rb +0 -46
  252. data/lib/adwords_api/v201109_1/user_list_service.rb +0 -38
  253. data/lib/adwords_api/v201109_1/user_list_service_registry.rb +0 -46
  254. data/test/examples/v201109/test_account_management.rb +0 -60
  255. data/test/examples/v201109/test_basic_operations.rb +0 -172
  256. data/test/examples/v201109/test_campaign_management.rb +0 -116
  257. data/test/examples/v201109/test_error_handling.rb +0 -63
  258. data/test/examples/v201109/test_misc.rb +0 -45
  259. data/test/examples/v201109/test_optimization.rb +0 -63
  260. data/test/examples/v201109/test_remarketing.rb +0 -39
  261. data/test/examples/v201109/test_reporting.rb +0 -72
  262. data/test/examples/v201109/test_targeting.rb +0 -60
  263. data/test/examples/v201109/utils.rb +0 -238
  264. data/test/examples/v201109_1/test_account_management.rb +0 -60
  265. data/test/examples/v201109_1/test_basic_operations.rb +0 -172
  266. data/test/examples/v201109_1/test_campaign_management.rb +0 -116
  267. data/test/examples/v201109_1/test_error_handling.rb +0 -63
  268. data/test/examples/v201109_1/test_misc.rb +0 -45
  269. data/test/examples/v201109_1/test_optimization.rb +0 -63
  270. data/test/examples/v201109_1/test_remarketing.rb +0 -39
  271. data/test/examples/v201109_1/test_reporting.rb +0 -72
  272. data/test/examples/v201109_1/test_targeting.rb +0 -60
  273. data/test/examples/v201109_1/utils.rb +0 -238
  274. data/test/suite_exampletests_v201109_1.rb +0 -37
@@ -70,8 +70,6 @@ module AdwordsApi
70
70
  # environment.
71
71
  #
72
72
  # Raises:
73
- # - AdsCommon::Error::EnvironmentMismatchError if sandbox credentials are
74
- # being used for production or vice-versa.
75
73
  # - AdwordsApi::Errors:BadCredentialsError if supplied credentials are not
76
74
  # valid.
77
75
  #
@@ -90,21 +88,9 @@ module AdwordsApi
90
88
  end
91
89
 
92
90
  token = credentials[:developer_token]
93
- sandbox_token = (token =~ /.+@.+\+\+[a-zA-Z]{3}/)
94
- environment = @config.read('service.environment')
95
- case environment
96
- when :PRODUCTION
97
- if sandbox_token
98
- raise AdsCommon::Errors::EnvironmentMismatchError,
99
- 'Attempting to connect to production with sandbox credentials.'
100
- end
101
- when :SANDBOX
102
- if (!sandbox_token)
103
- raise AdsCommon::Errors::EnvironmentMismatchError,
104
- 'Attempting to connect to the sandbox with malformatted ' +
105
- 'credentials. Please check http://code.google.com/apis/' +
106
- 'adwords/docs/sandbox.html#request-headers for details.'
107
- end
91
+ if token.nil? || token.empty?
92
+ raise AdwordsApi::Errors::BadCredentialsError,
93
+ 'Developer token is missing, check credentials.'
108
94
  end
109
95
  return nil
110
96
  end
@@ -49,8 +49,7 @@ module AdwordsApi
49
49
  credentials = @credential_handler.credentials(override)
50
50
  headers = {
51
51
  'Content-Type' => 'application/x-www-form-urlencoded',
52
- 'Authorization' =>
53
- @auth_handler.auth_string(credentials, HTTPI::Request.new(url)),
52
+ 'Authorization' => @auth_handler.auth_string(credentials),
54
53
  'User-Agent' => @credential_handler.generate_user_agent(),
55
54
  'clientCustomerId' => credentials[:client_customer_id].to_s,
56
55
  'developerToken' => credentials[:developer_token]
@@ -196,7 +196,7 @@ module AdwordsApi
196
196
  def check_for_errors(response)
197
197
  # Check for error in body.
198
198
  report_body = response.body
199
- if report_body and is_legacy_reporting(@version) and
199
+ if report_body and (@version == :v201206) and
200
200
  ((RUBY_VERSION < '1.9.1') or report_body.valid_encoding?)
201
201
  check_for_legacy_error(report_body, response.code)
202
202
  end
@@ -210,13 +210,6 @@ module AdwordsApi
210
210
  return nil
211
211
  end
212
212
 
213
- # Returns true is the provided API version has legacy reporting.
214
- def is_legacy_reporting(version)
215
- return (version == :v201206 or
216
- version == :v201109_1 or
217
- version == :v201109)
218
- end
219
-
220
213
  # Checks for a legacy error in the response body and raises an exception if
221
214
  # it was found.
222
215
  def check_for_legacy_error(report_body, response_code)
@@ -21,6 +21,6 @@
21
21
 
22
22
  module AdwordsApi
23
23
  module ApiConfig
24
- CLIENT_LIB_VERSION = '0.7.2'
24
+ CLIENT_LIB_VERSION = '0.8.0'
25
25
  end
26
26
  end
@@ -27,20 +27,18 @@ require 'ads_common/api_config'
27
27
  require 'adwords_api'
28
28
 
29
29
  class TestAdwordsApi < Test::Unit::TestCase
30
- # Initializes tests.
31
- def setup()
32
- @config = AdsCommon::Config.new({})
33
- end
30
+
31
+ API_VERSION = :v201209
34
32
 
35
33
  def test_initialize()
36
34
  assert_nothing_raised do
37
- adwords_api = AdwordsApi::Api.new(@config)
35
+ adwords_api = AdwordsApi::Api.new({})
38
36
  end
39
37
  end
40
38
 
41
39
  def test_api_config()
42
40
  assert_nothing_raised do
43
- adwords_api = AdwordsApi::Api.new(@config)
41
+ adwords_api = AdwordsApi::Api.new({})
44
42
  api_config = adwords_api.api_config()
45
43
  assert_not_nil(api_config)
46
44
  assert_kind_of(AdsCommon::ApiConfig, api_config)
@@ -48,7 +46,7 @@ class TestAdwordsApi < Test::Unit::TestCase
48
46
  end
49
47
 
50
48
  def test_use_mcc()
51
- adwords_api = AdwordsApi::Api.new(@config)
49
+ adwords_api = AdwordsApi::Api.new({})
52
50
  adwords_api.use_mcc = false
53
51
  assert(!adwords_api.use_mcc)
54
52
  adwords_api.use_mcc do
@@ -57,7 +55,7 @@ class TestAdwordsApi < Test::Unit::TestCase
57
55
  end
58
56
 
59
57
  def test_validate_only()
60
- adwords_api = AdwordsApi::Api.new(@config)
58
+ adwords_api = AdwordsApi::Api.new({})
61
59
  adwords_api.validate_only = false
62
60
  assert(!adwords_api.validate_only)
63
61
  adwords_api.validate_only do
@@ -66,11 +64,27 @@ class TestAdwordsApi < Test::Unit::TestCase
66
64
  end
67
65
 
68
66
  def test_partial_failure()
69
- adwords_api = AdwordsApi::Api.new(@config)
67
+ adwords_api = AdwordsApi::Api.new({})
70
68
  adwords_api.partial_failure = false
71
69
  assert(!adwords_api.partial_failure)
72
70
  adwords_api.partial_failure do
73
71
  assert(adwords_api.partial_failure)
74
72
  end
75
73
  end
74
+
75
+ def test_no_sandbox_env()
76
+ adwords_api = AdwordsApi::Api.new({
77
+ :service => {:environment => 'SANDBOX'}
78
+ })
79
+ assert_raise(AdsCommon::Errors::Error) do
80
+ service = adwords_api.service(:ManagedCustomerService, API_VERSION)
81
+ end
82
+ end
83
+
84
+ def test_prod_env()
85
+ adwords_api = AdwordsApi::Api.new({
86
+ :service => {:environment => 'PRODUCTION'}
87
+ })
88
+ service = adwords_api.service(:ManagedCustomerService, API_VERSION)
89
+ end
76
90
  end
@@ -55,12 +55,4 @@ class TestApiConfig < Test::Unit::TestCase
55
55
  'https://adwords.google.com/api/adwords/reportdownload/v201206'
56
56
  assert_equal(expected_url, url)
57
57
  end
58
-
59
- # Tests AdHoc report URL generator (sandbox).
60
- def test_adhoc_report_download_url_sandbox()
61
- url = AdwordsApi::ApiConfig.adhoc_report_download_url(:SANDBOX, :v201206)
62
- expected_url =
63
- 'https://adwords-sandbox.google.com/api/adwords/reportdownload/v201206'
64
- assert_equal(expected_url, url)
65
- end
66
58
  end
@@ -38,8 +38,8 @@ end
38
38
  class TestCredentialHandler < Test::Unit::TestCase
39
39
 
40
40
  def setup()
41
- logger = Logger.new(STDERR)
42
- config = AdsCommon::Config.new({:library => {:logger => logger}})
41
+ @logger = Logger.new(STDERR)
42
+ config = AdsCommon::Config.new({:library => {:logger => @logger}})
43
43
  @handler = AdwordsApi::CredentialHandler.new(config)
44
44
  end
45
45
 
@@ -51,35 +51,71 @@ class TestCredentialHandler < Test::Unit::TestCase
51
51
  end
52
52
 
53
53
  def test_validate_headers_for_server_client_customer_id()
54
- credentials = {:client_customer_id => '123-456-7890'}
54
+ credentials = {
55
+ :client_customer_id => '123-456-7890',
56
+ :developer_token => 'AbC'
57
+ }
55
58
  assert_nothing_raised {@handler.validate_headers_for_server(credentials)}
56
59
  end
57
60
 
58
61
  def test_validate_headers_for_server_valid_cid()
59
- credentials1 = {:client_customer_id => '123-456-7890'}
62
+ credentials1 = {
63
+ :client_customer_id => '123-456-7890',
64
+ :developer_token => 'AbC'
65
+ }
60
66
  assert_nothing_raised {@handler.validate_headers_for_server(credentials1)}
61
67
 
62
- credentials2 = {:client_customer_id => '1234567890'}
68
+ credentials2 = {
69
+ :client_customer_id => '1234567890',
70
+ :developer_token => 'AbC'
71
+ }
63
72
  assert_nothing_raised {@handler.validate_headers_for_server(credentials2)}
64
73
 
65
- credentials3 = {:client_customer_id => 1234567890}
74
+ credentials3 = {
75
+ :client_customer_id => 1234567890,
76
+ :developer_token => 'AbC'
77
+ }
66
78
  assert_nothing_raised {@handler.validate_headers_for_server(credentials3)}
67
79
  end
68
80
 
69
81
  def test_validate_headers_for_server_invalid_cid()
70
- credentials1 = {:client_customer_id => 'demo@example.com'}
82
+ credentials1 = {
83
+ :client_customer_id => 'demo@example.com',
84
+ :developer_token => 'AbC'
85
+ }
71
86
  assert_raise(AdwordsApi::Errors::BadCredentialsError) do
72
87
  @handler.validate_headers_for_server(credentials1)
73
88
  end
74
89
 
75
- credentials2 = {:client_customer_id => 'demo@example.com 1234567890'}
90
+ credentials2 = {
91
+ :client_customer_id => 'demo@example.com 1234567890',
92
+ :developer_token => 'AbC'
93
+ }
76
94
  assert_raise(AdwordsApi::Errors::BadCredentialsError) do
77
95
  @handler.validate_headers_for_server(credentials2)
78
96
  end
79
97
 
80
- credentials3 = {:client_customer_id => '123-456-7890-'}
98
+ credentials3 = {
99
+ :client_customer_id => '123-456-7890-',
100
+ :developer_token => 'AbC'
101
+ }
81
102
  assert_raise(AdwordsApi::Errors::BadCredentialsError) do
82
103
  @handler.validate_headers_for_server(credentials3)
83
104
  end
84
105
  end
106
+
107
+ def test_validate_headers_for_server_no_developer_token()
108
+ credentials1 = {:client_customer_id => '123-456-7890'}
109
+ assert_raise(AdwordsApi::Errors::BadCredentialsError) do
110
+ @handler.validate_headers_for_server(credentials1)
111
+ end
112
+
113
+ credentials2 = {
114
+ :client_customer_id => '123-456-7890',
115
+ :developer_token => ''
116
+ }
117
+ assert_raise(AdwordsApi::Errors::BadCredentialsError) do
118
+ @handler.validate_headers_for_server(credentials2)
119
+ end
120
+ end
85
121
  end
@@ -24,8 +24,6 @@ require 'test/unit'
24
24
 
25
25
  require 'adwords_api'
26
26
 
27
- API_VERSION = :v201206
28
-
29
27
  # Overriding default access levels to public for tests.
30
28
  module AdwordsApi
31
29
  class ReportUtils
@@ -65,6 +63,9 @@ VALID_REPORT = '"Custom ADGROUP_PERFORMANCE_REPORT (Oct 20, 2011-Oct 26, 2011)"\
65
63
  GZIPPED_REPORT = "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00Sr.-.\xC9\xCFUptq\x0F\xF2\x0F\r\x88\x0Fp\rr\xF3\x0F\xF2u\xF4sv\x8D\x0Fr\r\xF0\x0F\nQ\xD0pIMV0\xD2Q0204\xD4\x05\xB1- lM%.\xE7\xC4\xDC\x82\xC4\xCC\xF4<\x05O\x17\x1D\xC7\x14\x85\xF4\xA2\xFC\xD2\x02\x10\xDB3\xB7\xA0(\xB5\xB883?\xAFX\xC79'39\eH\xE5\x17\x97p\x85\xE4\x97$\xE6\xE8(\xE8\xEA\xEA\x18\x80\xA0\x9E\x81\x01\x17\x00\xBE\x1D\xBE\xAD\x81\x00\x00\x00"
66
64
 
67
65
  class TestReportUtils < Test::Unit::TestCase
66
+
67
+ API_VERSION = :v201209
68
+
68
69
  # Initialize tests.
69
70
  def setup()
70
71
  @api = AdwordsApi::Api.new
@@ -18,20 +18,23 @@
18
18
  # See the License for the specific language governing permissions and
19
19
  # limitations under the License.
20
20
  #
21
- # Test suite for v201109 example tests.
22
-
23
- require 'test/unit'
21
+ # Test suite for integration tests.
24
22
 
25
23
  $:.unshift File.expand_path('../../lib/', __FILE__)
26
24
  $:.unshift File.expand_path('../../', __FILE__)
27
25
 
28
- version = 'v201109'
26
+ require 'test/test_utils'
27
+
28
+ examples_dir_path =
29
+ File.expand_path(File.join('..', '..', 'examples'), __FILE__)
29
30
 
30
- examples_path =
31
- File.expand_path(File.join('..', '..', 'examples', version), __FILE__)
32
- $:.unshift(examples_path)
31
+ examples_mask = File.join(examples_dir_path, 'v*/**/*.rb')
33
32
 
34
- tests_path = File.join(File.dirname(__FILE__), 'examples', version)
35
- require File.join(tests_path, 'utils.rb')
36
- tests_mask = File.join(tests_path, 'test_*.rb')
37
- Dir.glob(tests_mask).each {|file| require file}
33
+ Dir.glob(examples_mask).each do |file|
34
+ method_name = 'test_%s' % File.basename(file)
35
+ Class.new(Test::Unit::TestCase) do
36
+ define_method(method_name) do
37
+ ExampleRunner.new(file).engage(self)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,114 @@
1
+ def setup_mocks()
2
+ $api_config = {
3
+ :service => {:environment => 'PRODUCTION'},
4
+ :authentication => {
5
+ :method => 'ClientLogin',
6
+ :email => 'noreply@google.com',
7
+ :password => 'noreply_password',
8
+ :developer_token => 'dev_token123',
9
+ :client_customer_id => '123-456-7890',
10
+ :user_agent => 'ruby-tests'
11
+ }
12
+ }
13
+
14
+ stub_request(:post, "https://www.google.com/accounts/ClientLogin").
15
+ with(:body => {"Email"=>"noreply@google.com", "Passwd"=>"noreply_password", "accountType"=>"GOOGLE", "service"=>"adwords"}).
16
+ to_return(:status => 200, :body => "SID=abcSIDbcd\nLSID=abcLSIDbcd\nAuth=abcAuthbcd\n", :headers => {})
17
+
18
+ stub_request(:post, "https://adwords.google.com/api/adwords/cm/v201209/CampaignService").
19
+ with(
20
+ :body =>
21
+ # autogenerated code
22
+ {"env:Envelope"=>
23
+ {"env:Header"=>
24
+ {"wsdl:RequestHeader"=>
25
+ {"userAgent"=>"ruby-tests (AwApi-Ruby/0.8.0, Common-Ruby/0.8.2, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, net_http)",
26
+ "developerToken"=>"dev_token123",
27
+ "clientCustomerId"=>"123-456-7890",
28
+ "authToken"=>"abcAuthbcd",
29
+ "xmlns"=>"https://adwords.google.com/api/adwords/cm/v201209"}},
30
+ "env:Body"=>
31
+ {"get"=>
32
+ {"serviceSelector"=>
33
+ {"fields"=>["Id", "Name", "Status"],
34
+ "ordering"=>{"field"=>"Name", "sortOrder"=>"ASCENDING"},
35
+ "paging"=>{"startIndex"=>"0", "numberResults"=>"5"}},
36
+ "xmlns"=>"https://adwords.google.com/api/adwords/cm/v201209"}},
37
+ "xmlns:xsd"=>"http://www.w3.org/2001/XMLSchema",
38
+ "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance",
39
+ "xmlns:wsdl"=>"https://adwords.google.com/api/adwords/cm/v201209",
40
+ "xmlns:env"=>"http://schemas.xmlsoap.org/soap/envelope/"}},
41
+ # end of auto-generated code.
42
+ :headers => {
43
+ 'SOAPAction' => '"get"',
44
+ 'Content-Type' => 'text/xml;charset=UTF-8'
45
+ }
46
+ ).
47
+ to_return(
48
+ :status => 200,
49
+ :body => '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
50
+ <soap:Header>
51
+ <ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201209">
52
+ <requestId>0004c</requestId>
53
+ <serviceName>CampaignService</serviceName>
54
+ <methodName>get</methodName>
55
+ <operations>42</operations>
56
+ <responseTime>84</responseTime>
57
+ <units>42</units>
58
+ </ResponseHeader>
59
+ </soap:Header>
60
+ <soap:Body>
61
+ <getResponse xmlns="https://adwords.google.com/api/adwords/cm/v201209">
62
+ <rval>
63
+ <totalNumEntries>2</totalNumEntries>
64
+ <Page.Type>CampaignPage</Page.Type>
65
+ <totalBudget>
66
+ <period>DAILY</period><amount><ComparableValue.Type>Money</ComparableValue.Type>
67
+ <microAmount>0</microAmount></amount>
68
+ </totalBudget>
69
+ <entries>
70
+ <id>15</id><name>Campaign name 1</name><status>PAUSED</status><campaignStats><network>ALL</network>
71
+ <Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>0</impressions></frequencyCap>
72
+ </entries>
73
+ <entries>
74
+ <id>16</id><name>Campaign name 2</name><status>ACTIVE</status><campaignStats><network>ALL</network>
75
+ <Stats.Type>CampaignStats</Stats.Type></campaignStats><frequencyCap><impressions>150</impressions></frequencyCap>
76
+ </entries>
77
+ </rval>
78
+ </getResponse>
79
+ </soap:Body>
80
+ </soap:Envelope>',
81
+ :headers => {'content-type' => 'text/xml;'}
82
+ )
83
+ end
84
+
85
+ def run_asserts()
86
+ assert_equal(2, $latest_result[:total_num_entries])
87
+ assert_equal('CampaignPage', $latest_result[:page_type])
88
+ entries = $latest_result[:entries]
89
+ assert_equal(2, entries.size)
90
+
91
+ if entries[0][:id] == 15
92
+ assert_campaign_15(entries[0])
93
+ assert_campaign_16(entries[1])
94
+ else
95
+ assert_campaign_15(entries[1])
96
+ assert_campaign_16(entries[0])
97
+ end
98
+ end
99
+
100
+ def assert_campaign_15(entry)
101
+ assert_equal(15, entry[:id])
102
+ assert_equal('Campaign name 1', entry[:name])
103
+ assert_equal('PAUSED', entry[:status])
104
+ assert_equal({:network=>"ALL", :stats_type=>"CampaignStats"}, entry[:campaign_stats])
105
+ assert_equal({:impressions=>0}, entry[:frequency_cap])
106
+ end
107
+
108
+ def assert_campaign_16(entry)
109
+ assert_equal(16, entry[:id])
110
+ assert_equal('Campaign name 2', entry[:name])
111
+ assert_equal('ACTIVE', entry[:status])
112
+ assert_equal({:network=>"ALL", :stats_type=>"CampaignStats"}, entry[:campaign_stats])
113
+ assert_equal({:impressions=>150}, entry[:frequency_cap])
114
+ end
@@ -0,0 +1,105 @@
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
+ # Test utils.
22
+
23
+ # We need to require all example deps here for example method detection to work
24
+ # correctly.
25
+ require 'ads_common/savon_service'
26
+ require 'adwords_api'
27
+ require 'webmock/test_unit'
28
+
29
+ class ExampleRunner < Test::Unit::TestCase
30
+ PAGE_SIZE = 5
31
+
32
+ def initialize(example_file)
33
+ @version, template_file = extract_strings(example_file)
34
+
35
+ begin
36
+ eval_ruby_file(template_file)
37
+ rescue Errno::ENOENT => e
38
+ @template_error = "No template for example: '%s'" % example_file
39
+ end
40
+
41
+ @all_methods = self.methods
42
+ eval_ruby_file(example_file)
43
+ end
44
+
45
+ def engage(test)
46
+ test.skip(@template_error) if @template_error
47
+ reset_state()
48
+ setup_mocks()
49
+ self.instance_eval('API_VERSION = :%s' % @version)
50
+ self.instance_eval('PAGE_SIZE = %d' % PAGE_SIZE)
51
+ self.send(get_example_method())
52
+ run_asserts()
53
+ end
54
+
55
+ private
56
+
57
+ def reset_state()
58
+ WebMock.reset!
59
+ $latest_result = nil
60
+ end
61
+
62
+ def get_example_method()
63
+ example_methods = self.methods - @all_methods
64
+ if example_methods.size != 1
65
+ raise StandardError, 'Unexpected set of methods found, need only one: ' +
66
+ PP.singleline_pp(example_methods, '')
67
+ end
68
+ return example_methods.first()
69
+ end
70
+
71
+ def extract_strings(filename)
72
+ version = File.basename(File.dirname(File.dirname(filename)))
73
+ dirname = File.basename(File.dirname(filename))
74
+ example_name = File.basename(filename, '.rb')
75
+ template_name = '%s_%s.def' % [dirname, example_name]
76
+ template_fullpath = File.expand_path(
77
+ File.join('..', 'templates', version, template_name), __FILE__)
78
+ return version, template_fullpath
79
+ end
80
+
81
+ def eval_ruby_file(filename)
82
+ file_body = File.read(filename)
83
+ self.instance_eval(file_body)
84
+ end
85
+ end
86
+
87
+
88
+ module AdsCommon
89
+ class Api
90
+ # Patching original load_config for test credentials.
91
+ alias :old_load_config :load_config
92
+ def load_config(provided_config = nil)
93
+ old_load_config($api_config)
94
+ end
95
+ end
96
+
97
+ class SavonService
98
+ # Patching original to capture the latest response.
99
+ alias :old_execute_action :execute_action
100
+ def execute_action(action_name, args, &block)
101
+ $latest_result = old_execute_action(action_name, args, &block)
102
+ return $latest_result
103
+ end
104
+ end
105
+ end