bing_ads_ruby_sdk 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -1
  3. data/.rspec +3 -1
  4. data/Gemfile +0 -3
  5. data/LICENSE.txt +1 -1
  6. data/README.md +70 -9
  7. data/Rakefile +2 -0
  8. data/bin/setup +1 -3
  9. data/bing_ads_ruby_sdk.gemspec +17 -22
  10. data/changelog.md +19 -0
  11. data/lib/bing_ads_ruby_sdk.rb +32 -3
  12. data/lib/bing_ads_ruby_sdk/api.rb +81 -0
  13. data/lib/bing_ads_ruby_sdk/augmented_parser.rb +79 -0
  14. data/lib/bing_ads_ruby_sdk/configuration.rb +26 -0
  15. data/lib/bing_ads_ruby_sdk/errors/error_handler.rb +65 -0
  16. data/lib/bing_ads_ruby_sdk/errors/errors.rb +192 -0
  17. data/lib/bing_ads_ruby_sdk/header.rb +44 -0
  18. data/lib/bing_ads_ruby_sdk/http_client.rb +65 -0
  19. data/lib/bing_ads_ruby_sdk/log_message.rb +57 -0
  20. data/lib/bing_ads_ruby_sdk/oauth2/authorization_handler.rb +94 -0
  21. data/lib/bing_ads_ruby_sdk/oauth2/fs_store.rb +34 -0
  22. data/lib/bing_ads_ruby_sdk/postprocessors/cast_long_arrays.rb +35 -0
  23. data/lib/bing_ads_ruby_sdk/postprocessors/snakize.rb +35 -0
  24. data/lib/bing_ads_ruby_sdk/preprocessors/camelize.rb +45 -0
  25. data/lib/bing_ads_ruby_sdk/preprocessors/order.rb +58 -0
  26. data/lib/bing_ads_ruby_sdk/services/ad_insight.rb +10 -0
  27. data/lib/bing_ads_ruby_sdk/services/base.rb +83 -0
  28. data/lib/bing_ads_ruby_sdk/services/bulk.rb +26 -0
  29. data/lib/bing_ads_ruby_sdk/services/campaign_management.rb +116 -0
  30. data/lib/bing_ads_ruby_sdk/services/customer_billing.rb +10 -0
  31. data/lib/bing_ads_ruby_sdk/services/customer_management.rb +26 -0
  32. data/lib/bing_ads_ruby_sdk/services/reporting.rb +10 -0
  33. data/lib/bing_ads_ruby_sdk/soap_client.rb +143 -0
  34. data/lib/bing_ads_ruby_sdk/string_utils.rb +23 -0
  35. data/lib/bing_ads_ruby_sdk/version.rb +4 -1
  36. data/lib/bing_ads_ruby_sdk/wsdl/v12/production/ad_insight.xml +1 -0
  37. data/lib/bing_ads_ruby_sdk/wsdl/v12/production/bulk.xml +1 -0
  38. data/lib/bing_ads_ruby_sdk/wsdl/v12/production/campaign_management.xml +1 -0
  39. data/lib/bing_ads_ruby_sdk/wsdl/v12/production/customer_billing.xml +1 -0
  40. data/lib/bing_ads_ruby_sdk/wsdl/v12/production/customer_management.xml +1 -0
  41. data/lib/bing_ads_ruby_sdk/wsdl/v12/production/reporting.xml +1 -0
  42. data/lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/ad_insight.xml +1 -0
  43. data/lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/bulk.xml +1 -0
  44. data/lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/campaign_management.xml +1 -0
  45. data/lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/customer_billing.xml +1 -0
  46. data/lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/customer_management.xml +1 -0
  47. data/lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/reporting.xml +1 -0
  48. data/lib/bing_ads_ruby_sdk/wsdl/v12/test/ad_insight.xml +3065 -0
  49. data/lib/bing_ads_ruby_sdk/wsdl/v12/test/bulk.xml +1424 -0
  50. data/lib/bing_ads_ruby_sdk/wsdl/v12/test/campaign_management.xml +9949 -0
  51. data/lib/bing_ads_ruby_sdk/wsdl/v12/test/customer_billing.xml +899 -0
  52. data/lib/bing_ads_ruby_sdk/wsdl/v12/test/customer_management.xml +3966 -0
  53. data/lib/bing_ads_ruby_sdk/wsdl/v12/test/reporting.xml +3742 -0
  54. data/lib/bing_ads_ruby_sdk/wsdl/wsdl_source.txt +25 -0
  55. data/lib/bing_ads_ruby_sdk/wsdl_operation_wrapper.rb +39 -0
  56. data/tasks/bing_ads_ruby_sdk.rake +28 -0
  57. metadata +137 -38
