Class: Bing::Ads::API::V11::Services::CampaignManagement

Inherits:
Base
  • Object
show all
Defined in:
lib/bing/ads/api/v11/services/campaign_management.rb

Overview

Bing::Ads::API::V11::Services::CampaignManagement

Instance Attribute Summary

Attributes inherited from Base

#environment, #retry_attempts, #soap_client

Instance Method Summary collapse

Methods inherited from Base

#call, #response_body

Constructor Details

#initialize(options = {}) ⇒ CampaignManagement

Returns a new instance of CampaignManagement.



8
9
10
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 8

def initialize(options = {})
  super(options)
end

Instance Method Details

#add_ad_groups(campaign_id, ad_groups) ⇒ Object



79
80
81
82
83
84
85
86
87
88
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 79

def add_ad_groups(campaign_id, ad_groups)
  validate_limits!(:ad_group, :add, ad_groups)
  ad_groups = ad_groups.map { |ad_group| Bing::Ads::API::V11::Data::AdGroup.prepare(ad_group) }
  payload = {
    campaign_id: campaign_id,
    ad_groups: { ad_group: ad_groups }
  }
  response = call(:add_ad_groups, payload)
  response_body(response, __method__)
end

#add_ads(ad_group_id, ads) ⇒ Object



143
144
145
146
147
148
149
150
151
152
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 143

def add_ads(ad_group_id, ads)
  validate_limits!(:ad, :add, ads)
  ads = ads.map { |ad| Bing::Ads::API::V11::Data::ExpandedTextAd.prepare(ad) }
  payload = {
    ad_group_id: ad_group_id,
    ads: { ad: ads }
  }
  response = call(:add_ads, payload)
  response_body(response, __method__)
end

#add_campaigns(account_id, campaigns) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 30

def add_campaigns(, campaigns)
  validate_limits!(:campaign, :add, campaigns)
  campaigns = campaigns.map { |campaign| Bing::Ads::API::V11::Data::Campaign.prepare(campaign) }
  payload = {
    account_id: ,
    campaigns: { campaign: campaigns }
  }
  response = call(:add_campaigns, payload)
  response_body(response, __method__)
end

#add_keywords(ad_group_id, keywords) ⇒ Object



191
192
193
194
195
196
197
198
199
200
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 191

def add_keywords(ad_group_id, keywords)
  validate_limits!(:keyword, :add, keywords)
  keywords = keywords.map { |keyword| Bing::Ads::API::V11::Data::Keyword.prepare(keyword) }
  payload = {
    ad_group_id: ad_group_id,
    keywords: { keyword: keywords }
  }
  response = call(:add_keywords, payload)
  response_body(response, __method__)
end

#delete_ad_groups(campaign_id, ad_group_ids) ⇒ Object



101
102
103
104
105
106
107
108
109
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 101

def delete_ad_groups(campaign_id, ad_group_ids)
  validate_limits!(:ad_group, :delete, ad_group_ids)
  payload = {
    campaign_id: campaign_id,
    ad_group_ids: { 'ins1:long' => ad_group_ids }
  }
  response = call(:delete_ad_groups, payload)
  response_body(response, __method__)
end

#delete_ads(ad_group_id, ad_ids) ⇒ Object



165
166
167
168
169
170
171
172
173
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 165

def delete_ads(ad_group_id, ad_ids)
  validate_limits!(:ad, :delete, ad_ids)
  payload = {
    ad_group_id: ad_group_id,
    ad_ids: { 'ins1:long' => ad_ids }
  }
  response = call(:delete_ads, payload)
  response_body(response, __method__)
end

#delete_campaigns(account_id, campaign_ids) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 52

def delete_campaigns(, campaign_ids)
  validate_limits!(:campaign, :delete, campaign_ids)
  payload = {
    account_id: ,
    campaign_ids: { 'ins1:long' => campaign_ids }
  }
  response = call(:delete_campaigns, payload)
  response_body(response, __method__)
end

#delete_keywords(ad_group_id, keyword_ids) ⇒ Object



213
214
215
216
217
218
219
220
221
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 213

def delete_keywords(ad_group_id, keyword_ids)
  validate_limits!(:keyword, :delete, keyword_ids)
  payload = {
    ad_group_id: ad_group_id,
    keyword_ids: { 'ins1:long' => keyword_ids }
  }
  response = call(:delete_keywords, payload)
  response_body(response, __method__)
end

#get_ad_groups_by_campaign_id(campaign_id) ⇒ Object



62
63
64
65
66
67
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 62

def get_ad_groups_by_campaign_id(campaign_id)
  response = call(:get_ad_groups_by_campaign_id,
                  campaign_id: campaign_id)
  response_body = response_body(response, __method__)
  [response_body[:ad_groups][:ad_group]].flatten.compact
end

#get_ad_groups_by_ids(campaign_id, ad_groups_ids) ⇒ Object



69
70
71
72
73
74
75
76
77
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 69

