bing_ads_ruby_sdk 1.5.0 → 1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +104 -18
  4. data/Rakefile +1 -1
  5. data/bing_ads_ruby_sdk.gemspec +10 -2
  6. data/changelog.md +8 -0
  7. data/lib/Rakefile +4 -0
  8. data/lib/bing_ads_ruby_sdk/errors/errors.rb +1 -1
  9. data/lib/bing_ads_ruby_sdk/oauth2/fs_store.rb +1 -1
  10. data/lib/bing_ads_ruby_sdk/railtie.rb +13 -0
  11. data/lib/bing_ads_ruby_sdk/string_utils.rb +2 -0
  12. data/{tasks → lib/bing_ads_ruby_sdk/tasks}/bing_ads_ruby_sdk.rake +6 -2
  13. data/lib/bing_ads_ruby_sdk/version.rb +1 -1
  14. data/lib/bing_ads_ruby_sdk.rb +6 -5
  15. metadata +7 -86
  16. data/.circleci/config.yml +0 -54
  17. data/.github/.keep +0 -0
  18. data/.github/renovate.json +0 -225
  19. data/.gitignore +0 -19
  20. data/.rspec +0 -4
  21. data/spec/bing_ads_ruby_sdk/api_spec.rb +0 -17
  22. data/spec/bing_ads_ruby_sdk/errors/error_handler_spec.rb +0 -477
  23. data/spec/bing_ads_ruby_sdk/errors/errors_spec.rb +0 -13
  24. data/spec/bing_ads_ruby_sdk/header_spec.rb +0 -60
  25. data/spec/bing_ads_ruby_sdk/http_client_spec.rb +0 -42
  26. data/spec/bing_ads_ruby_sdk/oauth2/fs_store_spec.rb +0 -19
  27. data/spec/bing_ads_ruby_sdk/postprocessors/cast_long_arrays_spec.rb +0 -29
  28. data/spec/bing_ads_ruby_sdk/postprocessors/snakize_spec.rb +0 -39
  29. data/spec/bing_ads_ruby_sdk/preprocessors/camelize_spec.rb +0 -39
  30. data/spec/bing_ads_ruby_sdk/preprocessors/order_spec.rb +0 -130
  31. data/spec/bing_ads_ruby_sdk/services/bulk_spec.rb +0 -51
  32. data/spec/bing_ads_ruby_sdk/services/campaign_management_spec.rb +0 -314
  33. data/spec/bing_ads_ruby_sdk/services/customer_management_spec.rb +0 -96
  34. data/spec/bing_ads_ruby_sdk_spec.rb +0 -5
  35. data/spec/examples/1_customer_creation/customer_spec.rb +0 -35
  36. data/spec/examples/2_with_customer/budget_spec.rb +0 -52
  37. data/spec/examples/2_with_customer/campaigns_spec.rb +0 -26
  38. data/spec/examples/2_with_customer/customer_management_spec.rb +0 -188
  39. data/spec/examples/2_with_customer/uet_tags_spec.rb +0 -42
  40. data/spec/examples/3_with_uet_tag/conversion_goal_spec.rb +0 -40
  41. data/spec/examples/3_with_uet_tag/uet_tags_spec.rb +0 -56
  42. data/spec/examples/4_with_conversion_goal/conversion_goals_spec.rb +0 -76
  43. data/spec/examples/5_with_campaign/ad_extension_spec.rb +0 -235
  44. data/spec/examples/5_with_campaign/ad_group_spec.rb +0 -34
  45. data/spec/examples/5_with_campaign/campaign_criterions_spec.rb +0 -72
  46. data/spec/examples/5_with_campaign/campaign_spec.rb +0 -70
  47. data/spec/examples/6_with_ad_group/ad_group_spec.rb +0 -70
  48. data/spec/examples/6_with_ad_group/ads_spec.rb +0 -110
  49. data/spec/examples/6_with_ad_group/keywords_spec.rb +0 -105
  50. data/spec/examples/examples.rb +0 -75
  51. data/spec/fixtures/bulk/download_campaigns_by_account_ids/standard.xml +0 -23
  52. data/spec/fixtures/bulk/download_campaigns_by_account_ids/standard_response.xml +0 -11
  53. data/spec/fixtures/bulk/get_bulk_download_status/standard.xml +0 -14
  54. data/spec/fixtures/bulk/get_bulk_download_status/standard_response.xml +0 -15
  55. data/spec/fixtures/campaign_management/add_ad_extensions/standard.xml +0 -21
  56. data/spec/fixtures/campaign_management/add_ad_extensions/standard_response.xml +0 -17
  57. data/spec/fixtures/campaign_management/add_conversion_goals/standard.xml +0 -27
  58. data/spec/fixtures/campaign_management/add_conversion_goals/standard_response.xml +0 -14
  59. data/spec/fixtures/campaign_management/add_shared_entity/standard.xml +0 -16
  60. data/spec/fixtures/campaign_management/add_shared_entity/standard_response.xml +0 -13
  61. data/spec/fixtures/campaign_management/add_uet_tags/standard.xml +0 -19
  62. data/spec/fixtures/campaign_management/add_uet_tags/standard_response.xml +0 -21
  63. data/spec/fixtures/campaign_management/get_ad_extension_ids_by_account_id/standard.xml +0 -15
  64. data/spec/fixtures/campaign_management/get_ad_extension_ids_by_account_id/standard_response.xml +0 -13
  65. data/spec/fixtures/campaign_management/get_ad_extensions_associations/standard.xml +0 -19
  66. data/spec/fixtures/campaign_management/get_ad_extensions_associations/standard_response.xml +0 -47
  67. data/spec/fixtures/campaign_management/get_budgets_by_ids/standard.xml +0 -12
  68. data/spec/fixtures/campaign_management/get_budgets_by_ids/standard_response.xml +0 -20
  69. data/spec/fixtures/campaign_management/get_campaigns_by_account_id/standard.xml +0 -14
  70. data/spec/fixtures/campaign_management/get_campaigns_by_account_id/standard_response.xml +0 -84
  71. data/spec/fixtures/campaign_management/get_conversion_goals_by_ids/standard.xml +0 -18
  72. data/spec/fixtures/campaign_management/get_conversion_goals_by_ids/standard_response.xml +0 -61
  73. data/spec/fixtures/campaign_management/get_shared_entities_by_account_id/standard.xml +0 -14
  74. data/spec/fixtures/campaign_management/get_shared_entities_by_account_id/standard_response.xml +0 -20
  75. data/spec/fixtures/campaign_management/get_shared_entity_associations_by_entity_ids/standard.xml +0 -18
  76. data/spec/fixtures/campaign_management/get_shared_entity_associations_by_entity_ids/standard_response.xml +0 -19
  77. data/spec/fixtures/campaign_management/get_uet_tags_by_ids/standard.xml +0 -16
  78. data/spec/fixtures/campaign_management/get_uet_tags_by_ids/standard_response.xml +0 -21
  79. data/spec/fixtures/campaign_management/set_ad_extensions_associations/standard.xml +0 -21
  80. data/spec/fixtures/campaign_management/set_ad_extensions_associations/standard_response.xml +0 -11
  81. data/spec/fixtures/campaign_management/set_shared_entity_associations/standard.xml +0 -21
  82. data/spec/fixtures/campaign_management/set_shared_entity_associations/standard_response.xml +0 -11
  83. data/spec/fixtures/campaign_management/update_conversion_goals/standard.xml +0 -27
  84. data/spec/fixtures/campaign_management/update_conversion_goals/standard_response.xml +0 -11
  85. data/spec/fixtures/campaign_management/update_uet_tags/standard.xml +0 -20
  86. data/spec/fixtures/campaign_management/update_uet_tags/standard_response.xml +0 -11
  87. data/spec/fixtures/customer_management/find_accounts_or_customers_info/standard.xml +0 -15
  88. data/spec/fixtures/customer_management/find_accounts_or_customers_info/standard_response.xml +0 -21
  89. data/spec/fixtures/customer_management/get_account/standard.xml +0 -14
  90. data/spec/fixtures/customer_management/get_account/standard_response.xml +0 -43
  91. data/spec/fixtures/customer_management/signup_customer/standard.xml +0 -30
  92. data/spec/fixtures/customer_management/signup_customer/standard_response.xml +0 -15
  93. data/spec/fixtures/customer_management/update_account/standard.xml +0 -19
  94. data/spec/fixtures/customer_management/update_account/standard_response.xml +0 -11
  95. data/spec/spec_helper.rb +0 -33
  96. data/spec/support/spec_helpers.rb +0 -46
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a6b39b428d7a606c0072d095766bff29b4d7c9e44dd2f825bdb2654915ad14a
4
- data.tar.gz: 7d6c717dbec5df6bceeb13ec38a000bbf1252f83ce2030c1071a55fe3a8386ab
3
+ metadata.gz: 10064130886df96745297db7c95d5482b3127563383425554e7ee722e36e17ff
4
+ data.tar.gz: ffd8833ecabc68e2d6ac7760891399070bbffb6f644f79b7f71275270e5e9c95
5
5
  SHA512:
