google-adwords-api 0.9.0 → 0.9.1

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.
data/ChangeLog CHANGED
@@ -1,3 +1,6 @@
1
+ 0.9.1:
2
+ - Support and examples for AdGroupBidModifierService.
3
+
1
4
  0.9.0:
2
5
  - Shared set support and examples (beta feature).
3
6
  - Updated feed services auto-generated code.
@@ -0,0 +1,97 @@
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
+ # This example illustrates how to add an ad group level mobile bid modifier
22
+ # override for a campaign.
23
+ #
24
+ # Tags: AdGroupBidModifierService.mutate
25
+
26
+ require 'adwords_api'
27
+
28
+ def add_ad_group_bid_modifier(ad_group_id, bid_modifier)
29
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
30
+ # when called without parameters.
31
+ adwords = AdwordsApi::Api.new
32
+
33
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
34
+ # the configuration file or provide your own logger:
35
+ # adwords.logger = Logger.new('adwords_xml.log')
36
+
37
+ bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)
38
+
39
+ # Mobile criterion ID.
40
+ criterion_id = 30001
41
+
42
+ # Prepare to add an ad group level override.
43
+ operation = {
44
+ # Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
45
+ # modifier can be removed with the 'REMOVE' operator.
46
+ :operator => 'ADD',
47
+ :operand => {
48
+ :ad_group_id => adgroup_id,
49
+ :criterion => {
50
+ :xsi_type => 'Platform',
51
+ :id => criterion_id
52
+ },
53
+ :bid_modifier => bid_modifier
54
+ }
55
+ }
56
+
57
+ # Add ad group level mobile bid modifier.
58
+ response = bid_modifier_srv.mutate([operation])
59
+ if response and response[:value]
60
+ modifier = response[:value].first
61
+ value = modifier[:bid_modifier] || 'unset'
62
+ puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d was updated with ' +
63
+ 'ad group level modifier: %s') %
64
+ [modifier[:campaign_id], modifier[:ad_group_id],
65
+ modifier[:criterion][:id], value]
66
+ else
67
+ puts 'No modifiers were added.'
68
+ end
69
+ end
70
+
71
+ if __FILE__ == $0
72
+ API_VERSION = :v201302
73
+
74
+ begin
75
+ # ID of an ad group to add an override for.
76
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
77
+ # Bid modifier to override with.
78
+ bid_modifier = 1.5
79
+
80
+ add_ad_group_bid_modifier(ad_group_id, bid_modifier)
81
+
82
+ # HTTP errors.
83
+ rescue AdsCommon::Errors::HttpError => e
84
+ puts "HTTP Error: %s" % e
85
+
86
+ # API errors.
87
+ rescue AdwordsApi::Errors::ApiException => e
88
+ puts "Message: %s" % e.message
89
+ puts 'Errors:'
90
+ e.errors.each_with_index do |error, index|
91
+ puts "\tError [%d]:" % (index + 1)
92
+ error.each do |field, value|
93
+ puts "\t\t%s: %s" % [field, value]
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,98 @@
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
+ # This example illustrates how to retrieve ad group level bid modifiers for a
22
+ # campaign.
23
+ #
24
+ # Tags: AdGroupBidModifierService.get
25
+
26
+ require 'adwords_api'
27
+
28
+ def get_ad_group_bid_modifiers(campaign_id)
29
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
30
+ # when called without parameters.
31
+ adwords = AdwordsApi::Api.new
32
+
33
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
34
+ # the configuration file or provide your own logger:
35
+ # adwords.logger = Logger.new('adwords_xml.log')
36
+
37
+ bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)
38
+
39
+ # Get all ad group bid modifiers for the campaign.
40
+ selector = {
41
+ :fields => ['CampaignId', 'AdGroupId', 'Id', 'BidModifier'],
42
+ :predicates => [
43
+ {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]}
44
+ ],
45
+ :paging => {
46
+ :start_index => 0,
47
+ :number_results => PAGE_SIZE
48
+ }
49
+ }
50
+
51
+ # Set initial values.
52
+ offset, page = 0, {}
53
+
54
+ begin
55
+ page = bid_modifier_srv.get(selector)
56
+ if page[:entries]
57
+ page[:entries].each do |modifier|
58
+ value = modifier[:bid_modifier] || 'unset'
59
+ puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d has ad group ' +
60
+ 'level modifier: %s') %
61
+ [modifier[:campaign_id], modifier[:ad_group_id],
62
+ modifier[:criterion][:id], value]
63
+ end
64
+ # Increment values to request the next page.
65
+ offset += PAGE_SIZE
66
+ selector[:paging][:start_index] = offset
67
+ else
68
+ puts 'No ad group level bid overrides returned.'
69
+ end
70
+ end while page[:total_num_entries] > offset
71
+ end
72
+
73
+ if __FILE__ == $0
74
+ API_VERSION = :v201302
75
+ PAGE_SIZE = 500
76
+
77
+ begin
78
+ # ID of a campaign to pull overrides for.
79
+ campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
80
+
81
+ get_ad_group_bid_modifiers(campaign_id)
82
+
83
+ # HTTP errors.
84
+ rescue AdsCommon::Errors::HttpError => e
85
+ puts "HTTP Error: %s" % e
86
+
87
+ # API errors.
88
+ rescue AdwordsApi::Errors::ApiException => e
89
+ puts "Message: %s" % e.message
90
+ puts 'Errors:'
91
+ e.errors.each_with_index do |error, index|
92
+ puts "\tError [%d]:" % (index + 1)
93
+ error.each do |field, value|
94
+ puts "\t\t%s: %s" % [field, value]
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,305 @@
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
+ # This example migrates legacy sitelinks to upgraded sitelinks for a given list
22
+ # of campaigns. The campaigns must be upgraded to enhanced campaigns before you
23
+ # can run this example. To upgrade a campaign to enhanced, run
24
+ # set_campaign_enhanced.rb. To get all campaigns, run get_campaigns.rb.
25
+ #
26
+ # Tags: CampaignAdExtensionService.get, CampaignAdExtensionService.mutate
27
+ # Tags: FeedService.mutate, FeedItemService.mutate, FeedMappingService.mutate
28
+ # Tags: CampaignFeedService.mutate
29
+
30
+ require 'adwords_api'
31
+
32
+ def upgrade_legacy_sitelinks(campaign_ids)
33
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
34
+ # when called without parameters.
35
+ adwords = AdwordsApi::Api.new
36
+
37
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
38
+ # the configuration file or provide your own logger:
39
+ # adwords.logger = Logger.new('adwords_xml.log')
40
+
41
+ # Obtain the required services.
42
+ campaign_ad_extension_srv =
43
+ adwords.service(:CampaignAdExtensionService, API_VERSION)
44
+ feed_mapping_srv = adwords.service(:FeedMappingService, API_VERSION)
45
+ feed_srv = adwords.service(:FeedService, API_VERSION)
46
+ feed_item_srv = adwords.service(:FeedItemService, API_VERSION)
47
+ campaign_feed_srv = adwords.service(:CampaignFeedService, API_VERSION)
48
+
49
+ # Try to retrieve an existing feed that has been mapped for use with
50
+ # sitelinks. If multiple such feeds exist, the first matching feed is
51
+ # retrieved. You could modify this code example to retrieve all the feeds
52
+ # and pick the appropriate feed based on user input.
53
+ site_links_feed = get_existing_feed(feed_mapping_srv)
54
+ if site_links_feed.nil?
55
+ # Create a feed for storing sitelinks.
56
+ site_links_feed = create_site_links_feed(feed_srv)
57
+ # Map the feed for using with sitelinks.
58
+ create_site_links_feed_mapping(feed_mapping_srv, site_links_feed)
59
+ end
60
+
61
+ campaign_ids.each do |campaign_id|
62
+ # Get legacy extensions for the campaign.
63
+ legacy_extensions = get_legacy_extensions_for_campaign(
64
+ campaign_ad_extension_srv, campaign_id)
65
+ legacy_extensions.each do |extension|
66
+ # Get the sitelinks.
67
+ legacy_site_links = extension[:ad_extension][:sitelinks]
68
+
69
+ # Add the sitelinks to the feed.
70
+ site_link_feed_item_ids = create_site_link_feed_items(feed_item_srv,
71
+ site_links_feed,
72
+ legacy_site_links)
73
+
74
+ # Associate feeditems to the campaign.
75
+ associate_sitelink_feed_items_with_campaign(campaign_feed_srv,
76
+ site_links_feed,
77
+ site_link_feed_item_ids,
78
+ campaign_id)
79
+
80
+ # Once the upgraded sitelinks are added to a campaign, the legacy
81
+ # sitelinks will stop serving. You can delete the legacy sitelinks
82
+ # once you have verified that the migration went fine. In case the
83
+ # migration didn't succeed, you can roll back the migration by deleting
84
+ # the campaign feed you created in the previous step.
85
+ campaign_ad_extension_srv.mutate([
86
+ {:operator => 'REMOVE', :operand => extension}
87
+ ])
88
+ end
89
+ end
90
+ end
91
+
92
+ # Create a feed for holding upgraded sitelinks.
93
+ def create_site_links_feed(feed_srv)
94
+ # Create the feed.
95
+ site_links_feed = {
96
+ :name => 'Feed For Sitelinks',
97
+ :attributes => [
98
+ {:type => 'STRING', :name => 'Link Text'},
99
+ {:type => 'URL', :name => 'Link URL'}
100
+ ],
101
+ :origin => 'USER'
102
+ }
103
+
104
+ # Add the feed.
105
+ response = feed_srv.mutate([
106
+ {:operator => 'ADD', :operand => site_links_feed}
107
+ ])
108
+
109
+ saved_feed = response[:value].first
110
+ return {
111
+ :site_links_feed_id => saved_feed[:id],
112
+ :saved_attributes => saved_feed[:attributes],
113
+ :link_text_feed_attribute_id => saved_feed[:attributes][0][:id],
114
+ :link_url_feed_attribute_id => saved_feed[:attributes][1][:id]
115
+ }
116
+ end
117
+
118
+ # Map the feed for use with Sitelinks.
119
+ def create_site_links_feed_mapping(feed_mapping_srv, site_links_feed)
120
+ # Map the feedAttributeIds to the fieldId constants.
121
+ link_text_field_mapping = {
122
+ :feed_attribute_id => site_links_feed[:link_text_feed_attribute_id],
123
+ :field_id => PLACEHOLDER_FIELD_SITELINK_TEXT
124
+ }
125
+ link_url_field_mapping = {
126
+ :feed_attribute_id => site_links_feed[:link_url_feed_attribute_id],
127
+ :field_id => PLACEHOLDER_FIELD_SITELINK_URL
128
+ }
129
+
130
+ # Create the field mapping.
131
+ feed_mapping = {
132
+ :placeholder_type => PLACEHOLDER_SITELINKS,
133
+ :feed_id => site_links_feed[:site_links_feed_id],
134
+ :attribute_field_mappings =>
135
+ [link_text_field_mapping, link_url_field_mapping]
136
+ }
137
+
138
+ # Save the field mapping.
139
+ feed_mapping_srv.mutate([{:operator => 'ADD', :operand => feed_mapping}])
140
+ end
141
+
142
+ # Retrieves an existing feed that is mapped to hold sitelinks. The first active
143
+ # sitelinks feed is retrieved by this method.
144
+ def get_existing_feed(feed_mapping_srv)
145
+ selector = {
146
+ :fields => ['FeedId', 'FeedMappingId', 'PlaceholderType', 'Status',
147
+ 'AttributeFieldMappings'],
148
+ :predicates => [
149
+ {
150
+ :field => 'PlaceholderType',
151
+ :operator => 'EQUALS',
152
+ :values => [PLACEHOLDER_SITELINKS]
153
+ },
154
+ {:field => 'Status', :operator => 'EQUALS', :values => ['ACTIVE']}
155
+ ]
156
+ }
157
+
158
+ response = feed_mapping_srv.get(selector)
159
+ if response and response[:entries]
160
+ response[:entries].each do |feed_mapping|
161
+ feed_id = feed_mapping[:feed_id]
162
+ text_attribute_id = nil
163
+ url_attribute_id = nil
164
+ feed_mapping[:attribute_field_mappings].each do |attribute_mapping|
165
+ case attribute_mapping[:field_id].to_i
166
+ when PLACEHOLDER_FIELD_SITELINK_TEXT
167
+ text_attribute_id = attribute_mapping[:feed_attribute_id]
168
+ when PLACEHOLDER_FIELD_SITELINK_URL
169
+ url_attribute_id = attribute_mapping[:feed_attribute_id]
170
+ end
171
+ end
172
+ unless feed_id.nil? or text_attribute_id.nil? or url_attribute_id.nil?
173
+ return {
174
+ :site_links_feed_id => feed_id,
175
+ :link_text_feed_attribute_id => text_attribute_id,
176
+ :link_url_feed_attribute_id => url_attribute_id
177
+ }
178
+ end
179
+ end
180
+ end
181
+ return nil
182
+ end
183
+
184
+ # Gets legacy sitelink extensions for a campaign.
185
+ def get_legacy_extensions_for_campaign(campaign_ad_extension_srv, campaign_id)
186
+ # Create the selector.
187
+ selector = {
188
+ :fields => ['CampaignId', 'AdExtensionId',
189
+ 'Status', 'DisplayText', 'DestinationUrl'],
190
+ :predicates => [
191
+ # Filter the results for specified campaign id.
192
+ {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]},
193
+ # Filter the results for active campaign ad extensions. You may add
194
+ # additional filtering conditions here as required.
195
+ {:field => 'Status', :operator => 'EQUALS', :values => ['ACTIVE']},
196
+ {
197
+ :field => 'AdExtensionType',
198
+ :operator => 'EQUALS',
199
+ :values => ['SITELINKS_EXTENSION']
200
+ }
201
+ ]
202
+ }
203
+ response = campaign_ad_extension_srv.get(selector)
204
+ return (response and response[:entries]) ? response[:entries] : []
205
+ end
206
+
207
+ # Adds legacy sitelinks to the sitelinks feed.
208
+ def create_site_link_feed_items(feed_item_srv, site_links_feed, site_links)
209
+ # Create operation for adding each legacy sitelink to the sitelinks feed.
210
+ feed_item_operations = site_links.map do |site_link|
211
+ {
212
+ :operator => 'ADD',
213
+ :operand => {
214
+ :feed_id => site_links_feed[:site_links_feed_id],
215
+ :attribute_values => [
216
+ {
217
+ :feed_attribute_id => site_links_feed[:link_text_feed_attribute_id],
218
+ :string_value => site_link[:display_text]
219
+ },
220
+ {
221
+ :feed_attribute_id => site_links_feed[:link_url_feed_attribute_id],
222
+ :string_value => site_link[:destination_url]
223
+ }
224
+ ]
225
+ }
226
+ }
227
+ end
228
+
229
+ response = feed_item_srv.mutate(feed_item_operations);
230
+ # Retrieve the feed item ids.
231
+ site_link_feed_item_ids = response[:value].map {|item| item[:feed_item_id]}
232
+ return site_link_feed_item_ids
233
+ end
234
+
235
+ # Associates sitelink feed items with a campaign.
236
+ def associate_sitelink_feed_items_with_campaign(campaign_feed_srv,
237
+ site_links_feed, site_link_feed_item_ids, campaign_id)
238
+ # Create a custom matching function that matches the given feed items to the
239
+ # campaign.
240
+ request_context_operand = {
241
+ :xsi_type => 'RequestContextOperand',
242
+ :context_type => 'FEED_ITEM_ID'
243
+ }
244
+
245
+ operands = site_link_feed_item_ids.map do |feed_item_id|
246
+ {
247
+ :xsi_type => 'ConstantOperand',
248
+ :long_value => feed_item_id,
249
+ :type => 'LONG'
250
+ }
251
+ end
252
+
253
+ function = {
254
+ :operator => 'IN',
255
+ :lhs_operand => [request_context_operand],
256
+ :rhs_operand => operands
257
+ }
258
+
259
+ # Create upgraded sitelinks for the campaign. Use the sitelinks feed we
260
+ # created, and restrict feed items by matching function.
261
+ campaign_feed = {
262
+ :feed_id => site_links_feed[:site_links_feed_id],
263
+ :campaign_id => campaign_id,
264
+ :matching_function => function,
265
+ :placeholder_types => [PLACEHOLDER_SITELINKS]
266
+ }
267
+
268
+ campaign_feed_srv.mutate([{:operator => 'ADD', :operand => campaign_feed}])
269
+ end
270
+
271
+ if __FILE__ == $0
272
+ API_VERSION = :v201302
273
+
274
+ # See the Placeholder reference page for a list of all the placeholder types
275
+ # and fields, see:
276
+ # https://developers.google.com/adwords/api/docs/appendix/placeholders
277
+ PLACEHOLDER_SITELINKS = 1
278
+ PLACEHOLDER_FIELD_SITELINK_TEXT = 1
279
+ PLACEHOLDER_FIELD_SITELINK_URL = 2
280
+
281
+ begin
282
+ # IDs of campaigns to add upgrade legacy sitelinks for.
283
+ campaign_ids = [
284
+ 'INSERT_CAMPAIGN_ID_HERE'.to_i,
285
+ 'INSERT_CAMPAIGN_ID_HERE'.to_i
286
+ ]
287
+
288
+ upgrade_legacy_sitelinks(campaign_ids)
289
+
290
+ # HTTP errors.
291
+ rescue AdsCommon::Errors::HttpError => e
292
+ puts "HTTP Error: %s" % e
293
+
294
+ # API errors.
295
+ rescue AdwordsApi::Errors::ApiException => e
296
+ puts "Message: %s" % e.message
297
+ puts 'Errors:'
298
+ e.errors.each_with_index do |error, index|
299
+ puts "\tError [%d]:" % (index + 1)
300
+ error.each do |field, value|
301
+ puts "\t\t%s: %s" % [field, value]
302
+ end
303
+ end
304
+ end
305
+ end
@@ -48,6 +48,7 @@ module AdwordsApi
48
48
  :v201209 => [
49
49
  :AdExtensionOverrideService,
50
50
  :AdGroupAdService,
51
+ :AdGroupBidModifierService,
51
52
  :AdGroupCriterionService,
52
53
  :AdGroupService,
53
54
  :AdParamService,
@@ -84,6 +85,7 @@ module AdwordsApi
84
85
  :v201302 => [
85
86
  :AdExtensionOverrideService,
86
87
  :AdGroupAdService,
88
+ :AdGroupBidModifierService,
87
89
  :AdGroupCriterionService,
88
90
  :AdGroupFeedService,
89
91
  :AdGroupService,
@@ -135,6 +137,7 @@ module AdwordsApi
135
137
  # v201209
136
138
  [:v201209, :AdExtensionOverrideService] => 'cm/',
137
139
  [:v201209, :AdGroupAdService] => 'cm/',
140
+ [:v201209, :AdGroupBidModifierService] => 'cm/',
138
141
  [:v201209, :AdGroupCriterionService] => 'cm/',
139
142
  [:v201209, :AdGroupService] => 'cm/',
140
143
  [:v201209, :AdParamService] => 'cm/',
@@ -170,6 +173,7 @@ module AdwordsApi
170
173
  # v201302
171
174
  [:v201302, :AdExtensionOverrideService] => 'cm/',
172
175
  [:v201302, :AdGroupAdService] => 'cm/',
176
+ [:v201302, :AdGroupBidModifierService] => 'cm/',
173
177
  [:v201302, :AdGroupCriterionService] => 'cm/',
174
178
  [:v201302, :AdGroupFeedService] => 'cm/',
175
179
  [:v201302, :AdGroupService] => 'cm/',
@@ -0,0 +1,38 @@
1
+ # Encoding: utf-8
2
+ #
3
+ # This is auto-generated code, changes will be overwritten.
4
+ #
5
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
6
+ # License:: Licensed under the Apache License, Version 2.0.
7
+ #
8
+ # Code generated by AdsCommon library 0.9.3 on 2013-05-06 15:27:10.
9
+
10
+ require 'ads_common/savon_service'
11
+ require 'adwords_api/v201209/ad_group_bid_modifier_service_registry'
12
+
13
+ module AdwordsApi; module V201209; module AdGroupBidModifierService
14
+ class AdGroupBidModifierService < AdsCommon::SavonService
15
+ def initialize(config, endpoint)
16
+ namespace = 'https://adwords.google.com/api/adwords/cm/v201209'
17
+ super(config, endpoint, namespace, :v201209)
18
+ end
19
+
20
+ def get(*args, &block)
21
+ return execute_action('get', args, &block)
22
+ end
23
+
24
+ def mutate(*args, &block)
25
+ return execute_action('mutate', args, &block)
26
+ end
27
+
28
+ private
29
+
30
+ def get_service_registry()
31
+ return AdGroupBidModifierServiceRegistry
32
+ end
33
+
34
+ def get_module()
35
+ return AdwordsApi::V201209::AdGroupBidModifierService
36
+ end
37
+ end
38
+ end; end; end
@@ -0,0 +1,46 @@
1
+ # Encoding: utf-8
2
+ #
3
+ # This is auto-generated code, changes will be overwritten.
4
+ #
5
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
6
+ # License:: Licensed under the Apache License, Version 2.0.
7
+ #
8
+ # Code generated by AdsCommon library 0.9.3 on 2013-05-06 15:27:10.
9
+
10
+ require 'adwords_api/errors'
11
+
12
+ module AdwordsApi; module V201209; module AdGroupBidModifierService
13
+ class AdGroupBidModifierServiceRegistry
14
+ ADGROUPBIDMODIFIERSERVICE_METHODS = {:get=>{:input=>[{:name=>:selector, :type=>"Selector", :min_occurs=>0, :max_occurs=>1}], :output=>{:name=>"get_response", :fields=>[{:name=>:rval, :type=>"AdGroupBidModifierPage", :min_occurs=>0, :max_occurs=>1}]}}, :mutate=>{:input=>[{:name=>:operations, :type=>"AdGroupBidModifierOperation", :min_occurs=>0, :max_occurs=>:unbounded}], :output=>{:name=>"mutate_response", :fields=>[{:name=>:rval, :type=>"AdGroupBidModifierReturnValue", :min_occurs=>0, :max_occurs=>1}]}}}
15
+ ADGROUPBIDMODIFIERSERVICE_TYPES = {:AuthenticationError=>{:fields=>[{:name=>:reason, :type=>"AuthenticationError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :AuthorizationError=>{:fields=>[{:name=>:reason, :type=>"AuthorizationError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :ClientTermsError=>{:fields=>[{:name=>:reason, :type=>"ClientTermsError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :CriterionError=>{:fields=>[{:name=>:reason, :type=>"CriterionError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :DateRange=>{:fields=>[{:name=>:min, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:max, :type=>"string", :min_occurs=>0, :max_occurs=>1}]}, :EntityNotFound=>{:fields=>[{:name=>:reason, :type=>"EntityNotFound.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :InternalApiError=>{:fields=>[{:name=>:reason, :type=>"InternalApiError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :NotWhitelistedError=>{:fields=>[{:name=>:reason, :type=>"NotWhitelistedError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :OperatorError=>{:fields=>[{:name=>:reason, :type=>"OperatorError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :OrderBy=>{:fields=>[{:name=>:field, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:sort_order, :type=>"SortOrder", :min_occurs=>0, :max_occurs=>1}]}, :Paging=>{:fields=>[{:name=>:start_index, :type=>"int", :min_occurs=>0, :max_occurs=>1}, {:name=>:number_results, :type=>"int", :min_occurs=>0, :max_occurs=>1}]}, :Platform=>{:fields=>[{:name=>:platform_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}], :base=>"Criterion"}, :Predicate=>{:fields=>[{:name=>:field, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:operator, :type=>"Predicate.Operator", :min_occurs=>0, :max_occurs=>1}, {:name=>:values, :type=>"string", :min_occurs=>0, :max_occurs=>:unbounded}]}, :QuotaCheckError=>{:fields=>[{:name=>:reason, :type=>"QuotaCheckError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :RateExceededError=>{:fields=>[{:name=>:reason, :type=>"RateExceededError.Reason", :min_occurs=>0, :max_occurs=>1}, {:name=>:rate_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:rate_scope, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:retry_after_seconds, :type=>"int", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :RequestError=>{:fields=>[{:name=>:reason, :type=>"RequestError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :SelectorError=>{:fields=>[{:name=>:reason, :type=>"SelectorError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :SizeLimitError=>{:fields=>[{:name=>:reason, :type=>"SizeLimitError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :SoapHeader=>{:fields=>[{:name=>:auth_token, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:client_customer_id, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:developer_token, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:user_agent, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:validate_only, :type=>"boolean", :min_occurs=>0, :max_occurs=>1}, {:name=>:partial_failure, :type=>"boolean", :min_occurs=>0, :max_occurs=>1}]}, :SoapResponseHeader=>{:fields=>[{:name=>:request_id, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:service_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:method_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:operations, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:response_time, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:units, :type=>"long", :min_occurs=>0, :max_occurs=>1}]}, :DatabaseError=>{:fields=>[{:name=>:reason, :type=>"DatabaseError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :ApiError=>{:fields=>[{:name=>:field_path, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:trigger, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:error_string, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:api_error_type, :original_name=>"ApiError.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :ApiException=>{:fields=>[{:name=>:errors, :type=>"ApiError", :min_occurs=>0, :max_occurs=>:unbounded}], :base=>"ApplicationException"}, :ApplicationException=>{:fields=>[{:name=>:message, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:application_exception_type, :original_name=>"ApplicationException.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}]}, :Selector=>{:fields=>[{:name=>:fields, :type=>"string", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:predicates, :type=>"Predicate", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:date_range, :type=>"DateRange", :min_occurs=>0, :max_occurs=>1}, {:name=>:ordering, :type=>"OrderBy", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:paging, :type=>"Paging", :min_occurs=>0, :max_occurs=>1}]}, :Criterion=>{:fields=>[{:name=>:id, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:type, :type=>"Criterion.Type", :min_occurs=>0, :max_occurs=>1}, {:name=>:criterion_type, :original_name=>"Criterion.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}]}, :AdGroupBidModifier=>{:fields=>[{:name=>:campaign_id, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:ad_group_id, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:criterion, :type=>"Criterion", :min_occurs=>0, :max_occurs=>1}, {:name=>:bid_modifier, :type=>"double", :min_occurs=>0, :max_occurs=>1}, {:name=>:bid_modifier_source, :type=>"BidModifierSource", :min_occurs=>0, :max_occurs=>1}]}, :AdGroupBidModifierOperation=>{:fields=>[{:name=>:operand, :type=>"AdGroupBidModifier", :min_occurs=>0, :max_occurs=>1}], :base=>"Operation"}, :AdGroupBidModifierPage=>{:fields=>[{:name=>:entries, :type=>"AdGroupBidModifier", :min_occurs=>0, :max_occurs=>:unbounded}], :base=>"Page"}, :AdGroupBidModifierReturnValue=>{:fields=>[{:name=>:value, :type=>"AdGroupBidModifier", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:partial_failure_errors, :type=>"ApiError", :min_occurs=>0, :max_occurs=>:unbounded}], :base=>"ListReturnValue"}, :ListReturnValue=>{:fields=>[{:name=>:list_return_value_type, :original_name=>"ListReturnValue.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :Operation=>{:fields=>[{:name=>:operator, :type=>"Operator", :min_occurs=>0, :max_occurs=>1}, {:name=>:operation_type, :original_name=>"Operation.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :Page=>{:fields=>[{:name=>:total_num_entries, :type=>"int", :min_occurs=>0, :max_occurs=>1}, {:name=>:page_type, :original_name=>"Page.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :"AuthenticationError.Reason"=>{:fields=>[]}, :"AuthorizationError.Reason"=>{:fields=>[]}, :BidModifierSource=>{:fields=>[]}, :"ClientTermsError.Reason"=>{:fields=>[]}, :"Criterion.Type"=>{:fields=>[]}, :"CriterionError.Reason"=>{:fields=>[]}, :"DatabaseError.Reason"=>{:fields=>[]}, :"EntityNotFound.Reason"=>{:fields=>[]}, :"InternalApiError.Reason"=>{:fields=>[]}, :"NotWhitelistedError.Reason"=>{:fields=>[]}, :Operator=>{:fields=>[]}, :"OperatorError.Reason"=>{:fields=>[]}, :"Predicate.Operator"=>{:fields=>[]}, :"QuotaCheckError.Reason"=>{:fields=>[]}, :"RateExceededError.Reason"=>{:fields=>[]}, :"RequestError.Reason"=>{:fields=>[]}, :"SelectorError.Reason"=>{:fields=>[]}, :"SizeLimitError.Reason"=>{:fields=>[]}, :SortOrder=>{:fields=>[]}}
16
+ ADGROUPBIDMODIFIERSERVICE_NAMESPACES = []
17
+
18
+ def self.get_method_signature(method_name)
19
+ return ADGROUPBIDMODIFIERSERVICE_METHODS[method_name.to_sym]
20
+ end
21
+
22
+ def self.get_type_signature(type_name)
23
+ return ADGROUPBIDMODIFIERSERVICE_TYPES[type_name.to_sym]
24
+ end
25
+
26
+ def self.get_namespace(index)
27
+ return ADGROUPBIDMODIFIERSERVICE_NAMESPACES[index]
28
+ end
29
+ end
30
+
31
+ # Base class for exceptions.
32
+ class ApplicationException < AdwordsApi::Errors::ApiException
33
+ attr_reader :message # string
34
+ attr_reader :application_exception_type # string
35
+ end
36
+
37
+ # Exception class for holding a list of service errors.
38
+ class ApiException < ApplicationException
39
+ attr_reader :errors # ApiError
40
+ def initialize(exception_fault)
41
+ @array_fields ||= []
42
+ @array_fields << 'errors'
43
+ super(exception_fault, AdGroupBidModifierServiceRegistry)
44
+ end
45
+ end
46
+ end; end; end
@@ -0,0 +1,38 @@
1
+ # Encoding: utf-8
2
+ #
3
+ # This is auto-generated code, changes will be overwritten.
4
+ #
5
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
6
+ # License:: Licensed under the Apache License, Version 2.0.
7
+ #
8
+ # Code generated by AdsCommon library 0.9.3 on 2013-05-06 15:27:50.
9
+
10
+ require 'ads_common/savon_service'
11
+ require 'adwords_api/v201302/ad_group_bid_modifier_service_registry'
12
+
13
+ module AdwordsApi; module V201302; module AdGroupBidModifierService
14
+ class AdGroupBidModifierService < AdsCommon::SavonService
15
+ def initialize(config, endpoint)
16
+ namespace = 'https://adwords.google.com/api/adwords/cm/v201302'
17
+ super(config, endpoint, namespace, :v201302)
18
+ end
19
+
20
+ def get(*args, &block)
21
+ return execute_action('get', args, &block)
22
+ end
23
+
24
+ def mutate(*args, &block)
25
+ return execute_action('mutate', args, &block)
26
+ end
27
+
28
+ private
29
+
30
+ def get_service_registry()
31
+ return AdGroupBidModifierServiceRegistry
32
+ end
33
+
34
+ def get_module()
35
+ return AdwordsApi::V201302::AdGroupBidModifierService
36
+ end
37
+ end
38
+ end; end; end
@@ -0,0 +1,46 @@
1
+ # Encoding: utf-8
2
+ #
3
+ # This is auto-generated code, changes will be overwritten.
4
+ #
5
+ # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
6
+ # License:: Licensed under the Apache License, Version 2.0.
7
+ #
8
+ # Code generated by AdsCommon library 0.9.3 on 2013-05-06 15:27:50.
9
+
10
+ require 'adwords_api/errors'
11
+
12
+ module AdwordsApi; module V201302; module AdGroupBidModifierService
13
+ class AdGroupBidModifierServiceRegistry
14
+ ADGROUPBIDMODIFIERSERVICE_METHODS = {:get=>{:input=>[{:name=>:selector, :type=>"Selector", :min_occurs=>0, :max_occurs=>1}], :output=>{:name=>"get_response", :fields=>[{:name=>:rval, :type=>"AdGroupBidModifierPage", :min_occurs=>0, :max_occurs=>1}]}}, :mutate=>{:input=>[{:name=>:operations, :type=>"AdGroupBidModifierOperation", :min_occurs=>0, :max_occurs=>:unbounded}], :output=>{:name=>"mutate_response", :fields=>[{:name=>:rval, :type=>"AdGroupBidModifierReturnValue", :min_occurs=>0, :max_occurs=>1}]}}}
15
+ ADGROUPBIDMODIFIERSERVICE_TYPES = {:AuthenticationError=>{:fields=>[{:name=>:reason, :type=>"AuthenticationError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :AuthorizationError=>{:fields=>[{:name=>:reason, :type=>"AuthorizationError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :ClientTermsError=>{:fields=>[{:name=>:reason, :type=>"ClientTermsError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :CriterionError=>{:fields=>[{:name=>:reason, :type=>"CriterionError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :DateRange=>{:fields=>[{:name=>:min, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:max, :type=>"string", :min_occurs=>0, :max_occurs=>1}]}, :DistinctError=>{:fields=>[{:name=>:reason, :type=>"DistinctError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :EntityNotFound=>{:fields=>[{:name=>:reason, :type=>"EntityNotFound.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :IdError=>{:fields=>[{:name=>:reason, :type=>"IdError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :InternalApiError=>{:fields=>[{:name=>:reason, :type=>"InternalApiError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :NotWhitelistedError=>{:fields=>[{:name=>:reason, :type=>"NotWhitelistedError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :OperatorError=>{:fields=>[{:name=>:reason, :type=>"OperatorError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :OrderBy=>{:fields=>[{:name=>:field, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:sort_order, :type=>"SortOrder", :min_occurs=>0, :max_occurs=>1}]}, :Paging=>{:fields=>[{:name=>:start_index, :type=>"int", :min_occurs=>0, :max_occurs=>1}, {:name=>:number_results, :type=>"int", :min_occurs=>0, :max_occurs=>1}]}, :Platform=>{:fields=>[{:name=>:platform_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}], :base=>"Criterion"}, :Predicate=>{:fields=>[{:name=>:field, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:operator, :type=>"Predicate.Operator", :min_occurs=>0, :max_occurs=>1}, {:name=>:values, :type=>"string", :min_occurs=>0, :max_occurs=>:unbounded}]}, :QuotaCheckError=>{:fields=>[{:name=>:reason, :type=>"QuotaCheckError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :RangeError=>{:fields=>[{:name=>:reason, :type=>"RangeError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :RateExceededError=>{:fields=>[{:name=>:reason, :type=>"RateExceededError.Reason", :min_occurs=>0, :max_occurs=>1}, {:name=>:rate_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:rate_scope, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:retry_after_seconds, :type=>"int", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :ReadOnlyError=>{:fields=>[{:name=>:reason, :type=>"ReadOnlyError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :RequestError=>{:fields=>[{:name=>:reason, :type=>"RequestError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :RequiredError=>{:fields=>[{:name=>:reason, :type=>"RequiredError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :SelectorError=>{:fields=>[{:name=>:reason, :type=>"SelectorError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :SizeLimitError=>{:fields=>[{:name=>:reason, :type=>"SizeLimitError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :SoapHeader=>{:fields=>[{:name=>:auth_token, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:client_customer_id, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:developer_token, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:user_agent, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:validate_only, :type=>"boolean", :min_occurs=>0, :max_occurs=>1}, {:name=>:partial_failure, :type=>"boolean", :min_occurs=>0, :max_occurs=>1}]}, :SoapResponseHeader=>{:fields=>[{:name=>:request_id, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:service_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:method_name, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:operations, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:response_time, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:units, :type=>"long", :min_occurs=>0, :max_occurs=>1}]}, :StringLengthError=>{:fields=>[{:name=>:reason, :type=>"StringLengthError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :DatabaseError=>{:fields=>[{:name=>:reason, :type=>"DatabaseError.Reason", :min_occurs=>0, :max_occurs=>1}], :base=>"ApiError"}, :ApiError=>{:fields=>[{:name=>:field_path, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:trigger, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:error_string, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:api_error_type, :original_name=>"ApiError.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :ApiException=>{:fields=>[{:name=>:errors, :type=>"ApiError", :min_occurs=>0, :max_occurs=>:unbounded}], :base=>"ApplicationException"}, :ApplicationException=>{:fields=>[{:name=>:message, :type=>"string", :min_occurs=>0, :max_occurs=>1}, {:name=>:application_exception_type, :original_name=>"ApplicationException.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}]}, :Selector=>{:fields=>[{:name=>:fields, :type=>"string", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:predicates, :type=>"Predicate", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:date_range, :type=>"DateRange", :min_occurs=>0, :max_occurs=>1}, {:name=>:ordering, :type=>"OrderBy", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:paging, :type=>"Paging", :min_occurs=>0, :max_occurs=>1}]}, :Criterion=>{:fields=>[{:name=>:id, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:type, :type=>"Criterion.Type", :min_occurs=>0, :max_occurs=>1}, {:name=>:criterion_type, :original_name=>"Criterion.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}]}, :AdGroupBidModifier=>{:fields=>[{:name=>:campaign_id, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:ad_group_id, :type=>"long", :min_occurs=>0, :max_occurs=>1}, {:name=>:criterion, :type=>"Criterion", :min_occurs=>0, :max_occurs=>1}, {:name=>:bid_modifier, :type=>"double", :min_occurs=>0, :max_occurs=>1}, {:name=>:bid_modifier_source, :type=>"BidModifierSource", :min_occurs=>0, :max_occurs=>1}]}, :AdGroupBidModifierOperation=>{:fields=>[{:name=>:operand, :type=>"AdGroupBidModifier", :min_occurs=>0, :max_occurs=>1}], :base=>"Operation"}, :AdGroupBidModifierPage=>{:fields=>[{:name=>:entries, :type=>"AdGroupBidModifier", :min_occurs=>0, :max_occurs=>:unbounded}], :base=>"Page"}, :AdGroupBidModifierReturnValue=>{:fields=>[{:name=>:value, :type=>"AdGroupBidModifier", :min_occurs=>0, :max_occurs=>:unbounded}, {:name=>:partial_failure_errors, :type=>"ApiError", :min_occurs=>0, :max_occurs=>:unbounded}], :base=>"ListReturnValue"}, :ListReturnValue=>{:fields=>[{:name=>:list_return_value_type, :original_name=>"ListReturnValue.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :Operation=>{:fields=>[{:name=>:operator, :type=>"Operator", :min_occurs=>0, :max_occurs=>1}, {:name=>:operation_type, :original_name=>"Operation.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :Page=>{:fields=>[{:name=>:total_num_entries, :type=>"int", :min_occurs=>0, :max_occurs=>1}, {:name=>:page_type, :original_name=>"Page.Type", :type=>"string", :min_occurs=>0, :max_occurs=>1}], :abstract=>true}, :"AuthenticationError.Reason"=>{:fields=>[]}, :"AuthorizationError.Reason"=>{:fields=>[]}, :BidModifierSource=>{:fields=>[]}, :"ClientTermsError.Reason"=>{:fields=>[]}, :"Criterion.Type"=>{:fields=>[]}, :"CriterionError.Reason"=>{:fields=>[]}, :"DatabaseError.Reason"=>{:fields=>[]}, :"DistinctError.Reason"=>{:fields=>[]}, :"EntityNotFound.Reason"=>{:fields=>[]}, :"IdError.Reason"=>{:fields=>[]}, :"InternalApiError.Reason"=>{:fields=>[]}, :"NotWhitelistedError.Reason"=>{:fields=>[]}, :Operator=>{:fields=>[]}, :"OperatorError.Reason"=>{:fields=>[]}, :"Predicate.Operator"=>{:fields=>[]}, :"QuotaCheckError.Reason"=>{:fields=>[]}, :"RangeError.Reason"=>{:fields=>[]}, :"RateExceededError.Reason"=>{:fields=>[]}, :"ReadOnlyError.Reason"=>{:fields=>[]}, :"RequestError.Reason"=>{:fields=>[]}, :"RequiredError.Reason"=>{:fields=>[]}, :"SelectorError.Reason"=>{:fields=>[]}, :"SizeLimitError.Reason"=>{:fields=>[]}, :SortOrder=>{:fields=>[]}, :"StringLengthError.Reason"=>{:fields=>[]}}
16
+ ADGROUPBIDMODIFIERSERVICE_NAMESPACES = []
17
+
18
+ def self.get_method_signature(method_name)
19
+ return ADGROUPBIDMODIFIERSERVICE_METHODS[method_name.to_sym]
20
+ end
21
+
22
+ def self.get_type_signature(type_name)
23
+ return ADGROUPBIDMODIFIERSERVICE_TYPES[type_name.to_sym]
24
+ end
25
+
26
+ def self.get_namespace(index)
27
+ return ADGROUPBIDMODIFIERSERVICE_NAMESPACES[index]
28
+ end
29
+ end
30
+
31
+ # Base class for exceptions.
32
+ class ApplicationException < AdwordsApi::Errors::ApiException
33
+ attr_reader :message # string
34
+ attr_reader :application_exception_type # string
35
+ end
36
+
37
+ # Exception class for holding a list of service errors.
38
+ class ApiException < ApplicationException
39
+ attr_reader :errors # ApiError
40
+ def initialize(exception_fault)
41
+ @array_fields ||= []
42
+ @array_fields << 'errors'
43
+ super(exception_fault, AdGroupBidModifierServiceRegistry)
44
+ end
45
+ end
46
+ end; end; end
@@ -21,6 +21,6 @@
21
21
 
22
22
  module AdwordsApi
23
23
  module ApiConfig
24
- CLIENT_LIB_VERSION = '0.9.0'
24
+ CLIENT_LIB_VERSION = '0.9.1'
25
25
  end
26
26
  end
@@ -26,6 +26,8 @@ require 'advanced_operations/add_site_links'
26
26
  require 'advanced_operations/add_click_to_download_ad'
27
27
  require 'advanced_operations/create_and_attach_shared_keyword_set'
28
28
  require 'advanced_operations/find_and_remove_criteria_from_shared_set'
29
+ require 'advanced_operations/add_ad_group_bid_modifier'
30
+ require 'advanced_operations/get_ad_group_bid_modifiers'
29
31
 
30
32
  PLACEHOLDER_SITELINKS = 1
31
33
  PLACEHOLDER_FIELD_SITELINK_LINK_TEXT = 1
@@ -61,4 +63,19 @@ class TestAdvancedOperationsV201302 < Test::Unit::TestCase
61
63
  create_and_attach_shared_keyword_set(campaign[:id])
62
64
  find_and_remove_criteria_from_shared_set(campaign[:id])
63
65
  end
66
+
67
+ def test_get_ad_group_bid_modifiers()
68
+ campaign = @utils.get_campaign()
69
+ assert_not_nil(campaign)
70
+ assert_not_nil(campaign[:id])
71
+ get_ad_group_bid_modifiers(campaign[:id])
72
+ end
73
+
74
+ def test_add_ad_group_bid_modifier()
75
+ bid_modifier = 1.1
76
+ ad_group = @utils.get_ad_group()
77
+ assert_not_nil(ad_group)
78
+ assert_not_nil(ad_group[:id])
79
+ add_ad_group_bid_modifier(ad_group[:id], bid_modifier)
80
+ end
64
81
  end
@@ -30,7 +30,6 @@ require 'campaign_management/get_all_disapproved_ads'
30
30
  require 'campaign_management/get_all_disapproved_ads_with_awql'
31
31
  require 'campaign_management/promote_experiment'
32
32
  require 'campaign_management/set_ad_parameters'
33
- require 'campaign_management/set_campaign_enhanced'
34
33
  require 'campaign_management/set_criterion_bid_modifier'
35
34
  require 'campaign_management/validate_text_ad'
36
35
 
@@ -117,13 +116,6 @@ class TestCampaignManagementV201302 < Test::Unit::TestCase
117
116
  set_ad_parameters(ad_group[:id], criterion[:criterion][:id])
118
117
  end
119
118
 
120
- def test_set_campaign_enhanced()
121
- campaign = @utils.get_campaign()
122
- assert_not_nil(campaign)
123
- assert_not_nil(campaign[:id])
124
- set_campaign_enhanced(campaign[:id])
125
- end
126
-
127
119
  def test_set_criterion_bid_modifier()
128
120
  campaign = @utils.get_campaign()
129
121
  assert_not_nil(campaign)
@@ -0,0 +1,49 @@
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
+ # Tests the migration examples.
22
+
23
+ require 'test/unit'
24
+
25
+ require 'migration/set_campaign_enhanced'
26
+
27
+ class TestMigrationV201302 < Test::Unit::TestCase
28
+ def setup
29
+ @logger = Logger.new(STDOUT)
30
+ @logger.level = Logger::ERROR
31
+ @adwords = AdwordsApi::Api.new
32
+ @adwords.logger = @logger
33
+ @utils = UtilsV201302.new(@adwords)
34
+ end
35
+
36
+ def test_set_campaign_enhanced()
37
+ campaign = @utils.get_campaign()
38
+ assert_not_nil(campaign)
39
+ assert_not_nil(campaign[:id])
40
+ set_campaign_enhanced(campaign[:id])
41
+ end
42
+
43
+ def test_upgrade_legacy_sitelinks()
44
+ campaign = @utils.get_campaign()
45
+ assert_not_nil(campaign)
46
+ assert_not_nil(campaign[:id])
47
+ upgrade_legacy_sitelinks([campaign[:id]])
48
+ end
49
+ end
@@ -22,7 +22,7 @@ def setup_mocks()
22
22
  {"env:Envelope"=>
23
23
  {"env:Header"=>
24
24
  {"wsdl:RequestHeader"=>
25
- {"userAgent"=>"ruby-tests (AwApi-Ruby/0.9.0, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, net_http)",
25
+ {"userAgent"=>"ruby-tests (AwApi-Ruby/0.9.1, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, net_http)",
26
26
  "developerToken"=>"dev_token123",
27
27
  "clientCustomerId"=>"123-456-7890",
28
28
  "authToken"=>"abcAuthbcd",
@@ -22,7 +22,7 @@ def setup_mocks()
22
22
  {"env:Envelope"=>
23
23
  {"env:Header"=>
24
24
  {"wsdl:RequestHeader"=>
25
- {"userAgent"=>"ruby-tests (AwApi-Ruby/0.9.0, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, net_http)",
25
+ {"userAgent"=>"ruby-tests (AwApi-Ruby/0.9.1, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, net_http)",
26
26
  "developerToken"=>"dev_token123",
27
27
  "clientCustomerId"=>"123-456-7890",
28
28
  "authToken"=>"abcAuthbcd",
@@ -40,7 +40,7 @@ def setup_mocks()
40
40
  {"env:Envelope"=>
41
41
  {"env:Header"=>
42
42
  {"wsdl:RequestHeader"=>
43
- {"userAgent"=>"ruby-tests (AwApi-Ruby/0.9.0, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, net_http)",
43
+ {"userAgent"=>"ruby-tests (AwApi-Ruby/0.9.1, Common-Ruby/0.9.3, Savon/1.2.0, ruby/1.9.3, HTTPI/1.1.1, net_http)",
44
44
  "developerToken"=>"dev_token123",
45
45
  "clientCustomerId"=>"123-456-7890",
46
46
  "xmlns"=>"https://adwords.google.com/api/adwords/cm/v201302"}},
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-adwords-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-17 00:00:00.000000000 Z
12
+ date: 2013-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-ads-common
@@ -66,6 +66,7 @@ files:
66
66
  - lib/adwords_api/v201302/geo_location_service.rb
67
67
  - lib/adwords_api/v201302/ad_group_criterion_service.rb
68
68
  - lib/adwords_api/v201302/managed_customer_service.rb
69
+ - lib/adwords_api/v201302/ad_group_bid_modifier_service_registry.rb
69
70
  - lib/adwords_api/v201302/user_list_service_registry.rb
70
71
  - lib/adwords_api/v201302/constant_data_service_registry.rb
71
72
  - lib/adwords_api/v201302/ad_group_ad_service.rb
@@ -106,6 +107,7 @@ files:
106
107
  - lib/adwords_api/v201302/geo_location_service_registry.rb
107
108
  - lib/adwords_api/v201302/targeting_idea_service_registry.rb
108
109
  - lib/adwords_api/v201302/data_service.rb
110
+ - lib/adwords_api/v201302/ad_group_bid_modifier_service.rb
109
111
  - lib/adwords_api/report_header_handler.rb
110
112
  - lib/adwords_api/api_config.rb
111
113
  - lib/adwords_api/errors.rb
@@ -137,6 +139,7 @@ files:
137
139
  - lib/adwords_api/v201209/ad_group_criterion_service.rb
138
140
  - lib/adwords_api/v201209/managed_customer_service.rb
139
141
  - lib/adwords_api/v201209/video_targeting_group_criterion_service_registry.rb
142
+ - lib/adwords_api/v201209/ad_group_bid_modifier_service_registry.rb
140
143
  - lib/adwords_api/v201209/video_campaign_service.rb
141
144
  - lib/adwords_api/v201209/user_list_service_registry.rb
142
145
  - lib/adwords_api/v201209/video_service_registry.rb
@@ -176,6 +179,7 @@ files:
176
179
  - lib/adwords_api/v201209/geo_location_service_registry.rb
177
180
  - lib/adwords_api/v201209/targeting_idea_service_registry.rb
178
181
  - lib/adwords_api/v201209/data_service.rb
182
+ - lib/adwords_api/v201209/ad_group_bid_modifier_service.rb
179
183
  - lib/adwords_api.rb
180
184
  - test/suite_integration.rb
181
185
  - test/examples/v201302/utils.rb
@@ -184,6 +188,7 @@ files:
184
188
  - test/examples/v201302/test_misc.rb
185
189
  - test/examples/v201302/test_remarketing.rb
186
190
  - test/examples/v201302/test_account_management.rb
191
+ - test/examples/v201302/test_migration.rb
187
192
  - test/examples/v201302/test_optimization.rb
188
193
  - test/examples/v201302/test_reporting.rb
189
194
  - test/examples/v201302/test_basic_operations.rb
@@ -237,7 +242,6 @@ files:
237
242
  - examples/v201302/campaign_management/add_keywords_in_bulk.rb
238
243
  - examples/v201302/campaign_management/promote_experiment.rb
239
244
  - examples/v201302/campaign_management/get_all_disapproved_ads.rb
240
- - examples/v201302/campaign_management/set_campaign_enhanced.rb
241
245
  - examples/v201302/campaign_management/add_location_extension_override.rb
242
246
  - examples/v201302/account_management/get_account_hierarchy.rb
243
247
  - examples/v201302/account_management/get_account_changes.rb
@@ -268,10 +272,14 @@ files:
268
272
  - examples/v201302/misc/use_oauth2_jwt.rb
269
273
  - examples/v201302/misc/get_all_images_and_videos.rb
270
274
  - examples/v201302/misc/use_oauth2.rb
275
+ - examples/v201302/migration/upgrade_legacy_sitelinks.rb
276
+ - examples/v201302/migration/set_campaign_enhanced.rb
271
277
  - examples/v201302/remarketing/add_conversion_tracker.rb
272
278
  - examples/v201302/remarketing/add_audience.rb
273
279
  - examples/v201302/advanced_operations/add_site_links.rb
280
+ - examples/v201302/advanced_operations/get_ad_group_bid_modifiers.rb
274
281
  - examples/v201302/advanced_operations/create_and_attach_shared_keyword_set.rb
282
+ - examples/v201302/advanced_operations/add_ad_group_bid_modifier.rb
275
283
  - examples/v201302/advanced_operations/find_and_remove_criteria_from_shared_set.rb
276
284
  - examples/v201302/advanced_operations/add_click_to_download_ad.rb
277
285
  - examples/v201209/reporting/download_criteria_report.rb