google-adwords-api 0.10.0 → 0.11.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 (184) hide show
  1. data/ChangeLog +3 -0
  2. data/examples/v201306/misc/setup_oauth2.rb +4 -4
  3. data/examples/v201306/optimization/get_keyword_ideas.rb +1 -1
  4. data/examples/v201309/advanced_operations/add_site_links.rb +71 -9
  5. data/examples/v201309/advanced_operations/update_site_links.rb +194 -0
  6. data/examples/v201309/misc/setup_oauth2.rb +4 -4
  7. data/examples/v201309/optimization/get_keyword_ideas.rb +1 -1
  8. data/lib/adwords_api/api_config.rb +0 -88
  9. data/lib/adwords_api/version.rb +1 -1
  10. data/test/templates/v201306/basic_operations_get_campaigns.def +1 -1
  11. data/test/templates/v201306/misc_use_oauth2_jwt.def +1 -1
  12. data/test/templates/v201309/basic_operations_get_campaigns.def +1 -1
  13. data/test/templates/v201309/misc_use_oauth2_jwt.def +1 -1
  14. metadata +266 -429
  15. data/examples/v201302/account_management/create_account.rb +0 -95
  16. data/examples/v201302/account_management/get_account_alerts.rb +0 -122
  17. data/examples/v201302/account_management/get_account_changes.rb +0 -145
  18. data/examples/v201302/account_management/get_account_hierarchy.rb +0 -103
  19. data/examples/v201302/advanced_operations/add_ad_group_bid_modifier.rb +0 -105
  20. data/examples/v201302/advanced_operations/add_click_to_download_ad.rb +0 -137
  21. data/examples/v201302/advanced_operations/add_site_links.rb +0 -221
  22. data/examples/v201302/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -147
  23. data/examples/v201302/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -181
  24. data/examples/v201302/advanced_operations/get_ad_group_bid_modifiers.rb +0 -106
  25. data/examples/v201302/adwords_for_video/add_video_call_to_action.rb +0 -94
  26. data/examples/v201302/adwords_for_video/add_video_campaign.rb +0 -103
  27. data/examples/v201302/adwords_for_video/find_videos.rb +0 -92
  28. data/examples/v201302/adwords_for_video/get_keyword_criteria.rb +0 -101
  29. data/examples/v201302/adwords_for_video/get_targeting_groups.rb +0 -93
  30. data/examples/v201302/adwords_for_video/get_video_campaign_criteria.rb +0 -99
  31. data/examples/v201302/adwords_for_video/get_video_campaign_stats.rb +0 -126
  32. data/examples/v201302/adwords_for_video/get_video_campaigns.rb +0 -94
  33. data/examples/v201302/basic_operations/add_ad_groups.rb +0 -143
  34. data/examples/v201302/basic_operations/add_campaigns.rb +0 -162
  35. data/examples/v201302/basic_operations/add_keywords.rb +0 -116
  36. data/examples/v201302/basic_operations/add_text_ads.rb +0 -113
  37. data/examples/v201302/basic_operations/delete_ad.rb +0 -93
  38. data/examples/v201302/basic_operations/delete_ad_group.rb +0 -110
  39. data/examples/v201302/basic_operations/delete_campaign.rb +0 -111
  40. data/examples/v201302/basic_operations/delete_keyword.rb +0 -98
  41. data/examples/v201302/basic_operations/get_ad_groups.rb +0 -106
  42. data/examples/v201302/basic_operations/get_campaigns.rb +0 -101
  43. data/examples/v201302/basic_operations/get_campaigns_with_awql.rb +0 -93
  44. data/examples/v201302/basic_operations/get_keywords.rb +0 -112
  45. data/examples/v201302/basic_operations/get_text_ads.rb +0 -114
  46. data/examples/v201302/basic_operations/pause_ad.rb +0 -92
  47. data/examples/v201302/basic_operations/update_ad_group.rb +0 -89
  48. data/examples/v201302/basic_operations/update_campaign.rb +0 -90
  49. data/examples/v201302/basic_operations/update_keyword.rb +0 -110
  50. data/examples/v201302/campaign_management/add_experiment.rb +0 -166
  51. data/examples/v201302/campaign_management/add_keywords_in_bulk.rb +0 -158
  52. data/examples/v201302/campaign_management/add_location_extension.rb +0 -125
  53. data/examples/v201302/campaign_management/add_location_extension_override.rb +0 -91
  54. data/examples/v201302/campaign_management/get_all_disapproved_ads.rb +0 -101
  55. data/examples/v201302/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -92
  56. data/examples/v201302/campaign_management/promote_experiment.rb +0 -85
  57. data/examples/v201302/campaign_management/set_ad_parameters.rb +0 -122
  58. data/examples/v201302/campaign_management/set_criterion_bid_modifier.rb +0 -110
  59. data/examples/v201302/campaign_management/validate_text_ad.rb +0 -114
  60. data/examples/v201302/error_handling/handle_captcha_challenge.rb +0 -93
  61. data/examples/v201302/error_handling/handle_partial_failures.rb +0 -134
  62. data/examples/v201302/error_handling/handle_policy_violation_error.rb +0 -145
  63. data/examples/v201302/error_handling/handle_two_factor_authorization_error.rb +0 -88
  64. data/examples/v201302/migration/set_campaign_enhanced.rb +0 -91
  65. data/examples/v201302/migration/upgrade_legacy_sitelinks.rb +0 -313
  66. data/examples/v201302/misc/get_all_images_and_videos.rb +0 -108
  67. data/examples/v201302/misc/setup_oauth2.rb +0 -88
  68. data/examples/v201302/misc/upload_image.rb +0 -97
  69. data/examples/v201302/misc/use_oauth2_jwt.rb +0 -93
  70. data/examples/v201302/optimization/estimate_keyword_traffic.rb +0 -137
  71. data/examples/v201302/optimization/get_keyword_bid_simulations.rb +0 -100
  72. data/examples/v201302/optimization/get_keyword_ideas.rb +0 -130
  73. data/examples/v201302/optimization/get_placement_ideas.rb +0 -112
  74. data/examples/v201302/remarketing/add_audience.rb +0 -123
  75. data/examples/v201302/remarketing/add_conversion_tracker.rb +0 -104
  76. data/examples/v201302/reporting/download_criteria_report.rb +0 -87
  77. data/examples/v201302/reporting/download_criteria_report_with_awql.rb +0 -86
  78. data/examples/v201302/reporting/get_campaign_stats.rb +0 -113
  79. data/examples/v201302/reporting/get_report_fields.rb +0 -79
  80. data/examples/v201302/reporting/parallel_report_download.rb +0 -171
  81. data/examples/v201302/targeting/add_campaign_targeting_criteria.rb +0 -123
  82. data/examples/v201302/targeting/add_demographic_targeting_criteria.rb +0 -116
  83. data/examples/v201302/targeting/get_campaign_targeting_criteria.rb +0 -110
  84. data/examples/v201302/targeting/get_targetable_languages_and_carriers.rb +0 -94
  85. data/examples/v201302/targeting/lookup_location.rb +0 -112
  86. data/examples/v201309/campaign_management/add_location_extension_override.rb +0 -91
  87. data/examples/v201309/reporting/get_campaign_stats.rb +0 -113
  88. data/lib/adwords_api/v201302/ad_extension_override_service.rb +0 -38
  89. data/lib/adwords_api/v201302/ad_extension_override_service_registry.rb +0 -46
  90. data/lib/adwords_api/v201302/ad_group_ad_service.rb +0 -42
  91. data/lib/adwords_api/v201302/ad_group_ad_service_registry.rb +0 -46
  92. data/lib/adwords_api/v201302/ad_group_bid_modifier_service.rb +0 -38
  93. data/lib/adwords_api/v201302/ad_group_bid_modifier_service_registry.rb +0 -46
  94. data/lib/adwords_api/v201302/ad_group_criterion_service.rb +0 -42
  95. data/lib/adwords_api/v201302/ad_group_criterion_service_registry.rb +0 -46
  96. data/lib/adwords_api/v201302/ad_group_feed_service.rb +0 -38
  97. data/lib/adwords_api/v201302/ad_group_feed_service_registry.rb +0 -47
  98. data/lib/adwords_api/v201302/ad_group_service.rb +0 -42
  99. data/lib/adwords_api/v201302/ad_group_service_registry.rb +0 -46
  100. data/lib/adwords_api/v201302/ad_param_service.rb +0 -38
  101. data/lib/adwords_api/v201302/ad_param_service_registry.rb +0 -46
  102. data/lib/adwords_api/v201302/alert_service.rb +0 -34
  103. data/lib/adwords_api/v201302/alert_service_registry.rb +0 -46
  104. data/lib/adwords_api/v201302/budget_order_service.rb +0 -42
  105. data/lib/adwords_api/v201302/budget_order_service_registry.rb +0 -46
  106. data/lib/adwords_api/v201302/budget_service.rb +0 -38
  107. data/lib/adwords_api/v201302/budget_service_registry.rb +0 -46
  108. data/lib/adwords_api/v201302/campaign_ad_extension_service.rb +0 -38
  109. data/lib/adwords_api/v201302/campaign_ad_extension_service_registry.rb +0 -46
  110. data/lib/adwords_api/v201302/campaign_criterion_service.rb +0 -42
  111. data/lib/adwords_api/v201302/campaign_criterion_service_registry.rb +0 -46
  112. data/lib/adwords_api/v201302/campaign_feed_service.rb +0 -38
  113. data/lib/adwords_api/v201302/campaign_feed_service_registry.rb +0 -46
  114. data/lib/adwords_api/v201302/campaign_service.rb +0 -42
  115. data/lib/adwords_api/v201302/campaign_service_registry.rb +0 -46
  116. data/lib/adwords_api/v201302/campaign_shared_set_service.rb +0 -38
  117. data/lib/adwords_api/v201302/campaign_shared_set_service_registry.rb +0 -47
  118. data/lib/adwords_api/v201302/constant_data_service.rb +0 -62
  119. data/lib/adwords_api/v201302/constant_data_service_registry.rb +0 -46
  120. data/lib/adwords_api/v201302/conversion_tracker_service.rb +0 -38
  121. data/lib/adwords_api/v201302/conversion_tracker_service_registry.rb +0 -46
  122. data/lib/adwords_api/v201302/customer_service.rb +0 -34
  123. data/lib/adwords_api/v201302/customer_service_registry.rb +0 -46
  124. data/lib/adwords_api/v201302/customer_sync_service.rb +0 -34
  125. data/lib/adwords_api/v201302/customer_sync_service_registry.rb +0 -47
  126. data/lib/adwords_api/v201302/data_service.rb +0 -38
  127. data/lib/adwords_api/v201302/data_service_registry.rb +0 -46
  128. data/lib/adwords_api/v201302/experiment_service.rb +0 -38
  129. data/lib/adwords_api/v201302/experiment_service_registry.rb +0 -46
  130. data/lib/adwords_api/v201302/feed_item_service.rb +0 -38
  131. data/lib/adwords_api/v201302/feed_item_service_registry.rb +0 -46
  132. data/lib/adwords_api/v201302/feed_mapping_service.rb +0 -38
  133. data/lib/adwords_api/v201302/feed_mapping_service_registry.rb +0 -46
  134. data/lib/adwords_api/v201302/feed_service.rb +0 -38
  135. data/lib/adwords_api/v201302/feed_service_registry.rb +0 -46
  136. data/lib/adwords_api/v201302/geo_location_service.rb +0 -34
  137. data/lib/adwords_api/v201302/geo_location_service_registry.rb +0 -46
  138. data/lib/adwords_api/v201302/location_criterion_service.rb +0 -34
  139. data/lib/adwords_api/v201302/location_criterion_service_registry.rb +0 -46
  140. data/lib/adwords_api/v201302/managed_customer_service.rb +0 -50
  141. data/lib/adwords_api/v201302/managed_customer_service_registry.rb +0 -46
  142. data/lib/adwords_api/v201302/media_service.rb +0 -38
  143. data/lib/adwords_api/v201302/media_service_registry.rb +0 -46
  144. data/lib/adwords_api/v201302/mutate_job_service.rb +0 -42
  145. data/lib/adwords_api/v201302/mutate_job_service_registry.rb +0 -46
  146. data/lib/adwords_api/v201302/report_definition_service.rb +0 -34
  147. data/lib/adwords_api/v201302/report_definition_service_registry.rb +0 -46
  148. data/lib/adwords_api/v201302/shared_criterion_service.rb +0 -38
  149. data/lib/adwords_api/v201302/shared_criterion_service_registry.rb +0 -47
  150. data/lib/adwords_api/v201302/shared_set_service.rb +0 -38
  151. data/lib/adwords_api/v201302/shared_set_service_registry.rb +0 -47
  152. data/lib/adwords_api/v201302/targeting_idea_service.rb +0 -38
  153. data/lib/adwords_api/v201302/targeting_idea_service_registry.rb +0 -46
  154. data/lib/adwords_api/v201302/traffic_estimator_service.rb +0 -34
  155. data/lib/adwords_api/v201302/traffic_estimator_service_registry.rb +0 -46
  156. data/lib/adwords_api/v201302/user_list_service.rb +0 -38
  157. data/lib/adwords_api/v201302/user_list_service_registry.rb +0 -46
  158. data/lib/adwords_api/v201302/video_ad_service.rb +0 -38
  159. data/lib/adwords_api/v201302/video_ad_service_registry.rb +0 -46
  160. data/lib/adwords_api/v201302/video_campaign_criterion_service.rb +0 -38
  161. data/lib/adwords_api/v201302/video_campaign_criterion_service_registry.rb +0 -47
  162. data/lib/adwords_api/v201302/video_campaign_service.rb +0 -38
  163. data/lib/adwords_api/v201302/video_campaign_service_registry.rb +0 -46
  164. data/lib/adwords_api/v201302/video_service.rb +0 -42
  165. data/lib/adwords_api/v201302/video_service_registry.rb +0 -46
  166. data/lib/adwords_api/v201302/video_targeting_group_criterion_service.rb +0 -38
  167. data/lib/adwords_api/v201302/video_targeting_group_criterion_service_registry.rb +0 -46
  168. data/lib/adwords_api/v201302/video_targeting_group_service.rb +0 -38
  169. data/lib/adwords_api/v201302/video_targeting_group_service_registry.rb +0 -46
  170. data/test/examples/v201302/test_account_management.rb +0 -50
  171. data/test/examples/v201302/test_advanced_operations.rb +0 -81
  172. data/test/examples/v201302/test_basic_operations.rb +0 -177
  173. data/test/examples/v201302/test_campaign_management.rb +0 -132
  174. data/test/examples/v201302/test_error_handling.rb +0 -63
  175. data/test/examples/v201302/test_migration.rb +0 -49
  176. data/test/examples/v201302/test_misc.rb +0 -39
  177. data/test/examples/v201302/test_optimization.rb +0 -63
  178. data/test/examples/v201302/test_remarketing.rb +0 -39
  179. data/test/examples/v201302/test_reporting.rb +0 -84
  180. data/test/examples/v201302/test_targeting.rb +0 -68
  181. data/test/examples/v201302/utils.rb +0 -267
  182. data/test/suite_exampletests_v201302.rb +0 -37
  183. data/test/templates/v201302/basic_operations_get_campaigns.def +0 -114
  184. data/test/templates/v201302/misc_use_oauth2_jwt.def +0 -131