@@ -0,0 +1,25 @@
1
+ For the records and future maintenance, here are the urls where we got the wsdl files:
2
+
3
+ PRODUCTION:
4
+ ad_insight: https://adinsight.api.bingads.microsoft.com/Api/Advertiser/AdInsight/v12/AdInsightService.svc?singleWsdl
5
+ bulk: https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/v12/BulkService.svc?singleWsdl
6
+ campaign_management: https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/v12/CampaignManagementService.svc?singleWsdl
7
+ customer_billing: https://clientcenter.api.bingads.microsoft.com/Api/Billing/v12/CustomerBillingService.svc?singleWsdl
8
+ customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v12/CustomerManagementService.svc?singleWsdl
9
+ reporting: https://reporting.api.bingads.microsoft.com/Api/Advertiser/Reporting/v12/ReportingService.svc?singleWsdl
10
+
11
+ SANDBOX:
12
+ ad_insight: https://adinsight.api.sandbox.bingads.microsoft.com/Api/Advertiser/AdInsight/v12/AdInsightService.svc?singleWsdl
13
+ bulk: https://bulk.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/v12/BulkService.svc?singleWsdl
14
+ campaign_management: https://campaign.api.sandbox.bingads.microsoft.com/Api/Advertiser/CampaignManagement/v12/CampaignManagementService.svc?singleWsdl
15
+ customer_billing: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/Billing/v12/CustomerBillingService.svc?singleWsdl
16
+ customer_management: https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v12/CustomerManagementService.svc?singleWsdl
17
+ reporting: https://reporting.api.sandbox.bingads.microsoft.com/Api/Advertiser/Reporting/v12/ReportingService.svc?singleWsdl
18
+
19
+ TEST:
20
+ ad_insight: https://adinsight.api.bingads.microsoft.com/Api/Advertiser/AdInsight/v12/AdInsightService.svc?singleWsdl
21
+ bulk: https://bulk.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/v12/BulkService.svc?singleWsdl
22
+ campaign_management: https://campaign.api.bingads.microsoft.com/Api/Advertiser/CampaignManagement/v12/CampaignManagementService.svc?singleWsdl
23
+ customer_billing: https://clientcenter.api.bingads.microsoft.com/Api/Billing/v12/CustomerBillingService.svc?singleWsdl
24
+ customer_management: https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v12/CustomerManagementService.svc?singleWsdl
25
+ reporting: https://reporting.api.bingads.microsoft.com/Api/Advertiser/Reporting/v12/ReportingService.svc?singleWsdl
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BingAdsRubySdk
4
+ class WsdlOperationWrapper
5
+
6
+ attr_reader :request_namespace_type
7
+
8
+ def initialize(parser, operation_name)
9
+ @parser = parser
10
+ @request_namespace_type = parser.operations.fetch(operation_name).fetch(:input).fetch(:body).first
11
+ end
12
+
13
+ def ordered_fields_hash(namespace_type)
14
+ # we check types first as its the main source of data, except for the Request type which lives in elements
15
+ if parser.types.fetch(namespace_type, nil)
16
+ parser.types.fetch(namespace_type).fetch(:elements)
17
+ else
18
+ parser.elements.fetch(namespace_type).fetch(:type).fetch(:elements)
19
+ end
20
+ end
21
+
22
+ def namespace_and_type_from_name(all_attributes, type_name)
23
+ all_attributes.fetch(type_name).fetch(:type)
24
+ end
25
+
26
+ def base_type_name(elements, type_name)
27
+ return nil if type_name == BingAdsRubySdk.type_key
28
+ elements.fetch(type_name).fetch(:base_type_name, type_name)
29
+ end
30
+
31
+ def self.prefix_and_name(wsdl, type_name)
32
+ wsdl.types.fetch(type_name).prefix_and_name
33
+ end
34
+
35
+ private
36
+
37
+ attr_reader :parser
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+ require 'dotenv/load'
2
+
3
+ namespace :bing_token do
4
+ desc "Gets and stores Bing OAuth token in file"
5
+ task :get, [:filename, :bing_developer_token, :bing_client_id] do |task, args|
6
+
7
+ filename = args[:filename] || ENV.fetch('BING_STORE_FILENAME')
8
+ developer_token = args[:bing_developer_token] || ENV.fetch('BING_DEVELOPER_TOKEN')
9
+ bing_client_id = args[:bing_client_id] || ENV.fetch('BING_CLIENT_ID')
10
+
11
+ store = ::BingAdsRubySdk::OAuth2::FsStore.new(filename)
12
+ auth = BingAdsRubySdk::OAuth2::AuthorizationHandler.new(
13
+ {
14
+ developer_token: developer_token,
15
+ client_id: bing_client_id
16
+ },
17
+ store: store
18
+ )
19
+
20
+ puts "Go to #{auth.code_url}",
21
+ "You will be redirected to a URL at the end. Paste it here in the console and press enter"
22
+
23
+ full_url = STDIN.gets.chomp
24
+ auth.fetch_from_url(full_url)
25
+
26
+ puts "Written to store"
27
+ end
28
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bing_ads_ruby_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Effilab
8
- - Sami Ben-yahia
8
+ - developers
9
9
  autorequire:
10
- bindir: exe
10
+ bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-27 00:00:00.000000000 Z
12
+ date: 2019-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: signet
@@ -17,102 +17,157 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0.7'
20
+ version: 0.8.1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0.7'
27
+ version: 0.8.1
28
+ - !ruby/object:Gem::Dependency
29
+ name: excon
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.62.0
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 0.62.0
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: lolsoap
30
44
  requirement: !ruby/object:Gem::Requirement
31
45
  requirements:
32
- - - "~>"
46
+ - - ">="
33
47
  - !ruby/object:Gem::Version
34
- version: '0.8'
48
+ version: 0.9.0
35
49
  type: :runtime
36
50
  prerelease: false
37
51
  version_requirements: !ruby/object:Gem::Requirement
38
52
  requirements:
39
- - - "~>"
53
+ - - ">="
40
54
  - !ruby/object:Gem::Version
41
- version: '0.8'
55
+ version: 0.9.0
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: bundler
44
58
  requirement: !ruby/object:Gem::Requirement
45
59
  requirements:
46
- - - "~>"
60
+ - - ">="
47
61
  - !ruby/object:Gem::Version
48
- version: '1.15'
62
+ version: '0'
49
63
  type: :development
50
64
  prerelease: false
51
65
  version_requirements: !ruby/object:Gem::Requirement
52
66
  requirements:
53
- - - "~>"
67
+ - - ">="
54
68
  - !ruby/object:Gem::Version
55
- version: '1.15'
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: dotenv
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
56
84
  - !ruby/object:Gem::Dependency
57
85
  name: rake
58
86
  requirement: !ruby/object:Gem::Requirement
59
87
  requirements:
60
- - - "~>"
88
+ - - ">="
61
89
  - !ruby/object:Gem::Version
62
- version: '12.0'
90
+ version: '0'
63
91
  type: :development
64
92
  prerelease: false
65
93
  version_requirements: !ruby/object:Gem::Requirement
66
94
  requirements:
67
- - - "~>"
95
+ - - ">="
68
96
  - !ruby/object:Gem::Version
69
- version: '12.0'
97
+ version: '0'
70
98
  - !ruby/object:Gem::Dependency
71
99
  name: yard
72
100
  requirement: !ruby/object:Gem::Requirement
73
101
  requirements:
74
- - - "~>"
102
+ - - ">="
75
103
  - !ruby/object:Gem::Version
76
- version: '0.9'
104
+ version: '0'
77
105
  type: :development
78
106
  prerelease: false
79
107
  version_requirements: !ruby/object:Gem::Requirement
80
108
  requirements:
81
- - - "~>"
109
+ - - ">="
82
110
  - !ruby/object:Gem::Version
83
- version: '0.9'
111
+ version: '0'
84
112
  - !ruby/object:Gem::Dependency
85
113
  name: rspec
86
114
  requirement: !ruby/object:Gem::Requirement
87
115
  requirements:
88
- - - "~>"
116
+ - - ">="
89
117
  - !ruby/object:Gem::Version
90
- version: '3.6'
118
+ version: '0'
91
119
  type: :development
92
120
  prerelease: false
93
121
  version_requirements: !ruby/object:Gem::Requirement
94
122
  requirements:
95
- - - "~>"
123
+ - - ">="
96
124
  - !ruby/object:Gem::Version
97
- version: '3.6'
125
+ version: '0'
98
126
  - !ruby/object:Gem::Dependency
99
127
  name: simplecov
100
128
  requirement: !ruby/object:Gem::Requirement
101
129
  requirements:
102
- - - "~>"
130
+ - - ">="
103
131
  - !ruby/object:Gem::Version
104
- version: '0.14'
132
+ version: '0'
105
133
  type: :development
106
134
  prerelease: false
107
135
  version_requirements: !ruby/object:Gem::Requirement
108
136
  requirements:
109
- - - "~>"
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: byebug
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: awesome_print
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
110
159
  - !ruby/object:Gem::Version
111
- version: '0.14'
112
- description: The Bing Ads Ruby Software Development Kit (SDK) enhances the experience
113
- of developing Bing Ads applications with the Ruby programming language
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ description: Bing Ads Api Wrapper
114
169
  email:
115
- - contact@effilab-local.com
170
+ - developers@effilab-local.com
116
171
  executables: []
117
172
  extensions: []
118
173
  extra_rdoc_files: []
@@ -127,13 +182,57 @@ files:
127
182
  - bin/console
128
183
  - bin/setup
129
184
  - bing_ads_ruby_sdk.gemspec
