google-adwords-api 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
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