google-adwords-api 0.7.2 → 0.8.0

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 (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