def get_ad_groups_by_ids(campaign_id, ad_groups_ids)
  payload = {
    campaign_id: campaign_id,
    ad_group_ids: { 'ins1:long' => ad_groups_ids }
  }
  response = call(:get_ad_groups_by_ids, payload)
  response_body = response_body(response, __method__)
  [response_body[:ad_groups][:ad_group]].flatten
end

#get_ads_by_ad_group_id(ad_group_id) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 111

def get_ads_by_ad_group_id(ad_group_id)
  payload = {
    ad_group_id: ad_group_id,
    ad_types: all_ad_types
  }
  response = call(:get_ads_by_ad_group_id, payload)
  response_body = response_body(response, __method__)
  response_ads = [response_body[:ads][:ad]].flatten.compact
  response_ads.each_with_object({}) do |ad, obj|
    type = ad['@i:type'.to_sym]
    obj[type] ||= []
    obj[type] << ad
  end
end

#get_ads_by_ids(ad_group_id, ad_ids) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 126

def get_ads_by_ids(ad_group_id, ad_ids)
  # Order matters
  payload = {
    ad_group_id: ad_group_id,
    ad_ids: { 'ins1:long' => ad_ids },
    ad_types: all_ad_types
  }
  response = call(:get_ads_by_ids, payload)
  response_body = response_body(response, __method__)
  response_ads = [response_body[:ads][:ad]].flatten
  response_ads.each_with_object({}) do |ad, obj|
    type = ad['@i:type'.to_sym]
    obj[type] ||= []
    obj[type] << ad
  end
end

#get_campaigns_by_account_id(account_id = nil) ⇒ Object



12
13
14
15
16
17
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 12

def (=nil)
   ||= @account_id
  response = call(:get_campaigns_by_account_id, account_id: )
  response_body = response_body(response, __method__)
  [response_body[:campaigns][:campaign]].flatten.compact
end

#get_campaigns_by_ids(account_id, campaign_ids) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 19

def get_campaigns_by_ids(, campaign_ids)
   ||= @account_id
  payload = {
   account_id: ,
   campaign_ids: { 'ins1:long' => campaign_ids }
  }
  response = call(:get_campaigns_by_ids, payload)
  response_body = response_body(response, __method__)
  [response_body[:campaigns][:campaign]].flatten.compact
end

#get_keywords_by_ad_group_id(ad_group_id) ⇒ Object



175
176
177
178
179
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 175

def get_keywords_by_ad_group_id(ad_group_id)
  response = call(:get_keywords_by_ad_group_id, ad_group_id: ad_group_id)
  response_body = response_body(response, __method__)
  [response_body[:keywords][:keyword]].flatten.compact
end

#get_keywords_by_ids(ad_group_id, keyword_ids) ⇒ Object



181
182
183
184
185
186
187
188
189
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 181

def get_keywords_by_ids(ad_group_id, keyword_ids)
  payload = {
    ad_group_id: ad_group_id,
    keyword_ids: { 'ins1:long' => keyword_ids }
  }
  response = call(:get_keywords_by_ids, payload)
  response_body = response_body(response, __method__)
  [response_body[:keywords][:keyword]].flatten
end

#update_ad_groups(campaign_id, ad_groups) ⇒ Object



90
91
92
93
94
95
96
97
98
99
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 90

def update_ad_groups(campaign_id, ad_groups)
  validate_limits!(:ad_group, :update, ad_groups)
  ad_groups = ad_groups.map { |ad_group| Bing::Ads::API::V11::Data::AdGroup.prepare(ad_group) }
  payload = {
    campaign_id: campaign_id,
    ad_groups: { ad_group: ad_groups }
  }
  response = call(:update_ad_groups, payload)
  response_body(response, __method__)
end

#update_ads(ad_group_id, ads) ⇒ Object



154
155
156
157
158
159
160
161
162
163
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 154

def update_ads(ad_group_id, ads)
  validate_limits!(:ad, :update, ads)
  ads = ads.map { |ad| Bing::Ads::API::V11::Data::ExpandedTextAd.prepare(ad) }
  payload = {
    ad_group_id: ad_group_id,
    ads: { ad: ads }
  }
  response = call(:update_ads, payload)
  response_body(response, __method__)
end

#update_campaigns(account_id, campaigns) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 41

def update_campaigns(, campaigns)
  validate_limits!(:campaign, :update, campaigns)
  campaigns = campaigns.map { |campaign| Bing::Ads::API::V11::Data::Campaign.prepare(campaign) }
  payload = {
    account_id: ,
    campaigns: { campaign: campaigns }
  }
  response = call(:update_campaigns, payload)
  response_body(response, __method__)
end

#update_keywords(ad_group_id, keywords) ⇒ Object



202
203
204
205
206
207
208
209
210
211
# File 'lib/bing/ads/api/v11/services/campaign_management.rb', line 202

def update_keywords(ad_group_id, keywords)
  validate_limits!(:keyword, :update, keywords)
  keywords = keywords.map { |keyword| Bing::Ads::API::V11::Data::Keyword.prepare(keyword) }
  payload = {
    ad_group_id: ad_group_id,
    keywords: { keyword: keywords }
  }
  response = call(:update_keywords, payload)
  response_body(response, __method__)
end