185
+ - changelog.md
130
186
  - lib/bing_ads_ruby_sdk.rb
187
+ - lib/bing_ads_ruby_sdk/api.rb
188
+ - lib/bing_ads_ruby_sdk/augmented_parser.rb
189
+ - lib/bing_ads_ruby_sdk/configuration.rb
190
+ - lib/bing_ads_ruby_sdk/errors/error_handler.rb
191
+ - lib/bing_ads_ruby_sdk/errors/errors.rb
192
+ - lib/bing_ads_ruby_sdk/header.rb
193
+ - lib/bing_ads_ruby_sdk/http_client.rb
194
+ - lib/bing_ads_ruby_sdk/log_message.rb
195
+ - lib/bing_ads_ruby_sdk/oauth2/authorization_handler.rb
196
+ - lib/bing_ads_ruby_sdk/oauth2/fs_store.rb
197
+ - lib/bing_ads_ruby_sdk/postprocessors/cast_long_arrays.rb
198
+ - lib/bing_ads_ruby_sdk/postprocessors/snakize.rb
199
+ - lib/bing_ads_ruby_sdk/preprocessors/camelize.rb
200
+ - lib/bing_ads_ruby_sdk/preprocessors/order.rb
201
+ - lib/bing_ads_ruby_sdk/services/ad_insight.rb
202
+ - lib/bing_ads_ruby_sdk/services/base.rb
203
+ - lib/bing_ads_ruby_sdk/services/bulk.rb
204
+ - lib/bing_ads_ruby_sdk/services/campaign_management.rb
205
+ - lib/bing_ads_ruby_sdk/services/customer_billing.rb
206
+ - lib/bing_ads_ruby_sdk/services/customer_management.rb
207
+ - lib/bing_ads_ruby_sdk/services/reporting.rb
208
+ - lib/bing_ads_ruby_sdk/soap_client.rb
209
+ - lib/bing_ads_ruby_sdk/string_utils.rb
131
210
  - lib/bing_ads_ruby_sdk/version.rb
132
- homepage: https://github.com/effilab/bing_ads_ruby_sdk
211
+ - lib/bing_ads_ruby_sdk/wsdl/v12/production/ad_insight.xml
212
+ - lib/bing_ads_ruby_sdk/wsdl/v12/production/bulk.xml
213
+ - lib/bing_ads_ruby_sdk/wsdl/v12/production/campaign_management.xml
214
+ - lib/bing_ads_ruby_sdk/wsdl/v12/production/customer_billing.xml
215
+ - lib/bing_ads_ruby_sdk/wsdl/v12/production/customer_management.xml
216
+ - lib/bing_ads_ruby_sdk/wsdl/v12/production/reporting.xml
217
+ - lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/ad_insight.xml
218
+ - lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/bulk.xml
219
+ - lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/campaign_management.xml
220
+ - lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/customer_billing.xml
221
+ - lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/customer_management.xml
222
+ - lib/bing_ads_ruby_sdk/wsdl/v12/sandbox/reporting.xml
223
+ - lib/bing_ads_ruby_sdk/wsdl/v12/test/ad_insight.xml
224
+ - lib/bing_ads_ruby_sdk/wsdl/v12/test/bulk.xml
225
+ - lib/bing_ads_ruby_sdk/wsdl/v12/test/campaign_management.xml
226
+ - lib/bing_ads_ruby_sdk/wsdl/v12/test/customer_billing.xml
227
+ - lib/bing_ads_ruby_sdk/wsdl/v12/test/customer_management.xml
228
+ - lib/bing_ads_ruby_sdk/wsdl/v12/test/reporting.xml
229
+ - lib/bing_ads_ruby_sdk/wsdl/wsdl_source.txt
230
+ - lib/bing_ads_ruby_sdk/wsdl_operation_wrapper.rb
231
+ - tasks/bing_ads_ruby_sdk.rake
232
+ homepage: https://github.com/Effilab/bing_ads_ruby_sdk
133
233
  licenses:
134
234
  - MIT
135
- metadata:
136
- allowed_push_host: https://rubygems.org
235
+ metadata: {}
137
236
  post_install_message:
138
237
  rdoc_options: []
139
238
  require_paths:
@@ -142,7 +241,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
241
  requirements:
143
242
  - - ">="
144
243
  - !ruby/object:Gem::Version
145
- version: '0'
244
+ version: '2.0'
146
245
  required_rubygems_version: !ruby/object:Gem::Requirement
147
246
  requirements:
148
247
  - - ">="
@@ -150,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
249
  version: '0'
151
250
  requirements: []
152
251
  rubyforge_project:
153
- rubygems_version: 2.6.10
252
+ rubygems_version: 2.6.11
154
253
  signing_key:
155
254
  specification_version: 4
156
255
  summary: Bing Ads Ruby SDK