@@ -1,68 +0,0 @@
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
- # Tests the targeting examples.
22
-
23
- require 'test/unit'
24
-
25
- require 'targeting/add_campaign_targeting_criteria'
26
- require 'targeting/add_demographic_targeting_criteria'
27
- require 'targeting/get_campaign_targeting_criteria'
28
- require 'targeting/get_targetable_languages_and_carriers'
29
- require 'targeting/lookup_location'
30
-
31
- class TestTargetingV201302 < Test::Unit::TestCase
32
- def setup
33
- @logger = Logger.new(STDOUT)
34
- @logger.level = Logger::ERROR
35
- @adwords = AdwordsApi::Api.new
36
- @adwords.logger = @logger
37
- @utils = UtilsV201302.new(@adwords)
38
- end
39
-
40
- def test_add_campaign_targeting_criteria
41
- campaign = @utils.get_campaign()
42
- assert_not_nil(campaign)
43
- assert_not_nil(campaign[:id])
44
- add_campaign_targeting_criteria(campaign[:id])
45
- end
46
-
47
- def test_add_demographic_targeting_criteria
48
- ad_group = @utils.get_ad_group()
49
- assert_not_nil(ad_group)
50
- assert_not_nil(ad_group[:id])
51
- add_demographic_targeting_criteria(ad_group[:id])
52
- end
53
-
54
- def test_get_campaign_targeting_criteria
55
- campaign = @utils.get_campaign()
56
- assert_not_nil(campaign)
57
- assert_not_nil(campaign[:id])
58
- get_campaign_targeting_criteria(campaign[:id])
59
- end
60
-
61
- def test_get_targetable_languages_and_carriers
62
- get_targetable_languages_and_carriers()
63
- end
64
-
65
- def test_lookup_location
66
- lookup_location()
67
- end
68
- end
@@ -1,267 +0,0 @@
1
- # Encoding: utf-8
2
- #
3
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
4
- #
5
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
6
- #
7
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
- # implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
- #
20
- # Utilities and constants for example tests.
21
-
22
- API_VERSION = :v201302
23
- PAGE_SIZE = 500
24
-
25
- class UtilsV201302
26
- def initialize(adwords)
27
- @adwords = adwords
28
- end
29
-
30
- def get_budget
31
- @budget ||= create_budget()
32
- return @budget
33
- end
34
-
35
- def get_campaign
36
- @campaign ||= create_campaign()
37
- return @campaign
38
- end
39
-
40
- def get_ad_group
41
- @ad_group ||= create_ad_group()
42
- return @ad_group
43
- end
44
-
45
- def get_ad
46
- @ad ||= create_ad(get_ad_group()[:id])
47
- return @ad
48
- end
49
-
50
- def get_keyword
51
- @keyword ||= create_keyword(get_ad_group()[:id])
52
- return @keyword
53
- end
54
-
55
- def get_location_extension
56
- @location_extension ||= create_location_extension(get_campaign()[:id])
57
- return @location_extension
58
- end
59
-
60
- def get_experiment
61
- @experiment ||= create_experiment(
62
- get_campaign()[:id], get_ad_group()[:id], get_keyword[:criterion][:id])
63
- return @experiment
64
- end
65
-
66
- private
67
-
68
- def create_campaign()
69
- budget = get_budget()
70
- budget_id = budget[:budget_id]
71
-
72
- campaign_srv = @adwords.service(:CampaignService, API_VERSION)
73
- campaign = {
74
- :name => "Example tests campaign #%d" % (Time.new.to_f * 1000).to_i,
75
- :status => 'PAUSED',
76
- :bidding_strategy_configuration => {
77
- :bidding_strategy_type => 'MANUAL_CPC'
78
- },
79
- :budget => {:budget_id => budget_id},
80
- :network_setting => {
81
- :target_google_search => true,
82
- :target_search_network => true,
83
- :target_content_network => true
84
- },
85
- :settings => [
86
- {
87
- :xsi_type => 'KeywordMatchSetting',
88
- :opt_in => true
89
- }
90
- ]
91
- }
92
- operation = {:operator => 'ADD', :operand => campaign}
93
- response = campaign_srv.mutate([operation])
94
- return response[:value].first
95
- end
96
-
97
- def create_budget()
98
- budget_srv = @adwords.service(:BudgetService, API_VERSION)
99
- budget = {
100
- :name => 'Example tests budget #%d' % (Time.new.to_f * 1000).to_i,
101
- :amount => {:micro_amount => 50000000},
102
- :delivery_method => 'STANDARD',
103
- :period => 'DAILY'
104
- }
105
- operation = {:operator => 'ADD', :operand => budget}
106
- response = budget_srv.mutate([operation])
107
- return response[:value].first
108
- end
109
-
110
- def create_ad_group()
111
- campaign = get_campaign()
112
- ad_group_srv = @adwords.service(:AdGroupService, API_VERSION)
113
- ad_group = {
114
- :name => "Example tests ad group #%d" % (Time.new.to_f * 1000).to_i,
115
- :status => 'ENABLED',
116
- :campaign_id => campaign[:id],
117
- :bidding_strategy_configuration => {
118
- :bids => [
119
- {
120
- :xsi_type => 'CpcBid',
121
- :bid => {:micro_amount => 10000000}
122
- }
123
- ]
124
- }
125
- }
126
- operation = {:operator => 'ADD', :operand => ad_group}
127
- response = ad_group_srv.mutate([operation])
128
- return response[:value].first
129
- end
130
-
131
- def create_ad(ad_group_id)
132
- ad_group_ad_srv = @adwords.service(:AdGroupAdService, API_VERSION)
133
- text_ad = {
134
- :xsi_type => 'TextAd',
135
- :headline => 'Examples test ad %d' % (Time.new.to_f * 1000).to_i,
136
- :description1 => 'testing ruby examples',
137
- :description2 => 'all your base are belong to us',
138
- :url => 'http://www.example.com',
139
- :display_url => 'www.example.com'
140
- }
141
- operation = {:operator => 'ADD',
142
- :operand => {:ad_group_id => ad_group_id, :ad => text_ad}}
143
- response = ad_group_ad_srv.mutate([operation])
144
- return response[:value].first
145
- end
146
-
147
- def create_keyword(ad_group_id)
148
- ad_group_criterion_srv =
149
- @adwords.service(:AdGroupCriterionService, API_VERSION)
150
- keyword = {
151
- :xsi_type => 'BiddableAdGroupCriterion',
152
- :ad_group_id => ad_group_id,
153
- :criterion => {
154
- :xsi_type => 'Keyword',
155
- :text => 'mars cruise',
156
- :match_type => 'BROAD'
157
- }
158
- }
159
- operation = {:operator => 'ADD', :operand => keyword}
160
- response = ad_group_criterion_srv.mutate([operation])
161
- return response[:value].first
162
- end
163
-
164
- def create_location_extension(campaign_id)
165
- campaign_ad_ext_srv =
166
- @adwords.service(:CampaignAdExtensionService, API_VERSION)
167
- geo_location_srv = @adwords.service(:GeoLocationService, API_VERSION)
168
-
169
- selector = {
170
- :addresses => [
171
- {
172
- :street_address => '1600 Amphitheatre Parkway',
173
- :city_name => 'Mountain View',
174
- :province_code => 'CA',
175
- :postal_code => '94043',
176
- :country_code => 'US'
177
- }
178
- ]
179
- }
180
-
181
- locations = geo_location_srv.get(selector)
182
- raise StandardError, 'Unable to retrieve geo locations.' if locations.nil?
183
-
184
- operations = locations.map do |location|
185
- {
186
- :operator => 'ADD',
187
- :operand => {
188
- :campaign_id => campaign_id,
189
- :status => 'ACTIVE',
190
- :ad_extension => {
191
- :xsi_type => 'LocationExtension',
192
- :address => location[:address],
193
- :geo_point => location[:geo_point],
194
- :encoded_location => location[:encoded_location],
195
- :source => 'ADWORDS_FRONTEND'
196
- }
197
- }
198
- }
199
- end
200
-
201
- response = campaign_ad_ext_srv.mutate(operations)
202
- extension = response[:value].first
203
- return extension
204
- end
205
-
206
- def create_experiment(campaign_id, ad_group_id, criterion_id)
207
- experiment_srv = @adwords.service(:ExperimentService, API_VERSION)
208
- ad_group_srv = @adwords.service(:AdGroupService, API_VERSION)
209
- ad_group_criterion_srv =
210
- @adwords.service(:AdGroupCriterionService, API_VERSION)
211
-
212
- operation = {
213
- :operator => 'ADD',
214
- :operand => {
215
- :campaign_id => campaign_id,
216
- :name => "Examples test experiment #%d" % (Time.new.to_f * 1000).to_i,
217
- :query_percentage => 10,
218
- :start_date_time => Time.now.strftime('%Y%m%d %H%M%S'),
219
- }
220
- }
221
- response = experiment_srv.mutate([operation])
222
- experiment = response[:value].first
223
-
224
- raise StandardError, 'Failed to create experiment' if experiment.nil?
225
-
226
- ad_group = {
227
- :id => ad_group_id,
228
- :experiment_data => {
229
- :experiment_id => experiment[:id],
230
- :experiment_delta_status => 'MODIFIED',
231
- :experiment_bid_multipliers => {
232
- :xsi_type => 'ManualCPCAdGroupExperimentBidMultipliers',
233
- :max_cpc_multiplier => {:multiplier => 1.5}
234
- }
235
- }
236
- }
237
-
238
- operation = {:operator => 'SET', :operand => ad_group}
239
- response = ad_group_srv.mutate([operation])
240
- ad_group = response[:value].first
241
-
242
- raise StandardError, 'Failed to assign experiment' if ad_group.nil?
243
-
244
- ad_group_criterion = {
245
- :xsi_type => 'BiddableAdGroupCriterion',
246
- :ad_group_id => ad_group_id,
247
- :criterion => {:id => criterion_id},
248
- :experiment_data => {
249
- :xsi_type => 'BiddableAdGroupCriterionExperimentData',
250
- :experiment_id => experiment[:id],
251
- :experiment_delta_status => 'MODIFIED',
252
- :experiment_bid_multiplier => {
253
- :xsi_type => 'ManualCPCAdGroupCriterionExperimentBidMultiplier',
254
- :max_cpc_multiplier => {:multiplier => 1.5}
255
- }
256
- }
257
- }
258
-
259
- operation = {:operator => 'SET', :operand => ad_group_criterion}
260
- response = ad_group_criterion_srv.mutate([operation])
261
- criterion = response[:value].first
262
-
263
- raise StandardError, 'Failed to assign criterion' if criterion.nil?
264
-
265
- return experiment
266
- end
267
- end
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # Test suite for v201302 example tests.
22
-
23
- require 'test/unit'
24
-
25
- $:.unshift File.expand_path('../../lib/', __FILE__)
26
- $:.unshift File.expand_path('../../', __FILE__)
27
-
28
- version = 'v201302'
29
-
30
- examples_path =
31
- File.expand_path(File.join('..', '..', 'examples', version), __FILE__)
32
- $:.unshift(examples_path)
33
-
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}
@@ -1,114 +0,0 @@
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/v201302/CampaignService").
19
- with(
20
- :body =>
21
- # autogenerated code
22
- {"env:Envelope"=>
23
- {"env:Header"=>
24
- {"wsdl:RequestHeader"=>
25
- {"userAgent"=>"ruby-tests (AwApi-Ruby/0.10.0, Common-Ruby/0.9.5, 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/v201302"}},
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/v201302"}},
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/v201302",
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/v201302">
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/v201302">
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