From 40248a51b1ce1f813e2d0a4c9da8816b94b276e7 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Thu, 12 Apr 2018 18:57:51 -0700 Subject: [PATCH 01/25] Adds url custom parameter support. No longer strips the bid if the bid parameter is not given - pass nil to the bid parameter if you wish to remove a keyword bid. --- README.md | 5 +++++ lib/bing/ads/api/v11/data/keyword.rb | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bcf0912..30bce5c 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,11 @@ ad_group_id = 9866221838 updated_keywords = [ { id: 234873284248, + final_urls: [ '...' ], + tracking_url_template: '', + url_custom_parameters: { + foo: 'bar' + } # updated attributes }, # ... diff --git a/lib/bing/ads/api/v11/data/keyword.rb b/lib/bing/ads/api/v11/data/keyword.rb index e8f7438..268abb8 100644 --- a/lib/bing/ads/api/v11/data/keyword.rb +++ b/lib/bing/ads/api/v11/data/keyword.rb @@ -32,7 +32,7 @@ class Keyword def self.prepare(keyword_raw) # To use the AdGroup default match type bid, # set the Amount element of the Bid object to null. - keyword_raw[:bid] = { amount: keyword_raw[:bid] } + keyword_raw[:bid] = { amount: keyword_raw[:bid] } if keyword_raw.has_key? :bid if keyword_raw[:bidding_scheme] # TODO support MaxClicksBiddingScheme, MaxConversionsBiddingScheme and TargetCpaBiddingScheme keyword_raw[:bidding_scheme] = { @@ -43,9 +43,18 @@ def self.prepare(keyword_raw) keyword_raw[:final_mobile_urls] = { 'ins1:string' => keyword_raw[:final_mobile_urls] } if keyword_raw[:final_mobile_urls] keyword_raw[:final_urls] = { 'ins1:string' => keyword_raw[:final_urls] } if keyword_raw[:final_urls] # TODO FinalAppUrls - # TODO UrlCustomParameters + keyword_raw = Bing::Ads::Utils.sort_keys(keyword_raw) Bing::Ads::Utils.camelcase_keys(keyword_raw) + if keyword_raw.has_key? :url_custom_parameters + keyword_raw['v11:UrlCustomParameters'] = { '@xmlns:e301' => "http://schemas.datacontract.org/2004/07/Microsoft.AdCenter.Advertiser.CampaignManagement.Api.DataContracts.V11", 'e301:Parameters' => {'e301:CustomParameter' => []} } + keyword_raw[:url_custom_parameters].each do |k,v| + keyword_raw['v11:UrlCustomParameters']['e301:Parameters']['e301:CustomParameter'].push({ 'e301:Key' => k, 'e301:Value' => v}) + end + keyword_raw.delete :url_custom_parameters + end + + keyword_raw end end end From d2ff0c4dea0c1a60b0a2536f728913bc40a85d02 Mon Sep 17 00:00:00 2001 From: Ihor Strumetskyi Date: Fri, 31 Aug 2018 13:27:12 +0300 Subject: [PATCH 02/25] feat: upgrade to v12 --- lib/bing/ads/api/v11.rb | 2 +- lib/bing/ads/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/bing/ads/api/v11.rb b/lib/bing/ads/api/v11.rb index c9d1a57..405aaef 100644 --- a/lib/bing/ads/api/v11.rb +++ b/lib/bing/ads/api/v11.rb @@ -3,7 +3,7 @@ module Ads module API # Bing::Ads::API::V11 module V11 - NAMESPACE_IDENTIFIER = :v11 + NAMESPACE_IDENTIFIER = :v12 def self.constants @_config || fail('Error loading bing ads gem') diff --git a/lib/bing/ads/version.rb b/lib/bing/ads/version.rb index 8707b80..8739697 100644 --- a/lib/bing/ads/version.rb +++ b/lib/bing/ads/version.rb @@ -1,5 +1,5 @@ module Bing module Ads - VERSION = '0.2.0' + VERSION = '0.3.0' end end From b0fdacd870dbb57056ebdb511f8f3de09ed4d293 Mon Sep 17 00:00:00 2001 From: Ihor Strumetskyi Date: Thu, 20 Sep 2018 19:17:12 +0300 Subject: [PATCH 03/25] change api links --- lib/bing/ads/api/v11/constants/wsdl.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/bing/ads/api/v11/constants/wsdl.yml b/lib/bing/ads/api/v11/constants/wsdl.yml index 224bf79..cf12805 100644 --- a/lib/bing/ads/api/v11/constants/wsdl.yml +++ b/lib/bing/ads/api/v11/constants/wsdl.yml @@ -1,10 +1,10 @@ sandbox: - customer_management: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v11/CustomerManagementService.svc?singleWsdl - campaign_management: "https://campaign.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/CampaignManagementService.svc?singleWsdl" - reporting: "https://api.sandbox.bingads.microsoft.com/Api/Advertiser/Reporting/V11/ReportingService.svc?singleWsdl" - bulk: 'https://bulk.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/BulkService.svc?singleWsdl' + customer_management: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/V12/CustomerManagementService.svc?singleWsdl + campaign_management: "https://campaign.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/CampaignManagementService.svc?singleWsdl" + reporting: "https://api.sandbox.bingads.microsoft.com/Api/Advertiser/Reporting/V12/ReportingService.svc?singleWsdl" + bulk: 'https://bulk.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/BulkService.svc?singleWsdl' production: - customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v11/CustomerManagementService.svc?singleWsdl - campaign_management: "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/CampaignManagementService.svc?singleWsdl" - reporting: "https://api.bingads.microsoft.com/Api/Advertiser/Reporting/V11/ReportingService.svc?singleWsdl" - bulk: 'https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/BulkService.svc?singleWsdl' + customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/V12/CustomerManagementService.svc?singleWsdl + campaign_management: "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/CampaignManagementService.svc?singleWsdl" + reporting: "https://api.bingads.microsoft.com/Api/Advertiser/Reporting/V12/ReportingService.svc?singleWsdl" + bulk: 'https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/BulkService.svc?singleWsdl' From e26723e93e56b5a727863bf9af45bfa87b445800 Mon Sep 17 00:00:00 2001 From: Ihor Strumetskyi Date: Tue, 25 Sep 2018 14:46:43 +0300 Subject: [PATCH 04/25] feat: add max_rows param --- lib/bing/ads/api/v11/data/report_request.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/bing/ads/api/v11/data/report_request.rb b/lib/bing/ads/api/v11/data/report_request.rb index d6a4995..c722076 100644 --- a/lib/bing/ads/api/v11/data/report_request.rb +++ b/lib/bing/ads/api/v11/data/report_request.rb @@ -19,6 +19,7 @@ class ReportRequest :aggregation, :columns, :filter, + :max_rows, :scope, :time ] From ebffabdbbad776055a43ce7454f8f9d0e7869341 Mon Sep 17 00:00:00 2001 From: Ben Drozdoff Date: Mon, 22 Oct 2018 14:29:44 -0400 Subject: [PATCH 05/25] upgrade to v12 --- README.md | 49 +++++++++++-------- lib/bing/ads.rb | 8 +-- lib/bing/ads/api/{v11.rb => v12.rb} | 6 +-- lib/bing/ads/api/{v11 => v12}/constants.rb | 16 +++--- .../constants/campaign_management.yml | 0 .../api/{v11 => v12}/constants/languages.yml | 0 .../ads/api/{v11 => v12}/constants/limits.yml | 0 .../api/{v11 => v12}/constants/time_zones.yml | 0 .../ads/api/{v11 => v12}/constants/wsdl.yml | 16 +++--- lib/bing/ads/api/{v11 => v12}/data.rb | 0 .../ads/api/{v11 => v12}/data/ad_group.rb | 6 +-- .../ads/api/{v11 => v12}/data/campaign.rb | 6 +-- .../api/{v11 => v12}/data/expanded_text_ad.rb | 6 +-- lib/bing/ads/api/{v11 => v12}/data/keyword.rb | 6 +-- .../api/{v11 => v12}/data/report_request.rb | 6 +-- lib/bing/ads/api/{v11 => v12}/services.rb | 0 .../ads/api/{v11 => v12}/services/base.rb | 8 +-- .../ads/api/{v11 => v12}/services/bulk.rb | 4 +- .../services/campaign_management.rb | 32 ++++++------ .../services/customer_management.rb | 4 +- .../api/{v11 => v12}/services/reporting.rb | 6 +-- lib/bing/ads/version.rb | 2 +- 22 files changed, 94 insertions(+), 87 deletions(-) rename lib/bing/ads/api/{v11.rb => v12.rb} (74%) rename lib/bing/ads/api/{v11 => v12}/constants.rb (53%) rename lib/bing/ads/api/{v11 => v12}/constants/campaign_management.yml (100%) rename lib/bing/ads/api/{v11 => v12}/constants/languages.yml (100%) rename lib/bing/ads/api/{v11 => v12}/constants/limits.yml (100%) rename lib/bing/ads/api/{v11 => v12}/constants/time_zones.yml (100%) rename lib/bing/ads/api/{v11 => v12}/constants/wsdl.yml (56%) rename lib/bing/ads/api/{v11 => v12}/data.rb (100%) rename lib/bing/ads/api/{v11 => v12}/data/ad_group.rb (94%) rename lib/bing/ads/api/{v11 => v12}/data/campaign.rb (91%) rename lib/bing/ads/api/{v11 => v12}/data/expanded_text_ad.rb (90%) rename lib/bing/ads/api/{v11 => v12}/data/keyword.rb (93%) rename lib/bing/ads/api/{v11 => v12}/data/report_request.rb (96%) rename lib/bing/ads/api/{v11 => v12}/services.rb (100%) rename lib/bing/ads/api/{v11 => v12}/services/base.rb (97%) rename lib/bing/ads/api/{v11 => v12}/services/bulk.rb (94%) rename lib/bing/ads/api/{v11 => v12}/services/campaign_management.rb (93%) rename lib/bing/ads/api/{v11 => v12}/services/customer_management.rb (92%) rename lib/bing/ads/api/{v11 => v12}/services/reporting.rb (91%) diff --git a/README.md b/README.md index bcf0912..a87371d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,15 @@ [![Gem Version](https://img.shields.io/gem/v/bing-ads.svg)](https://rubygems.org/gems/bing-ads) [![Build Status](https://travis-ci.org/FindHotel/bing-ads.svg?branch=master)](https://travis-ci.org/FindHotel/bing-ads) +## We have not tested all pieces of functionality for this gem! +Please look [here](https://docs.microsoft.com/en-us/bingads/guides/migration-guide?view=bingads-12) if you're using this gem to make sure that the functionality you're looking for didn't experience a breaking change + # Bing::Ads +## An ezcater fork of a Bing Ads API client + +We forked this repo in order to upgrade to API V12. + A Ruby client for Bing Ads API that includes a proxy to all Bing Ads API web services and abstracts low level details of authentication with OAuth. ## Installation @@ -37,7 +44,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V11::Services::CustomerManagement.new(options) +service = Bing::Ads::API::V12::Services::CustomerManagement.new(options) ``` #### Getting accounts info @@ -60,7 +67,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V11::Services::CampaignManagement.new(options) +service = Bing::Ads::API::V12::Services::CampaignManagement.new(options) ``` #### Getting campaigns @@ -81,12 +88,12 @@ response = service.get_campaigns_by_ids(account_id, campaign_ids) account_id = 5278183 campaigns = [ { - budget_type: Bing::Ads::API::V11.constants.campaign_management.budget_limit_type.daily_budget_standard, + budget_type: Bing::Ads::API::V12.constants.campaign_management.budget_limit_type.daily_budget_standard, daily_budget: 2000, description: 'Amsterdam-based global campaign', name: '51 - Global - Chain - Mixed - N -en- Amsterdam - 100 - 26479', - status: Bing::Ads::API::V11.constants.campaign_management.campaign_status.paused, - time_zone: Bing::Ads::API::V11.constants.time_zones.amsterdam_berlin_bern_rome_stockholm_vienna + status: Bing::Ads::API::V12.constants.campaign_management.campaign_status.paused, + time_zone: Bing::Ads::API::V12.constants.time_zones.amsterdam_berlin_bern_rome_stockholm_vienna }, # ... ] @@ -100,11 +107,11 @@ account_id = 5278183 campaigns = [ { id: 813721838, - budget_type: Bing::Ads::API::V11.constants.campaign_management.budget_limit_type.daily_budget_standard, + budget_type: Bing::Ads::API::V12.constants.campaign_management.budget_limit_type.daily_budget_standard, }, { id: 813721849, - budget_type: Bing::Ads::API::V11.constants.campaign_management.budget_limit_type.daily_budget_standard, + budget_type: Bing::Ads::API::V12.constants.campaign_management.budget_limit_type.daily_budget_standard, }, # ... ] @@ -141,16 +148,16 @@ response = service.get_ad_groups_by_ids(campaign_id, ad_group_ids) campaign_id = 813721838 ad_groups = [ { - ad_distribution: Bing::Ads::API::V11.constants.campaign_management.ad_distribution.search, # required - ad_rotation: Bing::Ads::API::V11.constants.campaign_management.ad_rotation.optimize_for_clicks, # optional - bidding_scheme: Bing::Ads::API::V11.constants.campaign_management.bidding_scheme.inherit_from_parent, # optional + ad_distribution: Bing::Ads::API::V12.constants.campaign_management.ad_distribution.search, # required + ad_rotation: Bing::Ads::API::V12.constants.campaign_management.ad_rotation.optimize_for_clicks, # optional + bidding_scheme: Bing::Ads::API::V12.constants.campaign_management.bidding_scheme.inherit_from_parent, # optional content_match_bid: 100, # optional end_date: '31/12/2020', - status: Bing::Ads::API::V11.constants.campaign_management.ad_group_status.paused, - language: Bing::Ads::API::V11.constants.languages.english, + status: Bing::Ads::API::V12.constants.campaign_management.ad_group_status.paused, + language: Bing::Ads::API::V12.constants.languages.english, name: 'H=WHotelAmsterdam&AG=1723812002', native_bid_adjustment: -50, # optional (-100 to 900) - remarketing_targeting_setting: Bing::Ads::API::V11.constants.campaign_management.remarketing_target_setting.bid_only, # optional + remarketing_targeting_setting: Bing::Ads::API::V12.constants.campaign_management.remarketing_target_setting.bid_only, # optional search_bid: 100, # optional start_date: '5/7/2017', }, @@ -169,7 +176,7 @@ campaign_id = 813721838 ad_groups = [ { id: 9866221838, - status: Bing::Ads::API::V11.constants.campaign_management.ad_group_status.active + status: Bing::Ads::API::V12.constants.campaign_management.ad_group_status.active }, # ... ] @@ -205,7 +212,7 @@ response = service.get_ads_by_ids(ad_group_id, ad_ids) ad_group_id = 9866221838 expanded_text_ads = [ { - type: Bing::Ads::API::V11.constants.campaign_management.ad_types.expanded_text_ad, # ExpandedTextAd + type: Bing::Ads::API::V12.constants.campaign_management.ad_types.expanded_text_ad, # ExpandedTextAd path_1: 'Amsterdam', path_2: 'Hotels', text: 'Compare over 150 booking sites! Find guaranteed low hotel rates.', @@ -270,14 +277,14 @@ response = service.get_keywords_by_ids(ad_group_id, keyword_ids) ad_group_id = 9866221838 keywords = [ { - bidding_scheme: Bing::Ads::API::V11.constants.campaign_management.bidding_scheme.inherit_from_parent, + bidding_scheme: Bing::Ads::API::V12.constants.campaign_management.bidding_scheme.inherit_from_parent, bid: 5, # optional, ad final urls used if this is not set final_urls: [ 'https://www.findhotel.net/Places/Amsterdam.htm?attrs=pet-friendly' ], - match_type: Bing::Ads::API::V11.constants.campaign_management.match_types.exact, # also broad, content, phrase - status: Bing::Ads::API::V11.constants.campaign_management.keyword_statuses.active, + match_type: Bing::Ads::API::V12.constants.campaign_management.match_types.exact, # also broad, content, phrase + status: Bing::Ads::API::V12.constants.campaign_management.keyword_statuses.active, text: 'Pet-friendly Hotels in Amsterdam' }, # ... @@ -326,7 +333,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V11::Services::Bulk.new(options) +service = Bing::Ads::API::V12::Services::Bulk.new(options) ``` #### Submit a request for a URL where a bulk upload file may be posted. @@ -368,7 +375,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V11::Services::Reporting.new(options) +service = Bing::Ads::API::V12::Services::Reporting.new(options) ``` #### Submit Generate Report @@ -400,7 +407,7 @@ The required options depend on the report type you are using. Response example: ```ruby -{:report_request_id=>"30000000999745662", :@xmlns=>"https://bingads.microsoft.com/Reporting/v11"} +{:report_request_id=>"30000000999745662", :@xmlns=>"https://bingads.microsoft.com/Reporting/v12"} ``` #### Poll Generate Report diff --git a/lib/bing/ads.rb b/lib/bing/ads.rb index 1984d6a..65f6b5e 100644 --- a/lib/bing/ads.rb +++ b/lib/bing/ads.rb @@ -8,10 +8,10 @@ require 'bing/ads/api/errors' require 'bing/ads/api/soap_client' require 'bing/ads/api/http_client' -require 'bing/ads/api/v11' -require 'bing/ads/api/v11/constants' -require 'bing/ads/api/v11/data' -require 'bing/ads/api/v11/services' +require 'bing/ads/api/v12' +require 'bing/ads/api/v12/constants' +require 'bing/ads/api/v12/data' +require 'bing/ads/api/v12/services' require 'bing/ads/utils' require 'bing/ads/version' diff --git a/lib/bing/ads/api/v11.rb b/lib/bing/ads/api/v12.rb similarity index 74% rename from lib/bing/ads/api/v11.rb rename to lib/bing/ads/api/v12.rb index c9d1a57..71fc68c 100644 --- a/lib/bing/ads/api/v11.rb +++ b/lib/bing/ads/api/v12.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - # Bing::Ads::API::V11 - module V11 - NAMESPACE_IDENTIFIER = :v11 + # Bing::Ads::API::V12 + module V12 + NAMESPACE_IDENTIFIER = :v12 def self.constants @_config || fail('Error loading bing ads gem') diff --git a/lib/bing/ads/api/v11/constants.rb b/lib/bing/ads/api/v12/constants.rb similarity index 53% rename from lib/bing/ads/api/v11/constants.rb rename to lib/bing/ads/api/v12/constants.rb index 8a85fe1..24dfa9f 100644 --- a/lib/bing/ads/api/v11/constants.rb +++ b/lib/bing/ads/api/v12/constants.rb @@ -3,15 +3,15 @@ module Bing module Ads module API - # Bing::Ads::API::V11::Constants + # Bing::Ads::API::V12::Constants module Constants - root_v11_path = File.expand_path('../', __FILE__) + root_v12_path = File.expand_path('../', __FILE__) - campaign_management_path = File.join(root_v11_path, 'constants', 'campaign_management.yml') - languages_path = File.join(root_v11_path, 'constants', 'languages.yml') - limits_path = File.join(root_v11_path, 'constants', 'limits.yml') - time_zones_path = File.join(root_v11_path, 'constants', 'time_zones.yml') - wsdl_path = File.join(root_v11_path, 'constants', 'wsdl.yml') + campaign_management_path = File.join(root_v12_path, 'constants', 'campaign_management.yml') + languages_path = File.join(root_v12_path, 'constants', 'languages.yml') + limits_path = File.join(root_v12_path, 'constants', 'limits.yml') + time_zones_path = File.join(root_v12_path, 'constants', 'time_zones.yml') + wsdl_path = File.join(root_v12_path, 'constants', 'wsdl.yml') Persey.init(:default) do source :yaml, campaign_management_path, :campaign_management @@ -22,7 +22,7 @@ module Constants env :default end - Bing::Ads::API::V11.constants = Persey.config + Bing::Ads::API::V12.constants = Persey.config end end end diff --git a/lib/bing/ads/api/v11/constants/campaign_management.yml b/lib/bing/ads/api/v12/constants/campaign_management.yml similarity index 100% rename from lib/bing/ads/api/v11/constants/campaign_management.yml rename to lib/bing/ads/api/v12/constants/campaign_management.yml diff --git a/lib/bing/ads/api/v11/constants/languages.yml b/lib/bing/ads/api/v12/constants/languages.yml similarity index 100% rename from lib/bing/ads/api/v11/constants/languages.yml rename to lib/bing/ads/api/v12/constants/languages.yml diff --git a/lib/bing/ads/api/v11/constants/limits.yml b/lib/bing/ads/api/v12/constants/limits.yml similarity index 100% rename from lib/bing/ads/api/v11/constants/limits.yml rename to lib/bing/ads/api/v12/constants/limits.yml diff --git a/lib/bing/ads/api/v11/constants/time_zones.yml b/lib/bing/ads/api/v12/constants/time_zones.yml similarity index 100% rename from lib/bing/ads/api/v11/constants/time_zones.yml rename to lib/bing/ads/api/v12/constants/time_zones.yml diff --git a/lib/bing/ads/api/v11/constants/wsdl.yml b/lib/bing/ads/api/v12/constants/wsdl.yml similarity index 56% rename from lib/bing/ads/api/v11/constants/wsdl.yml rename to lib/bing/ads/api/v12/constants/wsdl.yml index 224bf79..c76eba1 100644 --- a/lib/bing/ads/api/v11/constants/wsdl.yml +++ b/lib/bing/ads/api/v12/constants/wsdl.yml @@ -1,10 +1,10 @@ sandbox: - customer_management: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v11/CustomerManagementService.svc?singleWsdl - campaign_management: "https://campaign.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/CampaignManagementService.svc?singleWsdl" - reporting: "https://api.sandbox.bingads.microsoft.com/Api/Advertiser/Reporting/V11/ReportingService.svc?singleWsdl" - bulk: 'https://bulk.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/BulkService.svc?singleWsdl' + customer_management: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v12/CustomerManagementService.svc?singleWsdl + campaign_management: "https://campaign.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/CampaignManagementService.svc?singleWsdl" + reporting: "https://api.sandbox.bingads.microsoft.com/Api/Advertiser/Reporting/V12/ReportingService.svc?singleWsdl" + bulk: 'https://bulk.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/BulkService.svc?singleWsdl' production: - customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v11/CustomerManagementService.svc?singleWsdl - campaign_management: "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/CampaignManagementService.svc?singleWsdl" - reporting: "https://api.bingads.microsoft.com/Api/Advertiser/Reporting/V11/ReportingService.svc?singleWsdl" - bulk: 'https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V11/BulkService.svc?singleWsdl' + customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v12/CustomerManagementService.svc?singleWsdl + campaign_management: "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/CampaignManagementService.svc?singleWsdl" + reporting: "https://api.bingads.microsoft.com/Api/Advertiser/Reporting/V12/ReportingService.svc?singleWsdl" + bulk: 'https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/BulkService.svc?singleWsdl' diff --git a/lib/bing/ads/api/v11/data.rb b/lib/bing/ads/api/v12/data.rb similarity index 100% rename from lib/bing/ads/api/v11/data.rb rename to lib/bing/ads/api/v12/data.rb diff --git a/lib/bing/ads/api/v11/data/ad_group.rb b/lib/bing/ads/api/v12/data/ad_group.rb similarity index 94% rename from lib/bing/ads/api/v11/data/ad_group.rb rename to lib/bing/ads/api/v12/data/ad_group.rb index f3959ba..34d4b6d 100644 --- a/lib/bing/ads/api/v11/data/ad_group.rb +++ b/lib/bing/ads/api/v12/data/ad_group.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Data - # Bing::Ads::API::V11::Data::AdGroup + # Bing::Ads::API::V12::Data::AdGroup class AdGroup # @order @@ -37,7 +37,7 @@ def self.prepare(ad_group_raw) # TODO support MaxClicksBiddingScheme, MaxConversionsBiddingScheme and TargetCpaBiddingScheme ad_group_raw[:bidding_scheme] = { type: ad_group_raw[:bidding_scheme], - '@xsi:type' => "#{Bing::Ads::API::V11::NAMESPACE_IDENTIFIER}:#{ad_group_raw[:bidding_scheme]}" + '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{ad_group_raw[:bidding_scheme]}" } end ad_group_raw[:content_match_bid] = { amount: ad_group_raw[:content_match_bid] } if ad_group_raw[:content_match_bid] diff --git a/lib/bing/ads/api/v11/data/campaign.rb b/lib/bing/ads/api/v12/data/campaign.rb similarity index 91% rename from lib/bing/ads/api/v11/data/campaign.rb rename to lib/bing/ads/api/v12/data/campaign.rb index ea80a3c..469188b 100644 --- a/lib/bing/ads/api/v11/data/campaign.rb +++ b/lib/bing/ads/api/v12/data/campaign.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Data - # Bing::Ads::API::V11::Data::Campaign + # Bing::Ads::API::V12::Data::Campaign class Campaign # @order @@ -33,7 +33,7 @@ def self.prepare(campaign_raw) campaign_raw[:bidding_scheme] = { # TODO support MaxClicksBiddingScheme, MaxConversionsBiddingScheme and TargetCpaBiddingScheme type: campaign_raw[:bidding_scheme], - '@xsi:type' => "#{Bing::Ads::API::V11::NAMESPACE_IDENTIFIER}:#{campaign_raw[:bidding_scheme]}" + '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{campaign_raw[:bidding_scheme]}" } end # TODO UrlCustomParameters diff --git a/lib/bing/ads/api/v11/data/expanded_text_ad.rb b/lib/bing/ads/api/v12/data/expanded_text_ad.rb similarity index 90% rename from lib/bing/ads/api/v11/data/expanded_text_ad.rb rename to lib/bing/ads/api/v12/data/expanded_text_ad.rb index bcdf3e8..88d6cfe 100644 --- a/lib/bing/ads/api/v11/data/expanded_text_ad.rb +++ b/lib/bing/ads/api/v12/data/expanded_text_ad.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Data - # Bing::Ads::API::V11::Data::ExpandedTextAd + # Bing::Ads::API::V12::Data::ExpandedTextAd class ExpandedTextAd # @order @@ -29,7 +29,7 @@ class ExpandedTextAd ] def self.prepare(ad_raw) - ad_raw['@xsi:type'] = "#{Bing::Ads::API::V11::NAMESPACE_IDENTIFIER}:#{ad_raw[:type]}" + ad_raw['@xsi:type'] = "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{ad_raw[:type]}" # TODO FinalAppUrls ad_raw[:final_mobile_urls] = { 'ins1:string' => ad_raw[:final_mobile_urls] } if ad_raw[:final_mobile_urls] ad_raw[:final_urls] = { 'ins1:string' => ad_raw[:final_urls] } if ad_raw[:final_urls] diff --git a/lib/bing/ads/api/v11/data/keyword.rb b/lib/bing/ads/api/v12/data/keyword.rb similarity index 93% rename from lib/bing/ads/api/v11/data/keyword.rb rename to lib/bing/ads/api/v12/data/keyword.rb index e8f7438..182a127 100644 --- a/lib/bing/ads/api/v11/data/keyword.rb +++ b/lib/bing/ads/api/v12/data/keyword.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Data - # Bing::Ads::API::V11::Data::Keyword + # Bing::Ads::API::V12::Data::Keyword class Keyword # @order @@ -37,7 +37,7 @@ def self.prepare(keyword_raw) # TODO support MaxClicksBiddingScheme, MaxConversionsBiddingScheme and TargetCpaBiddingScheme keyword_raw[:bidding_scheme] = { type: keyword_raw[:bidding_scheme], - '@xsi:type' => "#{Bing::Ads::API::V11::NAMESPACE_IDENTIFIER}:#{keyword_raw[:bidding_scheme]}" + '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{keyword_raw[:bidding_scheme]}" } end keyword_raw[:final_mobile_urls] = { 'ins1:string' => keyword_raw[:final_mobile_urls] } if keyword_raw[:final_mobile_urls] diff --git a/lib/bing/ads/api/v11/data/report_request.rb b/lib/bing/ads/api/v12/data/report_request.rb similarity index 96% rename from lib/bing/ads/api/v11/data/report_request.rb rename to lib/bing/ads/api/v12/data/report_request.rb index d6a4995..46e502b 100644 --- a/lib/bing/ads/api/v11/data/report_request.rb +++ b/lib/bing/ads/api/v12/data/report_request.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Data - # Bing::Ads::API::V11::Data::ReportRequest + # Bing::Ads::API::V12::Data::ReportRequest class ReportRequest # @order @@ -42,7 +42,7 @@ def prepare(type, report_request_raw) report_request_raw.except!(:from_date, :to_date, :account_ids) report_request = Bing::Ads::Utils.sort_keys(report_request_raw, KEYS_ORDER) - namespace_identifier = Bing::Ads::API::V11::NAMESPACE_IDENTIFIER + namespace_identifier = Bing::Ads::API::V12::NAMESPACE_IDENTIFIER { report_request: Bing::Ads::Utils.camelcase_keys(report_request), :attributes! => { diff --git a/lib/bing/ads/api/v11/services.rb b/lib/bing/ads/api/v12/services.rb similarity index 100% rename from lib/bing/ads/api/v11/services.rb rename to lib/bing/ads/api/v12/services.rb diff --git a/lib/bing/ads/api/v11/services/base.rb b/lib/bing/ads/api/v12/services/base.rb similarity index 97% rename from lib/bing/ads/api/v11/services/base.rb rename to lib/bing/ads/api/v12/services/base.rb index 89f7492..1fb7ddf 100644 --- a/lib/bing/ads/api/v11/services/base.rb +++ b/lib/bing/ads/api/v12/services/base.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Services - # Bing::Ads::API::V11::Base + # Bing::Ads::API::V12::Base class Base attr_accessor :soap_client, :environment, :retry_attempts @@ -27,7 +27,7 @@ def initialize(options = {}) @customer_id = options[:customer_id] raise 'You must set the service environment' unless @environment options[:wsdl_url] = service_wsdl_url - options[:namespace_identifier] = Bing::Ads::API::V11::NAMESPACE_IDENTIFIER + options[:namespace_identifier] = Bing::Ads::API::V12::NAMESPACE_IDENTIFIER @soap_client = Bing::Ads::API::SOAPClient.new(options) end @@ -112,7 +112,7 @@ def service_name # # @return String with the Service url def service_wsdl_url - Bing::Ads::API::V11.constants.wsdl.send(environment).send(service_name) + Bing::Ads::API::V12.constants.wsdl.send(environment).send(service_name) end def handle_soap_fault(operation, fault_detail, key) diff --git a/lib/bing/ads/api/v11/services/bulk.rb b/lib/bing/ads/api/v12/services/bulk.rb similarity index 94% rename from lib/bing/ads/api/v11/services/bulk.rb rename to lib/bing/ads/api/v12/services/bulk.rb index c47322b..40937aa 100644 --- a/lib/bing/ads/api/v11/services/bulk.rb +++ b/lib/bing/ads/api/v12/services/bulk.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Services - # Bing::Ads::API::V11::Services::Bulk + # Bing::Ads::API::V12::Services::Bulk class Bulk < Base def initialize(options = {}) super(options) diff --git a/lib/bing/ads/api/v11/services/campaign_management.rb b/lib/bing/ads/api/v12/services/campaign_management.rb similarity index 93% rename from lib/bing/ads/api/v11/services/campaign_management.rb rename to lib/bing/ads/api/v12/services/campaign_management.rb index 6587391..b642dd9 100644 --- a/lib/bing/ads/api/v11/services/campaign_management.rb +++ b/lib/bing/ads/api/v12/services/campaign_management.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Services - # Bing::Ads::API::V11::Services::CampaignManagement + # Bing::Ads::API::V12::Services::CampaignManagement class CampaignManagement < Base def initialize(options = {}) super(options) @@ -29,7 +29,7 @@ def get_campaigns_by_ids(account_id, campaign_ids) def add_campaigns(account_id, campaigns) validate_limits!(:campaign, :add, campaigns) - campaigns = campaigns.map { |campaign| Bing::Ads::API::V11::Data::Campaign.prepare(campaign) } + campaigns = campaigns.map { |campaign| Bing::Ads::API::V12::Data::Campaign.prepare(campaign) } payload = { account_id: account_id, campaigns: { campaign: campaigns } @@ -40,7 +40,7 @@ def add_campaigns(account_id, campaigns) def update_campaigns(account_id, campaigns) validate_limits!(:campaign, :update, campaigns) - campaigns = campaigns.map { |campaign| Bing::Ads::API::V11::Data::Campaign.prepare(campaign) } + campaigns = campaigns.map { |campaign| Bing::Ads::API::V12::Data::Campaign.prepare(campaign) } payload = { account_id: account_id, campaigns: { campaign: campaigns } @@ -78,7 +78,7 @@ def get_ad_groups_by_ids(campaign_id, ad_groups_ids) 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) } + ad_groups = ad_groups.map { |ad_group| Bing::Ads::API::V12::Data::AdGroup.prepare(ad_group) } payload = { campaign_id: campaign_id, ad_groups: { ad_group: ad_groups } @@ -89,7 +89,7 @@ def add_ad_groups(campaign_id, ad_groups) 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) } + ad_groups = ad_groups.map { |ad_group| Bing::Ads::API::V12::Data::AdGroup.prepare(ad_group) } payload = { campaign_id: campaign_id, ad_groups: { ad_group: ad_groups } @@ -142,7 +142,7 @@ def get_ads_by_ids(ad_group_id, ad_ids) def add_ads(ad_group_id, ads) validate_limits!(:ad, :add, ads) - ads = ads.map { |ad| Bing::Ads::API::V11::Data::ExpandedTextAd.prepare(ad) } + ads = ads.map { |ad| Bing::Ads::API::V12::Data::ExpandedTextAd.prepare(ad) } payload = { ad_group_id: ad_group_id, ads: { ad: ads } @@ -153,7 +153,7 @@ def add_ads(ad_group_id, ads) def update_ads(ad_group_id, ads) validate_limits!(:ad, :update, ads) - ads = ads.map { |ad| Bing::Ads::API::V11::Data::ExpandedTextAd.prepare(ad) } + ads = ads.map { |ad| Bing::Ads::API::V12::Data::ExpandedTextAd.prepare(ad) } payload = { ad_group_id: ad_group_id, ads: { ad: ads } @@ -190,7 +190,7 @@ def get_keywords_by_ids(ad_group_id, keyword_ids) def add_keywords(ad_group_id, keywords) validate_limits!(:keyword, :add, keywords) - keywords = keywords.map { |keyword| Bing::Ads::API::V11::Data::Keyword.prepare(keyword) } + keywords = keywords.map { |keyword| Bing::Ads::API::V12::Data::Keyword.prepare(keyword) } payload = { ad_group_id: ad_group_id, keywords: { keyword: keywords } @@ -201,7 +201,7 @@ def add_keywords(ad_group_id, keywords) def update_keywords(ad_group_id, keywords) validate_limits!(:keyword, :update, keywords) - keywords = keywords.map { |keyword| Bing::Ads::API::V11::Data::Keyword.prepare(keyword) } + keywords = keywords.map { |keyword| Bing::Ads::API::V12::Data::Keyword.prepare(keyword) } payload = { ad_group_id: ad_group_id, keywords: { keyword: keywords } @@ -310,7 +310,7 @@ def service_name end def validate_limits!(type, operation, array) - limit = Bing::Ads::API::V11.constants.limits.per_call.send(type) + limit = Bing::Ads::API::V12.constants.limits.per_call.send(type) if array.size > limit raise Bing::Ads::API::Errors::LimitError.new(operation, limit, type) end @@ -319,11 +319,11 @@ def validate_limits!(type, operation, array) def all_ad_types { ad_type: [ - Bing::Ads::API::V11.constants.campaign_management.ad_types_for_get.text, - Bing::Ads::API::V11.constants.campaign_management.ad_types_for_get.expanded_text, - Bing::Ads::API::V11.constants.campaign_management.ad_types_for_get.image, - Bing::Ads::API::V11.constants.campaign_management.ad_types_for_get.product, - Bing::Ads::API::V11.constants.campaign_management.ad_types_for_get.app_install + Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.text, + Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.expanded_text, + Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.image, + Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.product, + Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.app_install ] } end diff --git a/lib/bing/ads/api/v11/services/customer_management.rb b/lib/bing/ads/api/v12/services/customer_management.rb similarity index 92% rename from lib/bing/ads/api/v11/services/customer_management.rb rename to lib/bing/ads/api/v12/services/customer_management.rb index 0aab941..d63eb90 100644 --- a/lib/bing/ads/api/v11/services/customer_management.rb +++ b/lib/bing/ads/api/v12/services/customer_management.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V11 + module V12 module Services - # Bing::Ads::API::V11::Services::CustomerManagement + # Bing::Ads::API::V12::Services::CustomerManagement class CustomerManagement < Base def initialize(options = {}) super(options) diff --git a/lib/bing/ads/api/v11/services/reporting.rb b/lib/bing/ads/api/v12/services/reporting.rb similarity index 91% rename from lib/bing/ads/api/v11/services/reporting.rb rename to lib/bing/ads/api/v12/services/reporting.rb index 82922da..a34a5c5 100644 --- a/lib/bing/ads/api/v11/services/reporting.rb +++ b/lib/bing/ads/api/v12/services/reporting.rb @@ -1,16 +1,16 @@ module Bing module Ads module API - module V11 + module V12 module Services - # Bing::Ads::API::V11::Services::CampaignManagement + # Bing::Ads::API::V12::Services::CampaignManagement class Reporting < Base def initialize(options = {}) super(options) end def submit_generate_report(type, report_options) - payload = Bing::Ads::API::V11::Data::ReportRequest.prepare(type, report_options) + payload = Bing::Ads::API::V12::Data::ReportRequest.prepare(type, report_options) response = call(:submit_generate_report, payload) response_body = response_body(response, __method__) response_body diff --git a/lib/bing/ads/version.rb b/lib/bing/ads/version.rb index 8707b80..8739697 100644 --- a/lib/bing/ads/version.rb +++ b/lib/bing/ads/version.rb @@ -1,5 +1,5 @@ module Bing module Ads - VERSION = '0.2.0' + VERSION = '0.3.0' end end From 19b1927ef8a599756d3c2ba61020ce7c72b270f1 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 5 Nov 2018 08:43:15 -0800 Subject: [PATCH 06/25] passing in array directly --- lib/bing/ads/api/v12/services/campaign_management.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v12/services/campaign_management.rb b/lib/bing/ads/api/v12/services/campaign_management.rb index b642dd9..21e0647 100644 --- a/lib/bing/ads/api/v12/services/campaign_management.rb +++ b/lib/bing/ads/api/v12/services/campaign_management.rb @@ -20,7 +20,7 @@ def get_campaigns_by_ids(account_id, campaign_ids) account_id ||= @account_id payload = { account_id: account_id, - campaign_ids: { 'ins1:long' => campaign_ids } + campaign_ids: campaign_ids } response = call(:get_campaigns_by_ids, payload) response_body = response_body(response, __method__) From 0dc513ea067d5c27eae7c255bf137e435c2d73cf Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 5 Nov 2018 08:52:11 -0800 Subject: [PATCH 07/25] . --- lib/bing/ads/api/v12/services/campaign_management.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v12/services/campaign_management.rb b/lib/bing/ads/api/v12/services/campaign_management.rb index 21e0647..fd2aff7 100644 --- a/lib/bing/ads/api/v12/services/campaign_management.rb +++ b/lib/bing/ads/api/v12/services/campaign_management.rb @@ -20,7 +20,7 @@ def get_campaigns_by_ids(account_id, campaign_ids) account_id ||= @account_id payload = { account_id: account_id, - campaign_ids: campaign_ids + campaign_ids: { 'a1:long' => campaign_ids } } response = call(:get_campaigns_by_ids, payload) response_body = response_body(response, __method__) From 463142b623f03ad45010dddb7327af7173afe689 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 5 Nov 2018 09:01:21 -0800 Subject: [PATCH 08/25] . --- lib/bing/ads/api/v12/services/campaign_management.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v12/services/campaign_management.rb b/lib/bing/ads/api/v12/services/campaign_management.rb index fd2aff7..f9be853 100644 --- a/lib/bing/ads/api/v12/services/campaign_management.rb +++ b/lib/bing/ads/api/v12/services/campaign_management.rb @@ -18,9 +18,19 @@ def get_campaigns_by_account_id(account_id=nil) def get_campaigns_by_ids(account_id, campaign_ids) account_id ||= @account_id + campaign_ids_elements = + if campaign_ids.nil? + nil + else + { + 'a1:long' => campaign_ids, + '@xmlns:a1' => 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' + } + end + payload = { account_id: account_id, - campaign_ids: { 'a1:long' => campaign_ids } + campaign_ids: campaign_ids_elements } response = call(:get_campaigns_by_ids, payload) response_body = response_body(response, __method__) From 01c6355076d97fb44660ad3e8bf6a7f09a5c536d Mon Sep 17 00:00:00 2001 From: Ben Drozdoff Date: Thu, 1 Nov 2018 16:55:27 -0400 Subject: [PATCH 09/25] allow campaign type in fetching campaign ids --- lib/bing/ads/api/v12/services/campaign_management.rb | 4 ++-- lib/bing/ads/version.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/bing/ads/api/v12/services/campaign_management.rb b/lib/bing/ads/api/v12/services/campaign_management.rb index b642dd9..dacd5bd 100644 --- a/lib/bing/ads/api/v12/services/campaign_management.rb +++ b/lib/bing/ads/api/v12/services/campaign_management.rb @@ -9,9 +9,9 @@ def initialize(options = {}) super(options) end - def get_campaigns_by_account_id(account_id=nil) + def get_campaigns_by_account_id(account_id=nil, campaign_type: "Search") account_id ||= @account_id - response = call(:get_campaigns_by_account_id, account_id: account_id) + response = call(:get_campaigns_by_account_id, account_id: account_id, campaign_type: campaign_type) response_body = response_body(response, __method__) [response_body[:campaigns][:campaign]].flatten.compact end diff --git a/lib/bing/ads/version.rb b/lib/bing/ads/version.rb index 8739697..b3f6ec6 100644 --- a/lib/bing/ads/version.rb +++ b/lib/bing/ads/version.rb @@ -1,5 +1,5 @@ module Bing module Ads - VERSION = '0.3.0' + VERSION = '0.3.1' end end From 5187d4d950bc13b10f6eff8a05a86940c584d4eb Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Tue, 6 Nov 2018 11:13:53 -0800 Subject: [PATCH 10/25] updating to v12 --- lib/bing/ads/api/v12/data/keyword.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/bing/ads/api/v12/data/keyword.rb b/lib/bing/ads/api/v12/data/keyword.rb index b03c837..90639c3 100644 --- a/lib/bing/ads/api/v12/data/keyword.rb +++ b/lib/bing/ads/api/v12/data/keyword.rb @@ -47,9 +47,9 @@ def self.prepare(keyword_raw) keyword_raw = Bing::Ads::Utils.sort_keys(keyword_raw) Bing::Ads::Utils.camelcase_keys(keyword_raw) if keyword_raw.has_key? :url_custom_parameters - keyword_raw['v11:UrlCustomParameters'] = { '@xmlns:e301' => "http://schemas.datacontract.org/2004/07/Microsoft.AdCenter.Advertiser.CampaignManagement.Api.DataContracts.V11", 'e301:Parameters' => {'e301:CustomParameter' => []} } + keyword_raw['v12:UrlCustomParameters'] = { '@xmlns:e301' => "http://schemas.datacontract.org/2004/07/Microsoft.AdCenter.Advertiser.CampaignManagement.Api.DataContracts.V11", 'e301:Parameters' => {'e301:CustomParameter' => []} } keyword_raw[:url_custom_parameters].each do |k,v| - keyword_raw['v11:UrlCustomParameters']['e301:Parameters']['e301:CustomParameter'].push({ 'e301:Key' => k, 'e301:Value' => v}) + keyword_raw['v12:UrlCustomParameters']['e301:Parameters']['e301:CustomParameter'].push({ 'e301:Key' => k, 'e301:Value' => v}) end keyword_raw.delete :url_custom_parameters end From 6d4774f0d5ebb5cbcb21ae380b99bc30efa7fc3b Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Tue, 6 Nov 2018 11:35:42 -0800 Subject: [PATCH 11/25] . --- lib/bing/ads/api/v12/data/keyword.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/bing/ads/api/v12/data/keyword.rb b/lib/bing/ads/api/v12/data/keyword.rb index 90639c3..d06eb00 100644 --- a/lib/bing/ads/api/v12/data/keyword.rb +++ b/lib/bing/ads/api/v12/data/keyword.rb @@ -47,9 +47,9 @@ def self.prepare(keyword_raw) keyword_raw = Bing::Ads::Utils.sort_keys(keyword_raw) Bing::Ads::Utils.camelcase_keys(keyword_raw) if keyword_raw.has_key? :url_custom_parameters - keyword_raw['v12:UrlCustomParameters'] = { '@xmlns:e301' => "http://schemas.datacontract.org/2004/07/Microsoft.AdCenter.Advertiser.CampaignManagement.Api.DataContracts.V11", 'e301:Parameters' => {'e301:CustomParameter' => []} } + keyword_raw['UrlCustomParameters'] = { 'Parameters' => {'CustomParameter' => []} } keyword_raw[:url_custom_parameters].each do |k,v| - keyword_raw['v12:UrlCustomParameters']['e301:Parameters']['e301:CustomParameter'].push({ 'e301:Key' => k, 'e301:Value' => v}) + keyword_raw['UrlCustomParameters']['Parameters']['CustomParameter'].push({ 'Key' => k, 'Value' => v}) end keyword_raw.delete :url_custom_parameters end From 7c4f592d2bcb4596cbfbaf24924b1b00b07e02e6 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Tue, 6 Nov 2018 11:44:43 -0800 Subject: [PATCH 12/25] . --- lib/bing/ads/api/v12/data/keyword.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/bing/ads/api/v12/data/keyword.rb b/lib/bing/ads/api/v12/data/keyword.rb index d06eb00..c529977 100644 --- a/lib/bing/ads/api/v12/data/keyword.rb +++ b/lib/bing/ads/api/v12/data/keyword.rb @@ -40,8 +40,8 @@ def self.prepare(keyword_raw) '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{keyword_raw[:bidding_scheme]}" } end - keyword_raw[:final_mobile_urls] = { 'ins1:string' => keyword_raw[:final_mobile_urls] } if keyword_raw[:final_mobile_urls] - keyword_raw[:final_urls] = { 'ins1:string' => keyword_raw[:final_urls] } if keyword_raw[:final_urls] + keyword_raw[:final_mobile_urls] = { 'a1:string' => keyword_raw[:final_mobile_urls] } if keyword_raw[:final_mobile_urls] + keyword_raw[:final_urls] = { 'a1:string' => keyword_raw[:final_urls] } if keyword_raw[:final_urls] # TODO FinalAppUrls keyword_raw = Bing::Ads::Utils.sort_keys(keyword_raw) From 259caf5f89f938c65d5f62a268320ca73582c74b Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Tue, 6 Nov 2018 11:48:34 -0800 Subject: [PATCH 13/25] . --- lib/bing/ads/api/v12/data/keyword.rb | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/bing/ads/api/v12/data/keyword.rb b/lib/bing/ads/api/v12/data/keyword.rb index c529977..be5f265 100644 --- a/lib/bing/ads/api/v12/data/keyword.rb +++ b/lib/bing/ads/api/v12/data/keyword.rb @@ -40,8 +40,19 @@ def self.prepare(keyword_raw) '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{keyword_raw[:bidding_scheme]}" } end - keyword_raw[:final_mobile_urls] = { 'a1:string' => keyword_raw[:final_mobile_urls] } if keyword_raw[:final_mobile_urls] - keyword_raw[:final_urls] = { 'a1:string' => keyword_raw[:final_urls] } if keyword_raw[:final_urls] + + if keyword_raw[:final_mobile_urls] + keyword_raw[:final_mobile_urls] = { + 'a1:string' => keyword_raw[:final_mobile_urls], + '@xmlns:a1' => 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' + } + end + if keyword_raw[:final_urls] + keyword_raw[:final_urls] = { + 'a1:string' => keyword_raw[:final_urls], + '@xmlns:a1' => 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' + } + end # TODO FinalAppUrls keyword_raw = Bing::Ads::Utils.sort_keys(keyword_raw) From baaffea839d2952633678cb02b912f0694a70c80 Mon Sep 17 00:00:00 2001 From: Ben Drozdoff Date: Tue, 1 Oct 2019 16:15:39 -0400 Subject: [PATCH 14/25] upgrade to API version 13 --- README.md | 46 +++++++++---------- lib/bing/ads.rb | 8 ++-- lib/bing/ads/api/{v12.rb => v13.rb} | 6 +-- lib/bing/ads/api/{v12 => v13}/constants.rb | 16 +++---- .../constants/campaign_management.yml | 0 .../api/{v12 => v13}/constants/languages.yml | 0 .../ads/api/{v12 => v13}/constants/limits.yml | 0 .../api/{v12 => v13}/constants/time_zones.yml | 0 .../ads/api/{v12 => v13}/constants/wsdl.yml | 16 +++---- lib/bing/ads/api/{v12 => v13}/data.rb | 0 .../ads/api/{v12 => v13}/data/ad_group.rb | 6 +-- .../ads/api/{v12 => v13}/data/campaign.rb | 6 +-- .../api/{v12 => v13}/data/expanded_text_ad.rb | 6 +-- lib/bing/ads/api/{v12 => v13}/data/keyword.rb | 6 +-- .../api/{v12 => v13}/data/report_request.rb | 6 +-- lib/bing/ads/api/{v12 => v13}/services.rb | 0 .../ads/api/{v12 => v13}/services/base.rb | 8 ++-- .../ads/api/{v12 => v13}/services/bulk.rb | 4 +- .../services/campaign_management.rb | 32 ++++++------- .../services/customer_management.rb | 4 +- .../api/{v12 => v13}/services/reporting.rb | 6 +-- 21 files changed, 88 insertions(+), 88 deletions(-) rename lib/bing/ads/api/{v12.rb => v13.rb} (74%) rename lib/bing/ads/api/{v12 => v13}/constants.rb (53%) rename lib/bing/ads/api/{v12 => v13}/constants/campaign_management.yml (100%) rename lib/bing/ads/api/{v12 => v13}/constants/languages.yml (100%) rename lib/bing/ads/api/{v12 => v13}/constants/limits.yml (100%) rename lib/bing/ads/api/{v12 => v13}/constants/time_zones.yml (100%) rename lib/bing/ads/api/{v12 => v13}/constants/wsdl.yml (56%) rename lib/bing/ads/api/{v12 => v13}/data.rb (100%) rename lib/bing/ads/api/{v12 => v13}/data/ad_group.rb (94%) rename lib/bing/ads/api/{v12 => v13}/data/campaign.rb (91%) rename lib/bing/ads/api/{v12 => v13}/data/expanded_text_ad.rb (90%) rename lib/bing/ads/api/{v12 => v13}/data/keyword.rb (93%) rename lib/bing/ads/api/{v12 => v13}/data/report_request.rb (96%) rename lib/bing/ads/api/{v12 => v13}/services.rb (100%) rename lib/bing/ads/api/{v12 => v13}/services/base.rb (97%) rename lib/bing/ads/api/{v12 => v13}/services/bulk.rb (94%) rename lib/bing/ads/api/{v12 => v13}/services/campaign_management.rb (93%) rename lib/bing/ads/api/{v12 => v13}/services/customer_management.rb (92%) rename lib/bing/ads/api/{v12 => v13}/services/reporting.rb (91%) diff --git a/README.md b/README.md index a87371d..04ae42d 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ [![Build Status](https://travis-ci.org/FindHotel/bing-ads.svg?branch=master)](https://travis-ci.org/FindHotel/bing-ads) ## We have not tested all pieces of functionality for this gem! -Please look [here](https://docs.microsoft.com/en-us/bingads/guides/migration-guide?view=bingads-12) if you're using this gem to make sure that the functionality you're looking for didn't experience a breaking change +Please look [here](https://docs.microsoft.com/en-us/bingads/guides/migration-guide?view=bingads-13) if you're using this gem to make sure that the functionality you're looking for didn't experience a breaking change # Bing::Ads ## An ezcater fork of a Bing Ads API client -We forked this repo in order to upgrade to API V12. +We forked this repo in order to upgrade to API V12 (and now V13). A Ruby client for Bing Ads API that includes a proxy to all Bing Ads API web services and abstracts low level details of authentication with OAuth. @@ -44,7 +44,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V12::Services::CustomerManagement.new(options) +service = Bing::Ads::API::V13::Services::CustomerManagement.new(options) ``` #### Getting accounts info @@ -67,7 +67,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V12::Services::CampaignManagement.new(options) +service = Bing::Ads::API::V13::Services::CampaignManagement.new(options) ``` #### Getting campaigns @@ -88,12 +88,12 @@ response = service.get_campaigns_by_ids(account_id, campaign_ids) account_id = 5278183 campaigns = [ { - budget_type: Bing::Ads::API::V12.constants.campaign_management.budget_limit_type.daily_budget_standard, + budget_type: Bing::Ads::API::V13.constants.campaign_management.budget_limit_type.daily_budget_standard, daily_budget: 2000, description: 'Amsterdam-based global campaign', name: '51 - Global - Chain - Mixed - N -en- Amsterdam - 100 - 26479', - status: Bing::Ads::API::V12.constants.campaign_management.campaign_status.paused, - time_zone: Bing::Ads::API::V12.constants.time_zones.amsterdam_berlin_bern_rome_stockholm_vienna + status: Bing::Ads::API::V13.constants.campaign_management.campaign_status.paused, + time_zone: Bing::Ads::API::V13.constants.time_zones.amsterdam_berlin_bern_rome_stockholm_vienna }, # ... ] @@ -107,11 +107,11 @@ account_id = 5278183 campaigns = [ { id: 813721838, - budget_type: Bing::Ads::API::V12.constants.campaign_management.budget_limit_type.daily_budget_standard, + budget_type: Bing::Ads::API::V13.constants.campaign_management.budget_limit_type.daily_budget_standard, }, { id: 813721849, - budget_type: Bing::Ads::API::V12.constants.campaign_management.budget_limit_type.daily_budget_standard, + budget_type: Bing::Ads::API::V13.constants.campaign_management.budget_limit_type.daily_budget_standard, }, # ... ] @@ -148,16 +148,16 @@ response = service.get_ad_groups_by_ids(campaign_id, ad_group_ids) campaign_id = 813721838 ad_groups = [ { - ad_distribution: Bing::Ads::API::V12.constants.campaign_management.ad_distribution.search, # required - ad_rotation: Bing::Ads::API::V12.constants.campaign_management.ad_rotation.optimize_for_clicks, # optional - bidding_scheme: Bing::Ads::API::V12.constants.campaign_management.bidding_scheme.inherit_from_parent, # optional + ad_distribution: Bing::Ads::API::V13.constants.campaign_management.ad_distribution.search, # required + ad_rotation: Bing::Ads::API::V13.constants.campaign_management.ad_rotation.optimize_for_clicks, # optional + bidding_scheme: Bing::Ads::API::V13.constants.campaign_management.bidding_scheme.inherit_from_parent, # optional content_match_bid: 100, # optional end_date: '31/12/2020', - status: Bing::Ads::API::V12.constants.campaign_management.ad_group_status.paused, - language: Bing::Ads::API::V12.constants.languages.english, + status: Bing::Ads::API::V13.constants.campaign_management.ad_group_status.paused, + language: Bing::Ads::API::V13.constants.languages.english, name: 'H=WHotelAmsterdam&AG=1723812002', native_bid_adjustment: -50, # optional (-100 to 900) - remarketing_targeting_setting: Bing::Ads::API::V12.constants.campaign_management.remarketing_target_setting.bid_only, # optional + remarketing_targeting_setting: Bing::Ads::API::V13.constants.campaign_management.remarketing_target_setting.bid_only, # optional search_bid: 100, # optional start_date: '5/7/2017', }, @@ -176,7 +176,7 @@ campaign_id = 813721838 ad_groups = [ { id: 9866221838, - status: Bing::Ads::API::V12.constants.campaign_management.ad_group_status.active + status: Bing::Ads::API::V13.constants.campaign_management.ad_group_status.active }, # ... ] @@ -212,7 +212,7 @@ response = service.get_ads_by_ids(ad_group_id, ad_ids) ad_group_id = 9866221838 expanded_text_ads = [ { - type: Bing::Ads::API::V12.constants.campaign_management.ad_types.expanded_text_ad, # ExpandedTextAd + type: Bing::Ads::API::V13.constants.campaign_management.ad_types.expanded_text_ad, # ExpandedTextAd path_1: 'Amsterdam', path_2: 'Hotels', text: 'Compare over 150 booking sites! Find guaranteed low hotel rates.', @@ -277,14 +277,14 @@ response = service.get_keywords_by_ids(ad_group_id, keyword_ids) ad_group_id = 9866221838 keywords = [ { - bidding_scheme: Bing::Ads::API::V12.constants.campaign_management.bidding_scheme.inherit_from_parent, + bidding_scheme: Bing::Ads::API::V13.constants.campaign_management.bidding_scheme.inherit_from_parent, bid: 5, # optional, ad final urls used if this is not set final_urls: [ 'https://www.findhotel.net/Places/Amsterdam.htm?attrs=pet-friendly' ], - match_type: Bing::Ads::API::V12.constants.campaign_management.match_types.exact, # also broad, content, phrase - status: Bing::Ads::API::V12.constants.campaign_management.keyword_statuses.active, + match_type: Bing::Ads::API::V13.constants.campaign_management.match_types.exact, # also broad, content, phrase + status: Bing::Ads::API::V13.constants.campaign_management.keyword_statuses.active, text: 'Pet-friendly Hotels in Amsterdam' }, # ... @@ -333,7 +333,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V12::Services::Bulk.new(options) +service = Bing::Ads::API::V13::Services::Bulk.new(options) ``` #### Submit a request for a URL where a bulk upload file may be posted. @@ -375,7 +375,7 @@ options = { # client_settings: { logger: LOGGER::STDOUT } } -service = Bing::Ads::API::V12::Services::Reporting.new(options) +service = Bing::Ads::API::V13::Services::Reporting.new(options) ``` #### Submit Generate Report @@ -407,7 +407,7 @@ The required options depend on the report type you are using. Response example: ```ruby -{:report_request_id=>"30000000999745662", :@xmlns=>"https://bingads.microsoft.com/Reporting/v12"} +{:report_request_id=>"30000000999745662", :@xmlns=>"https://bingads.microsoft.com/Reporting/v13"} ``` #### Poll Generate Report diff --git a/lib/bing/ads.rb b/lib/bing/ads.rb index 65f6b5e..4a2c5ff 100644 --- a/lib/bing/ads.rb +++ b/lib/bing/ads.rb @@ -8,10 +8,10 @@ require 'bing/ads/api/errors' require 'bing/ads/api/soap_client' require 'bing/ads/api/http_client' -require 'bing/ads/api/v12' -require 'bing/ads/api/v12/constants' -require 'bing/ads/api/v12/data' -require 'bing/ads/api/v12/services' +require 'bing/ads/api/v13' +require 'bing/ads/api/v13/constants' +require 'bing/ads/api/v13/data' +require 'bing/ads/api/v13/services' require 'bing/ads/utils' require 'bing/ads/version' diff --git a/lib/bing/ads/api/v12.rb b/lib/bing/ads/api/v13.rb similarity index 74% rename from lib/bing/ads/api/v12.rb rename to lib/bing/ads/api/v13.rb index 71fc68c..2624f5b 100644 --- a/lib/bing/ads/api/v12.rb +++ b/lib/bing/ads/api/v13.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - # Bing::Ads::API::V12 - module V12 - NAMESPACE_IDENTIFIER = :v12 + # Bing::Ads::API::V13 + module V13 + NAMESPACE_IDENTIFIER = :v13 def self.constants @_config || fail('Error loading bing ads gem') diff --git a/lib/bing/ads/api/v12/constants.rb b/lib/bing/ads/api/v13/constants.rb similarity index 53% rename from lib/bing/ads/api/v12/constants.rb rename to lib/bing/ads/api/v13/constants.rb index 24dfa9f..268a4ac 100644 --- a/lib/bing/ads/api/v12/constants.rb +++ b/lib/bing/ads/api/v13/constants.rb @@ -3,15 +3,15 @@ module Bing module Ads module API - # Bing::Ads::API::V12::Constants + # Bing::Ads::API::V13::Constants module Constants - root_v12_path = File.expand_path('../', __FILE__) + root_v13_path = File.expand_path('../', __FILE__) - campaign_management_path = File.join(root_v12_path, 'constants', 'campaign_management.yml') - languages_path = File.join(root_v12_path, 'constants', 'languages.yml') - limits_path = File.join(root_v12_path, 'constants', 'limits.yml') - time_zones_path = File.join(root_v12_path, 'constants', 'time_zones.yml') - wsdl_path = File.join(root_v12_path, 'constants', 'wsdl.yml') + campaign_management_path = File.join(root_v13_path, 'constants', 'campaign_management.yml') + languages_path = File.join(root_v13_path, 'constants', 'languages.yml') + limits_path = File.join(root_v13_path, 'constants', 'limits.yml') + time_zones_path = File.join(root_v13_path, 'constants', 'time_zones.yml') + wsdl_path = File.join(root_v13_path, 'constants', 'wsdl.yml') Persey.init(:default) do source :yaml, campaign_management_path, :campaign_management @@ -22,7 +22,7 @@ module Constants env :default end - Bing::Ads::API::V12.constants = Persey.config + Bing::Ads::API::V13.constants = Persey.config end end end diff --git a/lib/bing/ads/api/v12/constants/campaign_management.yml b/lib/bing/ads/api/v13/constants/campaign_management.yml similarity index 100% rename from lib/bing/ads/api/v12/constants/campaign_management.yml rename to lib/bing/ads/api/v13/constants/campaign_management.yml diff --git a/lib/bing/ads/api/v12/constants/languages.yml b/lib/bing/ads/api/v13/constants/languages.yml similarity index 100% rename from lib/bing/ads/api/v12/constants/languages.yml rename to lib/bing/ads/api/v13/constants/languages.yml diff --git a/lib/bing/ads/api/v12/constants/limits.yml b/lib/bing/ads/api/v13/constants/limits.yml similarity index 100% rename from lib/bing/ads/api/v12/constants/limits.yml rename to lib/bing/ads/api/v13/constants/limits.yml diff --git a/lib/bing/ads/api/v12/constants/time_zones.yml b/lib/bing/ads/api/v13/constants/time_zones.yml similarity index 100% rename from lib/bing/ads/api/v12/constants/time_zones.yml rename to lib/bing/ads/api/v13/constants/time_zones.yml diff --git a/lib/bing/ads/api/v12/constants/wsdl.yml b/lib/bing/ads/api/v13/constants/wsdl.yml similarity index 56% rename from lib/bing/ads/api/v12/constants/wsdl.yml rename to lib/bing/ads/api/v13/constants/wsdl.yml index c76eba1..01ffbb1 100644 --- a/lib/bing/ads/api/v12/constants/wsdl.yml +++ b/lib/bing/ads/api/v13/constants/wsdl.yml @@ -1,10 +1,10 @@ sandbox: - customer_management: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v12/CustomerManagementService.svc?singleWsdl - campaign_management: "https://campaign.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/CampaignManagementService.svc?singleWsdl" - reporting: "https://api.sandbox.bingads.microsoft.com/Api/Advertiser/Reporting/V12/ReportingService.svc?singleWsdl" - bulk: 'https://bulk.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/BulkService.svc?singleWsdl' + customer_management: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v13/CustomerManagementService.svc?singleWsdl + campaign_management: "https://campaign.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V13/CampaignManagementService.svc?singleWsdl" + reporting: "https://api.sandbox.bingads.microsoft.com/Api/Advertiser/Reporting/V13/ReportingService.svc?singleWsdl" + bulk: 'https://bulk.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V13/BulkService.svc?singleWsdl' production: - customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v12/CustomerManagementService.svc?singleWsdl - campaign_management: "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/CampaignManagementService.svc?singleWsdl" - reporting: "https://api.bingads.microsoft.com/Api/Advertiser/Reporting/V12/ReportingService.svc?singleWsdl" - bulk: 'https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V12/BulkService.svc?singleWsdl' + customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v13/CustomerManagementService.svc?singleWsdl + campaign_management: "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V13/CampaignManagementService.svc?singleWsdl" + reporting: "https://api.bingads.microsoft.com/Api/Advertiser/Reporting/V13/ReportingService.svc?singleWsdl" + bulk: 'https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V13/BulkService.svc?singleWsdl' diff --git a/lib/bing/ads/api/v12/data.rb b/lib/bing/ads/api/v13/data.rb similarity index 100% rename from lib/bing/ads/api/v12/data.rb rename to lib/bing/ads/api/v13/data.rb diff --git a/lib/bing/ads/api/v12/data/ad_group.rb b/lib/bing/ads/api/v13/data/ad_group.rb similarity index 94% rename from lib/bing/ads/api/v12/data/ad_group.rb rename to lib/bing/ads/api/v13/data/ad_group.rb index 34d4b6d..42f8375 100644 --- a/lib/bing/ads/api/v12/data/ad_group.rb +++ b/lib/bing/ads/api/v13/data/ad_group.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Data - # Bing::Ads::API::V12::Data::AdGroup + # Bing::Ads::API::V13::Data::AdGroup class AdGroup # @order @@ -37,7 +37,7 @@ def self.prepare(ad_group_raw) # TODO support MaxClicksBiddingScheme, MaxConversionsBiddingScheme and TargetCpaBiddingScheme ad_group_raw[:bidding_scheme] = { type: ad_group_raw[:bidding_scheme], - '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{ad_group_raw[:bidding_scheme]}" + '@xsi:type' => "#{Bing::Ads::API::V13::NAMESPACE_IDENTIFIER}:#{ad_group_raw[:bidding_scheme]}" } end ad_group_raw[:content_match_bid] = { amount: ad_group_raw[:content_match_bid] } if ad_group_raw[:content_match_bid] diff --git a/lib/bing/ads/api/v12/data/campaign.rb b/lib/bing/ads/api/v13/data/campaign.rb similarity index 91% rename from lib/bing/ads/api/v12/data/campaign.rb rename to lib/bing/ads/api/v13/data/campaign.rb index 469188b..c44bd24 100644 --- a/lib/bing/ads/api/v12/data/campaign.rb +++ b/lib/bing/ads/api/v13/data/campaign.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Data - # Bing::Ads::API::V12::Data::Campaign + # Bing::Ads::API::V13::Data::Campaign class Campaign # @order @@ -33,7 +33,7 @@ def self.prepare(campaign_raw) campaign_raw[:bidding_scheme] = { # TODO support MaxClicksBiddingScheme, MaxConversionsBiddingScheme and TargetCpaBiddingScheme type: campaign_raw[:bidding_scheme], - '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{campaign_raw[:bidding_scheme]}" + '@xsi:type' => "#{Bing::Ads::API::V13::NAMESPACE_IDENTIFIER}:#{campaign_raw[:bidding_scheme]}" } end # TODO UrlCustomParameters diff --git a/lib/bing/ads/api/v12/data/expanded_text_ad.rb b/lib/bing/ads/api/v13/data/expanded_text_ad.rb similarity index 90% rename from lib/bing/ads/api/v12/data/expanded_text_ad.rb rename to lib/bing/ads/api/v13/data/expanded_text_ad.rb index 88d6cfe..9f77779 100644 --- a/lib/bing/ads/api/v12/data/expanded_text_ad.rb +++ b/lib/bing/ads/api/v13/data/expanded_text_ad.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Data - # Bing::Ads::API::V12::Data::ExpandedTextAd + # Bing::Ads::API::V13::Data::ExpandedTextAd class ExpandedTextAd # @order @@ -29,7 +29,7 @@ class ExpandedTextAd ] def self.prepare(ad_raw) - ad_raw['@xsi:type'] = "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{ad_raw[:type]}" + ad_raw['@xsi:type'] = "#{Bing::Ads::API::V13::NAMESPACE_IDENTIFIER}:#{ad_raw[:type]}" # TODO FinalAppUrls ad_raw[:final_mobile_urls] = { 'ins1:string' => ad_raw[:final_mobile_urls] } if ad_raw[:final_mobile_urls] ad_raw[:final_urls] = { 'ins1:string' => ad_raw[:final_urls] } if ad_raw[:final_urls] diff --git a/lib/bing/ads/api/v12/data/keyword.rb b/lib/bing/ads/api/v13/data/keyword.rb similarity index 93% rename from lib/bing/ads/api/v12/data/keyword.rb rename to lib/bing/ads/api/v13/data/keyword.rb index 182a127..0e67745 100644 --- a/lib/bing/ads/api/v12/data/keyword.rb +++ b/lib/bing/ads/api/v13/data/keyword.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Data - # Bing::Ads::API::V12::Data::Keyword + # Bing::Ads::API::V13::Data::Keyword class Keyword # @order @@ -37,7 +37,7 @@ def self.prepare(keyword_raw) # TODO support MaxClicksBiddingScheme, MaxConversionsBiddingScheme and TargetCpaBiddingScheme keyword_raw[:bidding_scheme] = { type: keyword_raw[:bidding_scheme], - '@xsi:type' => "#{Bing::Ads::API::V12::NAMESPACE_IDENTIFIER}:#{keyword_raw[:bidding_scheme]}" + '@xsi:type' => "#{Bing::Ads::API::V13::NAMESPACE_IDENTIFIER}:#{keyword_raw[:bidding_scheme]}" } end keyword_raw[:final_mobile_urls] = { 'ins1:string' => keyword_raw[:final_mobile_urls] } if keyword_raw[:final_mobile_urls] diff --git a/lib/bing/ads/api/v12/data/report_request.rb b/lib/bing/ads/api/v13/data/report_request.rb similarity index 96% rename from lib/bing/ads/api/v12/data/report_request.rb rename to lib/bing/ads/api/v13/data/report_request.rb index 46e502b..54b0056 100644 --- a/lib/bing/ads/api/v12/data/report_request.rb +++ b/lib/bing/ads/api/v13/data/report_request.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Data - # Bing::Ads::API::V12::Data::ReportRequest + # Bing::Ads::API::V13::Data::ReportRequest class ReportRequest # @order @@ -42,7 +42,7 @@ def prepare(type, report_request_raw) report_request_raw.except!(:from_date, :to_date, :account_ids) report_request = Bing::Ads::Utils.sort_keys(report_request_raw, KEYS_ORDER) - namespace_identifier = Bing::Ads::API::V12::NAMESPACE_IDENTIFIER + namespace_identifier = Bing::Ads::API::V13::NAMESPACE_IDENTIFIER { report_request: Bing::Ads::Utils.camelcase_keys(report_request), :attributes! => { diff --git a/lib/bing/ads/api/v12/services.rb b/lib/bing/ads/api/v13/services.rb similarity index 100% rename from lib/bing/ads/api/v12/services.rb rename to lib/bing/ads/api/v13/services.rb diff --git a/lib/bing/ads/api/v12/services/base.rb b/lib/bing/ads/api/v13/services/base.rb similarity index 97% rename from lib/bing/ads/api/v12/services/base.rb rename to lib/bing/ads/api/v13/services/base.rb index 1fb7ddf..f9f3aab 100644 --- a/lib/bing/ads/api/v12/services/base.rb +++ b/lib/bing/ads/api/v13/services/base.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Services - # Bing::Ads::API::V12::Base + # Bing::Ads::API::V13::Base class Base attr_accessor :soap_client, :environment, :retry_attempts @@ -27,7 +27,7 @@ def initialize(options = {}) @customer_id = options[:customer_id] raise 'You must set the service environment' unless @environment options[:wsdl_url] = service_wsdl_url - options[:namespace_identifier] = Bing::Ads::API::V12::NAMESPACE_IDENTIFIER + options[:namespace_identifier] = Bing::Ads::API::V13::NAMESPACE_IDENTIFIER @soap_client = Bing::Ads::API::SOAPClient.new(options) end @@ -112,7 +112,7 @@ def service_name # # @return String with the Service url def service_wsdl_url - Bing::Ads::API::V12.constants.wsdl.send(environment).send(service_name) + Bing::Ads::API::V13.constants.wsdl.send(environment).send(service_name) end def handle_soap_fault(operation, fault_detail, key) diff --git a/lib/bing/ads/api/v12/services/bulk.rb b/lib/bing/ads/api/v13/services/bulk.rb similarity index 94% rename from lib/bing/ads/api/v12/services/bulk.rb rename to lib/bing/ads/api/v13/services/bulk.rb index 40937aa..414d1a5 100644 --- a/lib/bing/ads/api/v12/services/bulk.rb +++ b/lib/bing/ads/api/v13/services/bulk.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Services - # Bing::Ads::API::V12::Services::Bulk + # Bing::Ads::API::V13::Services::Bulk class Bulk < Base def initialize(options = {}) super(options) diff --git a/lib/bing/ads/api/v12/services/campaign_management.rb b/lib/bing/ads/api/v13/services/campaign_management.rb similarity index 93% rename from lib/bing/ads/api/v12/services/campaign_management.rb rename to lib/bing/ads/api/v13/services/campaign_management.rb index dacd5bd..d275437 100644 --- a/lib/bing/ads/api/v12/services/campaign_management.rb +++ b/lib/bing/ads/api/v13/services/campaign_management.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Services - # Bing::Ads::API::V12::Services::CampaignManagement + # Bing::Ads::API::V13::Services::CampaignManagement class CampaignManagement < Base def initialize(options = {}) super(options) @@ -29,7 +29,7 @@ def get_campaigns_by_ids(account_id, campaign_ids) def add_campaigns(account_id, campaigns) validate_limits!(:campaign, :add, campaigns) - campaigns = campaigns.map { |campaign| Bing::Ads::API::V12::Data::Campaign.prepare(campaign) } + campaigns = campaigns.map { |campaign| Bing::Ads::API::V13::Data::Campaign.prepare(campaign) } payload = { account_id: account_id, campaigns: { campaign: campaigns } @@ -40,7 +40,7 @@ def add_campaigns(account_id, campaigns) def update_campaigns(account_id, campaigns) validate_limits!(:campaign, :update, campaigns) - campaigns = campaigns.map { |campaign| Bing::Ads::API::V12::Data::Campaign.prepare(campaign) } + campaigns = campaigns.map { |campaign| Bing::Ads::API::V13::Data::Campaign.prepare(campaign) } payload = { account_id: account_id, campaigns: { campaign: campaigns } @@ -78,7 +78,7 @@ def get_ad_groups_by_ids(campaign_id, ad_groups_ids) 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::V12::Data::AdGroup.prepare(ad_group) } + ad_groups = ad_groups.map { |ad_group| Bing::Ads::API::V13::Data::AdGroup.prepare(ad_group) } payload = { campaign_id: campaign_id, ad_groups: { ad_group: ad_groups } @@ -89,7 +89,7 @@ def add_ad_groups(campaign_id, ad_groups) 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::V12::Data::AdGroup.prepare(ad_group) } + ad_groups = ad_groups.map { |ad_group| Bing::Ads::API::V13::Data::AdGroup.prepare(ad_group) } payload = { campaign_id: campaign_id, ad_groups: { ad_group: ad_groups } @@ -142,7 +142,7 @@ def get_ads_by_ids(ad_group_id, ad_ids) def add_ads(ad_group_id, ads) validate_limits!(:ad, :add, ads) - ads = ads.map { |ad| Bing::Ads::API::V12::Data::ExpandedTextAd.prepare(ad) } + ads = ads.map { |ad| Bing::Ads::API::V13::Data::ExpandedTextAd.prepare(ad) } payload = { ad_group_id: ad_group_id, ads: { ad: ads } @@ -153,7 +153,7 @@ def add_ads(ad_group_id, ads) def update_ads(ad_group_id, ads) validate_limits!(:ad, :update, ads) - ads = ads.map { |ad| Bing::Ads::API::V12::Data::ExpandedTextAd.prepare(ad) } + ads = ads.map { |ad| Bing::Ads::API::V13::Data::ExpandedTextAd.prepare(ad) } payload = { ad_group_id: ad_group_id, ads: { ad: ads } @@ -190,7 +190,7 @@ def get_keywords_by_ids(ad_group_id, keyword_ids) def add_keywords(ad_group_id, keywords) validate_limits!(:keyword, :add, keywords) - keywords = keywords.map { |keyword| Bing::Ads::API::V12::Data::Keyword.prepare(keyword) } + keywords = keywords.map { |keyword| Bing::Ads::API::V13::Data::Keyword.prepare(keyword) } payload = { ad_group_id: ad_group_id, keywords: { keyword: keywords } @@ -201,7 +201,7 @@ def add_keywords(ad_group_id, keywords) def update_keywords(ad_group_id, keywords) validate_limits!(:keyword, :update, keywords) - keywords = keywords.map { |keyword| Bing::Ads::API::V12::Data::Keyword.prepare(keyword) } + keywords = keywords.map { |keyword| Bing::Ads::API::V13::Data::Keyword.prepare(keyword) } payload = { ad_group_id: ad_group_id, keywords: { keyword: keywords } @@ -310,7 +310,7 @@ def service_name end def validate_limits!(type, operation, array) - limit = Bing::Ads::API::V12.constants.limits.per_call.send(type) + limit = Bing::Ads::API::V13.constants.limits.per_call.send(type) if array.size > limit raise Bing::Ads::API::Errors::LimitError.new(operation, limit, type) end @@ -319,11 +319,11 @@ def validate_limits!(type, operation, array) def all_ad_types { ad_type: [ - Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.text, - Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.expanded_text, - Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.image, - Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.product, - Bing::Ads::API::V12.constants.campaign_management.ad_types_for_get.app_install + Bing::Ads::API::V13.constants.campaign_management.ad_types_for_get.text, + Bing::Ads::API::V13.constants.campaign_management.ad_types_for_get.expanded_text, + Bing::Ads::API::V13.constants.campaign_management.ad_types_for_get.image, + Bing::Ads::API::V13.constants.campaign_management.ad_types_for_get.product, + Bing::Ads::API::V13.constants.campaign_management.ad_types_for_get.app_install ] } end diff --git a/lib/bing/ads/api/v12/services/customer_management.rb b/lib/bing/ads/api/v13/services/customer_management.rb similarity index 92% rename from lib/bing/ads/api/v12/services/customer_management.rb rename to lib/bing/ads/api/v13/services/customer_management.rb index d63eb90..6ce6e87 100644 --- a/lib/bing/ads/api/v12/services/customer_management.rb +++ b/lib/bing/ads/api/v13/services/customer_management.rb @@ -1,9 +1,9 @@ module Bing module Ads module API - module V12 + module V13 module Services - # Bing::Ads::API::V12::Services::CustomerManagement + # Bing::Ads::API::V13::Services::CustomerManagement class CustomerManagement < Base def initialize(options = {}) super(options) diff --git a/lib/bing/ads/api/v12/services/reporting.rb b/lib/bing/ads/api/v13/services/reporting.rb similarity index 91% rename from lib/bing/ads/api/v12/services/reporting.rb rename to lib/bing/ads/api/v13/services/reporting.rb index a34a5c5..5db8071 100644 --- a/lib/bing/ads/api/v12/services/reporting.rb +++ b/lib/bing/ads/api/v13/services/reporting.rb @@ -1,16 +1,16 @@ module Bing module Ads module API - module V12 + module V13 module Services - # Bing::Ads::API::V12::Services::CampaignManagement + # Bing::Ads::API::V13::Services::CampaignManagement class Reporting < Base def initialize(options = {}) super(options) end def submit_generate_report(type, report_options) - payload = Bing::Ads::API::V12::Data::ReportRequest.prepare(type, report_options) + payload = Bing::Ads::API::V13::Data::ReportRequest.prepare(type, report_options) response = call(:submit_generate_report, payload) response_body = response_body(response, __method__) response_body From f9990d5ea177ee494fe2783c39145c18c2a26ee0 Mon Sep 17 00:00:00 2001 From: Ben Drozdoff Date: Tue, 1 Oct 2019 16:15:46 -0400 Subject: [PATCH 15/25] bump version --- lib/bing/ads/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bing/ads/version.rb b/lib/bing/ads/version.rb index b3f6ec6..07d721f 100644 --- a/lib/bing/ads/version.rb +++ b/lib/bing/ads/version.rb @@ -1,5 +1,5 @@ module Bing module Ads - VERSION = '0.3.1' + VERSION = '0.4.0' end end From 70c33384b70b41f45177c2ec96b8a7fc78b40baa Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Tue, 8 Oct 2019 18:04:22 -0700 Subject: [PATCH 16/25] updating reporting url --- lib/bing/ads/api/v13/constants/wsdl.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v13/constants/wsdl.yml b/lib/bing/ads/api/v13/constants/wsdl.yml index 01ffbb1..b2f0543 100644 --- a/lib/bing/ads/api/v13/constants/wsdl.yml +++ b/lib/bing/ads/api/v13/constants/wsdl.yml @@ -6,5 +6,5 @@ sandbox: production: customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v13/CustomerManagementService.svc?singleWsdl campaign_management: "https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V13/CampaignManagementService.svc?singleWsdl" - reporting: "https://api.bingads.microsoft.com/Api/Advertiser/Reporting/V13/ReportingService.svc?singleWsdl" + reporting: "https://reporting.api.bingads.microsoft.com/Api/Advertiser/Reporting/V13/ReportingService.svc?singleWsdl" bulk: 'https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/V13/BulkService.svc?singleWsdl' From 61732fbfe46efe3341b0961a10af4588656405c6 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 14 Oct 2019 08:19:19 -0700 Subject: [PATCH 17/25] trying experiments --- lib/bing/ads/api/v13/services/campaign_management.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/bing/ads/api/v13/services/campaign_management.rb b/lib/bing/ads/api/v13/services/campaign_management.rb index 6bfe5dc..af9a6fd 100644 --- a/lib/bing/ads/api/v13/services/campaign_management.rb +++ b/lib/bing/ads/api/v13/services/campaign_management.rb @@ -8,6 +8,13 @@ class CampaignManagement < Base def initialize(options = {}) super(options) end + + def get_experiments_by_ids(experiments=[]) + account_id ||= @account_id + response = call(:get_experiments_by_ids, experiments: experiments) + response_body = response_body(response, __method__) + #[response_body[:campaigns][:campaign]].flatten.compact + end def get_campaigns_by_account_id(account_id=nil, campaign_type: "Search") account_id ||= @account_id From 7418552e42ee0f1548b35456b01b6acf46e0e317 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 14 Oct 2019 08:22:48 -0700 Subject: [PATCH 18/25] . --- lib/bing/ads/api/v13/services/campaign_management.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v13/services/campaign_management.rb b/lib/bing/ads/api/v13/services/campaign_management.rb index af9a6fd..62c9392 100644 --- a/lib/bing/ads/api/v13/services/campaign_management.rb +++ b/lib/bing/ads/api/v13/services/campaign_management.rb @@ -11,7 +11,7 @@ def initialize(options = {}) def get_experiments_by_ids(experiments=[]) account_id ||= @account_id - response = call(:get_experiments_by_ids, experiments: experiments) + response = call(:get_experiments_by_ids, experiment_ids: experiments) response_body = response_body(response, __method__) #[response_body[:campaigns][:campaign]].flatten.compact end From fafe4e6959f859f1cada7d996cc772977ca8b686 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 14 Oct 2019 08:25:32 -0700 Subject: [PATCH 19/25] . --- lib/bing/ads/api/v13/services/campaign_management.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v13/services/campaign_management.rb b/lib/bing/ads/api/v13/services/campaign_management.rb index 62c9392..8c7a96c 100644 --- a/lib/bing/ads/api/v13/services/campaign_management.rb +++ b/lib/bing/ads/api/v13/services/campaign_management.rb @@ -11,7 +11,10 @@ def initialize(options = {}) def get_experiments_by_ids(experiments=[]) account_id ||= @account_id - response = call(:get_experiments_by_ids, experiment_ids: experiments) + payload = { + experiment_ids: { 'ins1:long' => experiments } + } + response = call(:get_experiments_by_ids, payload) response_body = response_body(response, __method__) #[response_body[:campaigns][:campaign]].flatten.compact end From 29c603c4359a9c3f80c6ae83aafbc9bd4e86e51c Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 14 Oct 2019 08:28:53 -0700 Subject: [PATCH 20/25] . --- lib/bing/ads/api/v13/services/campaign_management.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v13/services/campaign_management.rb b/lib/bing/ads/api/v13/services/campaign_management.rb index 8c7a96c..76ab0cd 100644 --- a/lib/bing/ads/api/v13/services/campaign_management.rb +++ b/lib/bing/ads/api/v13/services/campaign_management.rb @@ -12,7 +12,7 @@ def initialize(options = {}) def get_experiments_by_ids(experiments=[]) account_id ||= @account_id payload = { - experiment_ids: { 'ins1:long' => experiments } + experiment_ids: { 'a1:long' => experiments } } response = call(:get_experiments_by_ids, payload) response_body = response_body(response, __method__) From a1014eab1f6f9690a592d543994fd8ab8b1ce8e1 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 14 Oct 2019 08:30:58 -0700 Subject: [PATCH 21/25] . --- lib/bing/ads/api/v13/services/campaign_management.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v13/services/campaign_management.rb b/lib/bing/ads/api/v13/services/campaign_management.rb index 76ab0cd..e13ed36 100644 --- a/lib/bing/ads/api/v13/services/campaign_management.rb +++ b/lib/bing/ads/api/v13/services/campaign_management.rb @@ -12,7 +12,10 @@ def initialize(options = {}) def get_experiments_by_ids(experiments=[]) account_id ||= @account_id payload = { - experiment_ids: { 'a1:long' => experiments } + experiment_ids: { + 'a1:long' => experiments, + '@xmlns:a1' => 'http://schemas.microsoft.com/2003/10/Serialization/Arrays' + } } response = call(:get_experiments_by_ids, payload) response_body = response_body(response, __method__) From c54fde38c39d0e4b92fdf89f6fc7603b3708f7f8 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 14 Oct 2019 08:32:15 -0700 Subject: [PATCH 22/25] . --- lib/bing/ads/api/v13/services/campaign_management.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bing/ads/api/v13/services/campaign_management.rb b/lib/bing/ads/api/v13/services/campaign_management.rb index e13ed36..be5a214 100644 --- a/lib/bing/ads/api/v13/services/campaign_management.rb +++ b/lib/bing/ads/api/v13/services/campaign_management.rb @@ -19,7 +19,7 @@ def get_experiments_by_ids(experiments=[]) } response = call(:get_experiments_by_ids, payload) response_body = response_body(response, __method__) - #[response_body[:campaigns][:campaign]].flatten.compact + [response_body[:experiments][:experiment]].flatten.compact end def get_campaigns_by_account_id(account_id=nil, campaign_type: "Search") From d6122471602413d6fdb5be38a2b642f4fa96dae0 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Fri, 3 Dec 2021 19:29:29 +0100 Subject: [PATCH 23/25] ssl issue debugging --- lib/bing/ads/api/http_client.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/bing/ads/api/http_client.rb b/lib/bing/ads/api/http_client.rb index b28caee..08cb4e1 100644 --- a/lib/bing/ads/api/http_client.rb +++ b/lib/bing/ads/api/http_client.rb @@ -7,7 +7,12 @@ class HttpClient def self.download(url, retry_count = API_CALL_RETRY_COUNT) 1.upto(retry_count + 1) do |retry_index| - response = Net::HTTP.get_response(URI(url)) + http = Net::HTTP.new(URI(url)) + http.use_ssl = true + http.ssl_version = :TLSv1 + http.ciphers = ['RC4-SHA'] + http.get(uri.request_uri) + response = http.get_response(URI(url)) if response.is_a?(Net::HTTPSuccess) break response.body else From 567989ad58b3fa95d470311b2cbd2ff295c623d6 Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Mon, 25 Nov 2024 13:52:29 +0100 Subject: [PATCH 24/25] updating savon version --- bing-ads.gemspec | 2 +- lib/bing/ads/api/v13/services/base.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bing-ads.gemspec b/bing-ads.gemspec index b67662f..9a9c4b2 100644 --- a/bing-ads.gemspec +++ b/bing-ads.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.add_dependency 'savon', '~> 2.11' + spec.add_dependency 'savon', '~> 2.14' spec.add_dependency 'activesupport', '~> 5.0' spec.add_dependency 'persey', '~> 0.0.11' diff --git a/lib/bing/ads/api/v13/services/base.rb b/lib/bing/ads/api/v13/services/base.rb index f9f3aab..1c04a95 100644 --- a/lib/bing/ads/api/v13/services/base.rb +++ b/lib/bing/ads/api/v13/services/base.rb @@ -49,7 +49,7 @@ def call(operation, payload) raise 'You must provide an operation' if operation.nil? begin response = soap_client.call(operation: operation.to_sym, payload: payload) - return response.hash + return response.full_hash rescue Savon::SOAPFault => error fault = error.to_hash[:fault] From 76dc76c8e90ad8d18dda166704cf287fe21ca9bb Mon Sep 17 00:00:00 2001 From: Michael Curtis Date: Wed, 19 Mar 2025 17:23:57 +0100 Subject: [PATCH 25/25] upping for rails 8 --- bing-ads.gemspec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bing-ads.gemspec b/bing-ads.gemspec index 9a9c4b2..2fbb0fa 100644 --- a/bing-ads.gemspec +++ b/bing-ads.gemspec @@ -8,7 +8,7 @@ Gem::Specification.new do |spec| spec.version = Bing::Ads::VERSION spec.authors = ["oss92"] spec.email = ["mohamed.o.alnagdy@gmail.com", "oss@findhotel.net"] - spec.license = 'MIT' + spec.license = "MIT" spec.summary = %q{Enhances the experience of developing Bing Ads applications with Ruby} spec.description = %q{A Ruby client for Bing Ads API that includes a proxy to all Bing Ads API web services and abstracts low level details of authentication with OAuth2.} @@ -21,11 +21,11 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.add_dependency 'savon', '~> 2.14' - spec.add_dependency 'activesupport', '~> 5.0' - spec.add_dependency 'persey', '~> 0.0.11' + spec.add_dependency "savon", "~> 2.13" + spec.add_dependency "activesupport", ">= 7.0", "< 8.1" + spec.add_dependency "persey", "~> 1.0.0" - spec.add_development_dependency "bundler", "~> 1.15" - spec.add_development_dependency "rake", "~> 10.0" - spec.add_development_dependency "rspec", "~> 3.0" + spec.add_development_dependency "bundler", "~> 2.5" + spec.add_development_dependency "rake", "~> 13.0" + spec.add_development_dependency "rspec", "~> 3.12" end