6
- metadata.gz: d6232334e3e2c510825d83b9d2476ca601eae477c744e7b9b30ac637d0afc3f965127043c5465d5797ec87dc67b4c80150c52dc54f680676c7be49da1f8d6c98
7
- data.tar.gz: e3ff1cc382a5099754b37fb42b7858d79c0474dcfd22faef5e05c8498ce9c61a625df852adc638d94463682beb37cbf1d715358d4fa80b6daf022510011640bf
6
+ metadata.gz: 5dad795cb0dba423784ad86926c397740b083201bfb9c327f04763e94f34149860d857989b2e1386008ed19d96317a9ea91655b1267f39017b32fd14d34b9388
7
+ data.tar.gz: b5d31b8cd1fad4f64b91debaead3daf4878d427b5d5d17639247e732eedc125a406d16968a1dd5a3d1fc4402059268d5cffa05ee6a0c96ae153836246f232154
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in bing_ads_ruby_sdk.gemspec
4
4
  gemspec
5
5
 
6
- gem "standard", "1.16.1"
6
+ gem "standard", "1.31.1"
data/README.md CHANGED
@@ -16,18 +16,23 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install bing_ads_ruby_sdk
18
18
 
19
- ## Getting Started
19
+ ## Usage
20
+ ### Getting Started
20
21
 
