bing_ads_ruby_sdk 0.0.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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