21
- In order to use Bing's api you need to get your api credentials from bing. From there gem handles the oauth token generation.
22
+ In order to use Microsoft's advertising API you need to
23
+ [get your API credentials from MS](https://learn.microsoft.com/en-us/advertising/guides/get-started?view=bingads-13).
22
24
 
25
+ From there gem handles OAuth token generation.
23
26
  By default, there is only one store in the gem to store the oauth token. It's a file system based store. You can create one yourself to store credentials in a database or wherever you desire. The store class must implement `read` and `write(data)` instance methods.
24
27
 
25
- To get your token, run:
26
- ```ruby
27
- rake bing_token:get[my_token.json,your_dev_token,your_bing_client_id]
28
+ To get your token, run the `bing_token:get` rake task, then follow the prompts. Here's an example:
28
29
 
29
- ```
30
+ ```shell
31
+ bin/rake bing_token:get['credentials.json',YOUR_DEVELOPER_TOKEN,YOUR_CLIENT_ID,YOUR_CLIENT_SECRET]
30
32
 
33
+ # For example:
34
+ bin/rake bing_token:get['credentials.json',ABC1234,3431b6d0-a2ac-48e1-a1c5-1d0b82f3187f,SECRETVALUEHERE]
35
+ ```
31
36
 
32
37
  Then to use the api:
33
38
  ```ruby
@@ -37,13 +42,38 @@ api = BingAdsRubySdk::Api.new(
37
42
  developer_token: 'your_dev_token',
38
43
  client_id: 'your_bing_client_id'
39
44
  )
45
+ ```
46
+
47
+ ### Configuration
48
+ ```ruby
49
+ BingAdsRubySdk.configure do |conf|
50
+ conf.log = true
51
+ conf.logger.level = Logger::DEBUG
52
+ conf.pretty_print_xml = true
53
+ # to filter sensitive data before logging
54
+ conf.filters = ["AuthenticationToken", "DeveloperToken"]
55
+
56
+ # Optionally allow ActiveSupport::Notifications to be emitted by Excon.
57
+ # These notifications can then be sent on to your profiling system
58
+ # conf.instrumentor = ActiveSupport::Notifications
59
+ end
60
+ ```
61
+
62
+ ### Account creation and management
63
+ If you want to create an account using the API:
64
+ ```ruby
40
65
  api.customer_management.signup_customer(
41
66
  parent_customer_id: parent_customer_id,
42
67
  customer: customer_data, # a hash with your params
43
68
  account: account_data.merge("@type" => "AdvertiserAccount")
44
69
  )
70
+ ```
71
+
72
+ Otherwise you can [use existing account IDs as explained here](https://learn.microsoft.com/en-us/advertising/guides/get-started?view=bingads-13#get-ids),
73
+ or use the `customer_management` endpoint as explained above.
45
74
 
46
- # once you have your bing customer and account ids:
75
+ Once you have your MS Advertising customer and account ids:
76
+ ```ruby
47
77
  api.set_customer(customer_id: customer_id, account_id: account_id )
48
78
 
49
79
  api.campaign_management.get_campaigns_by_account_id(account_id: account_id)
@@ -54,6 +84,8 @@ You'll see services like `customer_management` implement some methods, but not a
54
84
  The methods implemented contain additional code to ease data manipulation but any endpoint can be reached using `call` on a service.
55
85
 
56
86
  ```ruby
87
+ @cm = api.customer_management
88
+
57
89
  @cm.call(:find_accounts_or_customers_info, filter: 'name', top_n: 1)
58
90
  # => { account_info_with_customer_data: { account_info_with_customer_data: [{ customer_id: "250364751", :
59
91
 
@@ -64,22 +96,76 @@ The methods implemented contain additional code to ease data manipulation but an
64
96
 
65
97
  ```
66
98
 
99
+ ### Reporting
100
+ You can generate the report following the
101
+ [process recommended by Microsoft](https://learn.microsoft.com/en-us/advertising/guides/request-download-report?view=bingads-13):
102
+
103
+ That would mean coding something like this:
67
104
 
68
- ## Configure the gem
69
105
  ```ruby
70
- BingAdsRubySdk.configure do |conf|
71
- conf.log = true
72
- conf.logger.level = Logger::DEBUG
73
- conf.pretty_print_xml = true
74
- # to filter sensitive data before logging
75
- conf.filters = ["AuthenticationToken", "DeveloperToken"]
76
-
77
- # Optionally allow ActiveSupport::Notifications to be emitted by Excon.
78
- # These notifications can then be sent on to your profiling system
79
- # conf.instrumentor = ActiveSupport::Notifications
106
+ submission_response = api.reporting
107
+ .call(:submit_generate_report,
108
+ account_performance_report_request: {
109
+ exclude_report_header: true,
110
+ exclude_report_footer: true,
111
+ exclude_column_headers: true,
112
+ format: "Csv",
113
+ aggregation: "Daily",
114
+ filter: nil,
115
+ columns: [
116
+ {
117
+ account_performance_report_column: "TimePeriod"
118
+ },
119
+ {
120
+ account_performance_report_column: "AccountId"
121
+ },
122
+ {
123
+ account_performance_report_column: "DeviceType"
124
+ },
125
+ {
126
+ account_performance_report_column: "Clicks"
127
+ }
128
+ ],
129
+ scope: {
130
+ # Your account ID here
131
+ account_ids: [{long: 1000000}]
132
+ },
133
+ time: {
134
+ custom_date_range_start: {
135
+ day: 7,
136
+ month: 5,
137
+ year: 2023
138
+ },
139
+ custom_date_range_end: {
140
+ day: 8,
141
+ month: 5,
142
+ year: 2023
143
+ }
144
+ }
145
+ }
146
+ )
147
+
148
+ report_request_id = submission_response.fetch(:report_request_id)
149
+
150
+ # Then you can poll the API to check the status of the report generation
151
+ poll_response = api.reporting.call(:poll_generate_report, report_request_id: report_request_id)
152
+
153
+ # When it is ready you can download it
154
+ report_request_status = poll_response.fetch(:report_request_status)
155
+
156
+ report_generation_status = report_request_status[:status].downcase.to_sym
157
+ # => One of these: :pending, :error, :success
158
+
159
+ if report_generation_status == :success
160
+ url = report_request_status[:report_download_url]
161
+ # => The URL to download the report (with the library of your choice)
80
162
  end
81
163
  ```
82
164
 
165
+ 🛈 Report request example [here in the API docs](https://learn.microsoft.com/en-us/advertising/reporting-service/accountperformancereportrequest?view=bingads-13)
166
+
167
+ 🛈 Hint: convert parameter names from PascalCase to snake_case when consulting the API docs
168
+
83
169
  ## Development
84
170
  You can run `bin/console` for an interactive prompt that will allow you to experiment.
85
171
 
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
  require "./lib/bing_ads_ruby_sdk"
4
- import "tasks/bing_ads_ruby_sdk.rake"
4
+ import "lib/bing_ads_ruby_sdk/tasks/bing_ads_ruby_sdk.rake"
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
@@ -4,7 +4,7 @@ require "bing_ads_ruby_sdk/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "bing_ads_ruby_sdk"
7
- spec.required_ruby_version = ">= 2.3"
7
+ spec.required_ruby_version = ">= 3"
8
8
 
9
9
  spec.version = BingAdsRubySdk::VERSION
10
10
  spec.authors = %w[Effilab developers]
@@ -15,7 +15,15 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = "https://github.com/Effilab/bing_ads_ruby_sdk"
16
16
  spec.license = "MIT"
17
17
 
18
- spec.files = `git ls-files`.split($/)
18
+ spec.files = Dir[
19
+ "bing_ads_ruby_sdk.gemspec",
20
+ "changelog.md",
21
+ "README.md",
22
+ "Gemfile",
23
+ "Rakefile",
24
+ "LICENSE.txt",
25
+ "{bin,lib,tasks}/**/*"
26
+ ]
19
27
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
28
  spec.require_paths = ["lib"]
21
29
 
data/changelog.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## V1.6 Release
2
+ - Updated documentation
3
+ - Fixed an envkey/dotenv related bug preventing the gem from starting
4
+ - Dropped support for Ruby 2
5
+
6
+ ## V1.5.1 Release
7
+ - Bug fix: Rake task missing
8
+
1
9
  ## V1.5.0 Release
2
10
  - Breaking: Now raises functional errors
3
11
  - Breaking: Now raises an error if not able to read the store in order to refresh the token
data/lib/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ require "bing_ads_ruby_sdk"
2
+
3
+ path = File.expand_path(__dir__)
4
+ Dir.glob("#{path}/tasks/**/*.rake").each { |f| import f }
@@ -67,7 +67,7 @@ module BingAdsRubySdk
67
67
 
68
68
  # Call sometimes returns an empty string instead of
69
69
  # nil for empty lists
70
- list.nil? || list.empty? ? nil : list
70
+ (list.nil? || list.empty?) ? nil : list
71
71
  end.compact
72
72
  end
73
73
 
@@ -23,7 +23,7 @@ module BingAdsRubySdk
23
23
  # @return [nil] if the file doesn't exist.
24
24
  def read
25
25
  return nil unless File.file?("./#{filename}")
26
- JSON.parse(IO.read(filename))
26
+ JSON.parse(File.read(filename))
27
27
  end
28
28
 
29
29
  private
@@ -0,0 +1,13 @@
1
+ require "bing_ads_ruby_sdk"
2
+ require "rails"
3
+
4
+ module BingAdsRubySdk
5
+ class Railtie < Rails::Railtie
6
+ railtie_name :bing_ads_ruby_sdk
7
+
8
+ rake_tasks do
9
+ path = File.expand_path(__dir__)
10
+ Dir.glob("#{path}/tasks/**/*.rake").each { |f| load f }
11
+ end
12
+ end
13
+ end
@@ -7,6 +7,8 @@ module BingAdsRubySdk
7
7
  end
8
8
 
9
9
  def self.snakize(string)
10
+ raise "Unexpected string length : #{string.length} for string '#{string[0..200]}...'" if string.length > 1000
11
+
10
12
  string.gsub(MULTIPLE_CAPSREGEX, MATCHING_PATTERN)
11
13
  .gsub(SPLIT_REGEX, MATCHING_PATTERN)
12
14
  .tr("-", "_")
@@ -1,7 +1,11 @@
1
- require "dotenv/load"
1
+ begin
2
+ require "dotenv/load"
3
+ rescue LoadError
4
+ puts "Unable to load .env file, resuming..."
5
+ end
2
6
 
3
7
  namespace :bing_token do
4
- desc "Gets and stores Bing OAuth token in file"
8
+ desc "Gets OAuth token from MS and stores it in a JSON file defined by filename parameter"
5
9
  task :get, [:filename, :bing_developer_token, :bing_client_id, :bing_client_secret] do |task, args|
6
10
  filename = args[:filename] || ENV.fetch("BING_STORE_FILENAME")
7
11
  developer_token = args[:bing_developer_token] || ENV.fetch("BING_DEVELOPER_TOKEN")
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BingAdsRubySdk
4
- VERSION = "1.5.0"
4
+ VERSION = "1.6"
5
5
  DEFAULT_SDK_VERSION = :v13
6
6
  end
@@ -7,8 +7,12 @@ require "bing_ads_ruby_sdk/version"
7
7
  require "bing_ads_ruby_sdk/configuration"
8
8
  require "bing_ads_ruby_sdk/api"
9
9
  require "bing_ads_ruby_sdk/string_utils"
10
+ require "bing_ads_ruby_sdk/railtie" if defined?(Rails)
10
11
 
11
12
  module BingAdsRubySdk
13
+ TYPE_KEY = "@type"
14
+ ROOT_PATH = File.join(__dir__, "..")
15
+
12
16
  def self.config
13
17
  @configuration ||= BingAdsRubySdk::Configuration.new
14
18
  end
@@ -17,9 +21,9 @@ module BingAdsRubySdk
17
21
  yield(config)
18
22
  end
19
23
 
20
- def self.log(level, *args, &block)
24
+ def self.log(level, ...)
21
25
  return unless config.log
22
- config.logger.send(level, *args, &block)
26
+ config.logger.send(level, ...)
23
27
  end
24
28
 
25
29
  def self.root_path
@@ -29,7 +33,4 @@ module BingAdsRubySdk
29
33
  def self.type_key
30
34
  TYPE_KEY
31
35
  end
32
-
33
- TYPE_KEY = "@type"
34
- ROOT_PATH = File.join(__dir__, "..")
35
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bing_ads_ruby_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: '1.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Effilab
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-11-04 00:00:00.000000000 Z
12
+ date: 2023-09-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: signet
@@ -188,11 +188,6 @@ executables:
188
188
  extensions: []
189
189
  extra_rdoc_files: []
190
190
  files:
191
- - ".circleci/config.yml"
192
- - ".github/.keep"
193
- - ".github/renovate.json"
194
- - ".gitignore"
195
- - ".rspec"
196
191
  - Gemfile
197
192
  - LICENSE.txt
198
193
  - README.md
@@ -201,6 +196,7 @@ files:
201
196
  - bin/setup
202
197
  - bing_ads_ruby_sdk.gemspec
203
198
  - changelog.md
199
+ - lib/Rakefile
204
200
  - lib/bing_ads_ruby_sdk.rb
205
201
  - lib/bing_ads_ruby_sdk/api.rb
206
202
  - lib/bing_ads_ruby_sdk/augmented_parser.rb
@@ -216,6 +212,7 @@ files:
216
212
  - lib/bing_ads_ruby_sdk/postprocessors/snakize.rb
217
213
  - lib/bing_ads_ruby_sdk/preprocessors/camelize.rb
218
214
  - lib/bing_ads_ruby_sdk/preprocessors/order.rb
215
+ - lib/bing_ads_ruby_sdk/railtie.rb
219
216
  - lib/bing_ads_ruby_sdk/services/ad_insight.rb
220
217
  - lib/bing_ads_ruby_sdk/services/base.rb
221
218
  - lib/bing_ads_ruby_sdk/services/bulk.rb
@@ -225,6 +222,7 @@ files:
225
222
  - lib/bing_ads_ruby_sdk/services/reporting.rb
226
223
  - lib/bing_ads_ruby_sdk/soap_client.rb
227
224
  - lib/bing_ads_ruby_sdk/string_utils.rb
225
+ - lib/bing_ads_ruby_sdk/tasks/bing_ads_ruby_sdk.rake
228
226
  - lib/bing_ads_ruby_sdk/version.rb
229
227
  - lib/bing_ads_ruby_sdk/wsdl/v13/production/ad_insight.xml
230
228
  - lib/bing_ads_ruby_sdk/wsdl/v13/production/bulk.xml
@@ -246,83 +244,6 @@ files:
246
244
  - lib/bing_ads_ruby_sdk/wsdl/v13/test/reporting.xml
247
245
  - lib/bing_ads_ruby_sdk/wsdl/wsdl_source.txt
248
246
  - lib/bing_ads_ruby_sdk/wsdl_operation_wrapper.rb
249
- - spec/bing_ads_ruby_sdk/api_spec.rb
250
- - spec/bing_ads_ruby_sdk/errors/error_handler_spec.rb
251
- - spec/bing_ads_ruby_sdk/errors/errors_spec.rb
252
- - spec/bing_ads_ruby_sdk/header_spec.rb
253
- - spec/bing_ads_ruby_sdk/http_client_spec.rb
254
- - spec/bing_ads_ruby_sdk/oauth2/fs_store_spec.rb
255
- - spec/bing_ads_ruby_sdk/postprocessors/cast_long_arrays_spec.rb
256
- - spec/bing_ads_ruby_sdk/postprocessors/snakize_spec.rb
257
- - spec/bing_ads_ruby_sdk/preprocessors/camelize_spec.rb
258
- - spec/bing_ads_ruby_sdk/preprocessors/order_spec.rb
259
- - spec/bing_ads_ruby_sdk/services/bulk_spec.rb
260
- - spec/bing_ads_ruby_sdk/services/campaign_management_spec.rb
261
- - spec/bing_ads_ruby_sdk/services/customer_management_spec.rb
262
- - spec/bing_ads_ruby_sdk_spec.rb
263
- - spec/examples/1_customer_creation/customer_spec.rb
264
- - spec/examples/2_with_customer/budget_spec.rb
265
- - spec/examples/2_with_customer/campaigns_spec.rb
266
- - spec/examples/2_with_customer/customer_management_spec.rb
267
- - spec/examples/2_with_customer/uet_tags_spec.rb
268
- - spec/examples/3_with_uet_tag/conversion_goal_spec.rb
269
- - spec/examples/3_with_uet_tag/uet_tags_spec.rb
270
- - spec/examples/4_with_conversion_goal/conversion_goals_spec.rb
271
- - spec/examples/5_with_campaign/ad_extension_spec.rb
272
- - spec/examples/5_with_campaign/ad_group_spec.rb
273
- - spec/examples/5_with_campaign/campaign_criterions_spec.rb
274
- - spec/examples/5_with_campaign/campaign_spec.rb
275
- - spec/examples/6_with_ad_group/ad_group_spec.rb
276
- - spec/examples/6_with_ad_group/ads_spec.rb
277
- - spec/examples/6_with_ad_group/keywords_spec.rb
278
- - spec/examples/examples.rb
279
- - spec/fixtures/bulk/download_campaigns_by_account_ids/standard.xml
280
- - spec/fixtures/bulk/download_campaigns_by_account_ids/standard_response.xml
281
- - spec/fixtures/bulk/get_bulk_download_status/standard.xml
282
- - spec/fixtures/bulk/get_bulk_download_status/standard_response.xml
283
- - spec/fixtures/campaign_management/add_ad_extensions/standard.xml
284
- - spec/fixtures/campaign_management/add_ad_extensions/standard_response.xml
285
- - spec/fixtures/campaign_management/add_conversion_goals/standard.xml
286
- - spec/fixtures/campaign_management/add_conversion_goals/standard_response.xml
287
- - spec/fixtures/campaign_management/add_shared_entity/standard.xml
288
- - spec/fixtures/campaign_management/add_shared_entity/standard_response.xml
289
- - spec/fixtures/campaign_management/add_uet_tags/standard.xml
290
- - spec/fixtures/campaign_management/add_uet_tags/standard_response.xml
291
- - spec/fixtures/campaign_management/get_ad_extension_ids_by_account_id/standard.xml
292
- - spec/fixtures/campaign_management/get_ad_extension_ids_by_account_id/standard_response.xml
293
- - spec/fixtures/campaign_management/get_ad_extensions_associations/standard.xml
294
- - spec/fixtures/campaign_management/get_ad_extensions_associations/standard_response.xml
295
- - spec/fixtures/campaign_management/get_budgets_by_ids/standard.xml
296
- - spec/fixtures/campaign_management/get_budgets_by_ids/standard_response.xml
297
- - spec/fixtures/campaign_management/get_campaigns_by_account_id/standard.xml
298
- - spec/fixtures/campaign_management/get_campaigns_by_account_id/standard_response.xml
299
- - spec/fixtures/campaign_management/get_conversion_goals_by_ids/standard.xml
300
- - spec/fixtures/campaign_management/get_conversion_goals_by_ids/standard_response.xml
301
- - spec/fixtures/campaign_management/get_shared_entities_by_account_id/standard.xml
302
- - spec/fixtures/campaign_management/get_shared_entities_by_account_id/standard_response.xml
303
- - spec/fixtures/campaign_management/get_shared_entity_associations_by_entity_ids/standard.xml
304
- - spec/fixtures/campaign_management/get_shared_entity_associations_by_entity_ids/standard_response.xml
305
- - spec/fixtures/campaign_management/get_uet_tags_by_ids/standard.xml
306
- - spec/fixtures/campaign_management/get_uet_tags_by_ids/standard_response.xml
307
- - spec/fixtures/campaign_management/set_ad_extensions_associations/standard.xml
308
- - spec/fixtures/campaign_management/set_ad_extensions_associations/standard_response.xml
309
- - spec/fixtures/campaign_management/set_shared_entity_associations/standard.xml
310
- - spec/fixtures/campaign_management/set_shared_entity_associations/standard_response.xml
311
- - spec/fixtures/campaign_management/update_conversion_goals/standard.xml
312
- - spec/fixtures/campaign_management/update_conversion_goals/standard_response.xml
313
- - spec/fixtures/campaign_management/update_uet_tags/standard.xml
314
- - spec/fixtures/campaign_management/update_uet_tags/standard_response.xml
315
- - spec/fixtures/customer_management/find_accounts_or_customers_info/standard.xml
316
- - spec/fixtures/customer_management/find_accounts_or_customers_info/standard_response.xml
317
- - spec/fixtures/customer_management/get_account/standard.xml
318
- - spec/fixtures/customer_management/get_account/standard_response.xml
319
- - spec/fixtures/customer_management/signup_customer/standard.xml
320
- - spec/fixtures/customer_management/signup_customer/standard_response.xml
321
- - spec/fixtures/customer_management/update_account/standard.xml
322
- - spec/fixtures/customer_management/update_account/standard_response.xml
323
- - spec/spec_helper.rb
324
- - spec/support/spec_helpers.rb
325
- - tasks/bing_ads_ruby_sdk.rake
326
247
  homepage: https://github.com/Effilab/bing_ads_ruby_sdk
327
248
  licenses:
328
249
  - MIT
@@ -335,14 +256,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
335
256
  requirements:
336
257
  - - ">="
337
258
  - !ruby/object:Gem::Version
338
- version: '2.3'
259
+ version: '3'
339
260
  required_rubygems_version: !ruby/object:Gem::Requirement
340
261
  requirements:
341
262
  - - ">="
342
263
  - !ruby/object:Gem::Version
343
264
  version: '0'
344
265
  requirements: []
345
- rubygems_version: 3.2.3
266
+ rubygems_version: 3.4.10
346
267
  signing_key:
347
268
  specification_version: 4
348
269
  summary: Bing Ads Ruby SDK
data/.circleci/config.yml DELETED
@@ -1,54 +0,0 @@
1
- version: 2.1
2
-
3
- commands:
4
- build:
5
- steps:
6
- - checkout
7
- # We can't use restore_cache because we don't include a Gemfile.lock in the Gem repo
8
- - run:
9
- name: install dependencies
10
- command: |
11
- bundle install --jobs=4 --retry=3 --path vendor/bundle
12
- - run: bundle exec standardrb
13
- - run:
14
- name: run tests
15
- command: |
16
- mkdir log/
17
- mkdir /tmp/test-results
18
- TEST_FILES="$(circleci tests glob "spec/bing_ads_ruby_sdk/**/*_spec.rb" | \
19
- circleci tests split --split-by=timings)"
20
-
21
- bundle exec rspec \
22
- --format progress \
23
- --format RspecJunitFormatter \
24
- --out /tmp/test-results/rspec.xml \
25
- --format progress \
26
- $TEST_FILES
27
- # collect reports
28
- - store_test_results:
29
- path: /tmp/test-results
30
- - store_artifacts:
31
- path: /tmp/test-results
32
- destination: test-results
33
-
34
- jobs:
35
- build_2_x:
36
- docker:
37
- - image: ruby:2.7.6
38
- working_directory: ~/repo
39
- steps:
40
- - build
41
-
42
- build_3_x:
43
- docker:
44
- - image: ruby:3.1.2
45
- working_directory: ~/repo
46
- steps:
47
- - build
48
-
49
- workflows:
50
- version: 2
51
- build:
52
- jobs:
53
- - build_2_x
54
- - build_3_x
data/.github/.keep DELETED
File without changes