adcloud 0.7.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 (45) hide show
  1. data/.document +5 -0
  2. data/.gitignore +69 -0
  3. data/.travis.yml +4 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +50 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.md +221 -0
  8. data/RELEASE_NOTES.md +14 -0
  9. data/Rakefile +8 -0
  10. data/adcloud.gemspec +27 -0
  11. data/lib/adcloud.rb +62 -0
  12. data/lib/adcloud/advertisement.rb +28 -0
  13. data/lib/adcloud/api_error.rb +33 -0
  14. data/lib/adcloud/authentication.rb +24 -0
  15. data/lib/adcloud/campaign.rb +69 -0
  16. data/lib/adcloud/connection.rb +46 -0
  17. data/lib/adcloud/customer.rb +9 -0
  18. data/lib/adcloud/entity.rb +84 -0
  19. data/lib/adcloud/exception_raiser.rb +22 -0
  20. data/lib/adcloud/media_file.rb +10 -0
  21. data/lib/adcloud/product.rb +10 -0
  22. data/lib/adcloud/report.rb +28 -0
  23. data/lib/adcloud/report_entry.rb +48 -0
  24. data/lib/adcloud/response_error_handler.rb +23 -0
  25. data/lib/adcloud/topic.rb +19 -0
  26. data/lib/adcloud/topic_discount.rb +16 -0
  27. data/lib/adcloud/version.rb +3 -0
  28. data/lib/adcloud/webhook.rb +35 -0
  29. data/lib/adcloud/webhook_config.rb +18 -0
  30. data/lib/adcloud/webhook_event.rb +18 -0
  31. data/test/adcloud/advertisement_test.rb +11 -0
  32. data/test/adcloud/authentication_test.rb +58 -0
  33. data/test/adcloud/campaign_test.rb +54 -0
  34. data/test/adcloud/connection_test.rb +78 -0
  35. data/test/adcloud/customer_test.rb +6 -0
  36. data/test/adcloud/entity_test.rb +159 -0
  37. data/test/adcloud/media_file_test.rb +7 -0
  38. data/test/adcloud/product_test.rb +5 -0
  39. data/test/adcloud/report_test.rb +34 -0
  40. data/test/adcloud/topic_test.rb +14 -0
  41. data/test/adcloud/webhook_event_test.rb +19 -0
  42. data/test/adcloud/webhook_test.rb +62 -0
  43. data/test/adcloud_test.rb +47 -0
  44. data/test/test_helper.rb +23 -0
  45. metadata +251 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.gitignore ADDED
@@ -0,0 +1,69 @@
1
+ # rcov generated
2
+ coverage
3
+ coverage.data
4
+
5
+ # rdoc generated
6
+ rdoc
7
+
8
+ # yard generated
9
+ doc
10
+ .yardoc
11
+
12
+ # bundler
13
+ .bundle
14
+
15
+ # jeweler generated
16
+ pkg
17
+
18
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
19
+ #
20
+ # * Create a file at ~/.gitignore
21
+ # * Include files you want ignored
22
+ # * Run: git config --global core.excludesfile ~/.gitignore
23
+ #
24
+ # After doing this, these files will be ignored in all your git projects,
25
+ # saving you from having to 'pollute' every project you touch with them
26
+ #
27
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
28
+ #
29
+ # For MacOS:
30
+ #
31
+ #.DS_Store
32
+
33
+ # For TextMate
34
+ #*.tmproj
35
+ #tmtags
36
+
37
+ # For emacs:
38
+ #*~
39
+ #\#*
40
+ #.\#*
41
+
42
+ # For vim:
43
+ #*.swp
44
+
45
+ # For redcar:
46
+ #.redcar
47
+
48
+ # For rubinius:
49
+ #*.rbc
50
+ =======
51
+ *.gem
52
+ *.rbc
53
+ .bundle
54
+ .config
55
+ coverage
56
+ InstalledFiles
57
+ lib/bundler/man
58
+ pkg
59
+ rdoc
60
+ spec/reports
61
+ test/tmp
62
+ test/version_tmp
63
+ tmp
64
+
65
+ # YARD artifacts
66
+ .yardoc
67
+ _yardoc
68
+ doc/
69
+ TestCalls
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ source_key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBN1hBMHRGckl4T3djazZIdTlBMStDUzRUMEx3ZjA5OEo1aWRDM2J2SWorWW1KMU80CmtNaTl0blVYOHM2UHpMUHFKbFdCWnRFdEpzNWl3bXBycE9lQ0NjOUNQZ2lhRllwREgxZldNN3lwdWg0a1QyRWMKTTFsaUQxOTVLZ0JVUEYrc2JFQUJLYW5OVklnWFRNdW1aNlp1WStUcEtLMi9aczVEdnc5bzJkOUhJQUlDeFJ4Mgoxam5KL1R6cmpuWGZTK0pnOWY0TWdvTFIwd0ZMLytxb1V4K08zZnoySThyTGJyTmZtK0JicGJtTEo3QTZaZzJJCjBJSTh5bUdXK2ZpYStVeEVNSG1tZ21WTEhHWDR3ZlpDYm11RnhuZlhvZG5ydG5hbDZkdWJqVUgwSEd5U0krY3MKYjNIdjhOU0RIMWFuekY3dkEydys3b0o0WUFOU0pSMnFDUWxpY3dJREFRQUJBb0lCQVFEQ0J5WmFsN0ZuRXBkTApvVkcyaCt3TnJtU3M5MzUrMGMyeUVUVllJeU1EVEl5ektId3pmSWRqT1k2bmNWc2JhWTZYWXRwSzNmYXF0bzhICjFwVStmWnpMVFY0UmVWQUkrQ0pmMDVTTVZNalIrZDJzTEd3eUhnRy9GRUxjS3NhclMzZUlRa2x3OVh5QWJuR3oKNU51SDZmNWRqV3RuUFl5aWd6M2pQTUZ2QVVHTENlYXN3dTVFMkU0UExtUzFNdnJvVVF4N3IrelVLc1ZGVTJWaApHdkxTNmZJZUJzN25GSXo4NHVZNEU5eG9GQmVVRVlqRjRobS9yOE9qeFcyUlh1RWRGc3pRV3NqMFhvZllDRUFvClVvNThPZVd2MmpKOXF2YkNXa002b3U0bTQxbnlmemxsRXZXeHJ5N2xtRm9pYjRabEx2NEplYkc5M0JvUFhvaEIKanZUNlBneUpBb0dCQVBlZEVGekhOWVhNSWFTR0RsSCtIR3NnZ2JxU1NDaThEaHZzTnlsVWUyNll6RDlnWHBsWgpoeTR2M1FnOFhvU3JYaTVTb1N6MFhPcG5zMHhGa0t3QUFyRmxQNndyWXFCZEZlcVVuVGVqcE5lU041MUJPNjVjCm1UR3RDL2Y5VU9LV1M0ckxvM2NkNnVkWGRTQVViYUlmOXNDT3RLWUtzSG0ybjRETEkxc1pkTDZYQW9HQkFQVjYKNnVPb00reThxa2FTTSsrQ25QS2RCb2orMm4zZ2RVR3hzb0wvRHQ3ODluektXei91OWZaQ0lrVWtwTUErM3hFTwpCYmVBT2VZVEhYMk1FdWxuc3dZS3g3N2VtTGdYTzdYUmhKK2dtV0psclpKcDdFRVFUYkdOZzJnSUI5RmhUQnBkCkRxalRMTURUbEQ4encweFVlcmFHWXNYU0RhUkRLTDhuTUJaSkdsS0ZBb0dBVDRCY2FvMkRmOHdFMlVBNWhOWGoKNWZsdjdhbGVCY1lyZVlla1JsN2JxcXpnbDFDbnp2RFIyR0NCeFUwc3c4Z0oyekdva2poN1JMKzY3N2crTlJ0agp3ZlZTTmtOUHpWRlY0aFdKVFAzN3hVTXJIQkIveXdIc0plajd1TW5hbUlYTkIybE91TVlnVDlyaXZrUVExMGNRCkFNOVE3U2J0ZG9iT081bjlaaGlNUlUwQ2dZQWJPeVZ2VjZ0YTZacmg5VG41cWIyTFZFdnpTb0ltVUkzeFdhcjUKeVIxM013eU16MDNNQzlBUkgwajU3cFN3RnNsYjlQaEJZT0lMV2JkOXc5b2ROam12dytaZ2tBVFU5dzdTbm9sZAp3ODBBRTFOcjJJQXl2NEkrM2ZuanduQkxrOFdEYnlzL0l4M2x6aEsxNkNJVUI1TU5TRjhRbnJxUXJEcUs2ZWYxCnNPcFFtUUtCZ0U1RWNoZ3o1MjNmOE1BbUM0OW1LNWJxT2FwUkZRMlgxSXpFODBxTU54TVliVFc5cm5LNEdEN0EKbnh2NTdKZU8zU3pjMy9jR0lNN2h6VWJhN1JPbzVqUXE2M2V2ZnJhTFk5dHQ4aUZXNHNtQXlneDlJSUYwV1cwMAplaytBZWRiUHVqR0RadDVFcjdRbzE3WnpueE9xZFdwYUpseC9GcFlsMzZ1QWpDUlUvOVprCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in adcloud.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,50 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ adcloud (0.1.0)
5
+ activesupport (~> 3.2.6)
6
+ faraday
7
+ faraday_middleware
8
+ virtus
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ activesupport (3.2.6)
14
+ i18n (~> 0.6)
15
+ multi_json (~> 1.0)
16
+ addressable (2.3.2)
17
+ backports (2.6.2)
18
+ crack (0.3.1)
19
+ faraday (0.8.1)
20
+ multipart-post (~> 1.1)
21
+ faraday_middleware (0.8.8)
22
+ faraday (>= 0.7.4, < 0.9)
23
+ i18n (0.6.0)
24
+ metaclass (0.0.1)
25
+ minitest (3.4.0)
26
+ mocha (0.12.4)
27
+ metaclass (~> 0.0.1)
28
+ multi_json (1.3.6)
29
+ multipart-post (1.1.5)
30
+ rake (0.9.2.2)
31
+ simplecov (0.6.4)
32
+ multi_json (~> 1.0)
33
+ simplecov-html (~> 0.5.3)
34
+ simplecov-html (0.5.3)
35
+ virtus (0.5.1)
36
+ backports (~> 2.6.1)
37
+ webmock (1.8.9)
38
+ addressable (>= 2.2.7)
39
+ crack (>= 0.1.7)
40
+
41
+ PLATFORMS
42
+ ruby
43
+
44
+ DEPENDENCIES
45
+ adcloud!
46
+ minitest (~> 3.4.0)
47
+ mocha (~> 0.12.4)
48
+ rake
49
+ simplecov
50
+ webmock
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Jan Kus
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,221 @@
1
+ adcloud-api
2
+ ===========
3
+
4
+ A little wrapper for the adcloud API. It provides all the required classes and
5
+ configuration options to access the adcloud API and interact with it. Moreover,
6
+ you can use it to post-process incoming callbacks (implemented via http webhooks).
7
+
8
+ This is the official ruby gem for the adcloud API. If you have any problems or
9
+ requests please contact api@adcloud.com
10
+
11
+ __Warning__
12
+
13
+ * API does not yet support Campaign Updates
14
+ * API might change until it goes public, so expect changes!
15
+
16
+
17
+ Installation
18
+ ------------
19
+
20
+ In order to install the gem, run
21
+
22
+ gem install adcloud-api
23
+
24
+ or if you are using bundler, add the following to your Gemfile
25
+
26
+ gem 'adcloud-api'
27
+
28
+
29
+ Configuration
30
+ -------------
31
+
32
+ You always need to provide your adcloud client id and secret. Contact
33
+ info@adcloud.com to get an account and credentials.
34
+
35
+ Adcloud.configure do |c|
36
+ c.client_id = '1234567890'
37
+ c.client_secret = '09876543'
38
+ end
39
+
40
+ Enable debug mode to log http requests and setup logging
41
+
42
+ Adcloud.configure do |c|
43
+ c.debug = true # default false
44
+ c.logger = Logger.new # defaults to STDOUT or Rails.logger if available
45
+ end
46
+
47
+ Authentication
48
+ --------------
49
+
50
+ Usually you wont need to do this, as the gem authenticates against the api by
51
+ itself. But if you wanna play with the API yourself, this might come in handy to
52
+ get a valid auth token.
53
+
54
+ adcloud_auth = Adcloud::Authentication.new(
55
+ :client_id => Adcloud.config.client_id,
56
+ :client_secret => Adcloud.config.client_secret)
57
+ adcloud_auth.authenticate!
58
+ adcloud_auth.token # returns an oauth access_token
59
+
60
+ Advertisement
61
+ -------------
62
+
63
+ Read all advertisement objects
64
+
65
+ Adcloud::Advertisement.all
66
+
67
+ Filtering
68
+
69
+ Adcloud::Advertisement.all({ active: true })
70
+
71
+ Available filter keys are:
72
+
73
+ * campaign
74
+ * product
75
+ * active
76
+
77
+ Pagination
78
+
79
+ Adcloud::Advertisement.all(nil, 2, 10)
80
+
81
+ Read/Find a advertisement
82
+
83
+ Adcloud::Advertisement.find_by_id(42)
84
+
85
+ Create/Write a new advertisement
86
+
87
+ advertisement = Adcloud::Advertisement.new({ your: 'attributes' })
88
+ advertisement.create
89
+
90
+ Campaign
91
+ --------
92
+
93
+ ### Fetch campaigns list
94
+
95
+ Read all campaigns which belong to your account
96
+
97
+ Adcloud::Campaign.all
98
+
99
+ If the list gets too long, you can paginate and filter it. Provide a hash of
100
+ filter criteria as the first parameter:
101
+
102
+ Adcloud::Campaign.all({ filter_key: 'filter value' })
103
+
104
+ Available filter keys are:
105
+
106
+ company, country, customer, delivery_type, destination, managed, name,
107
+ product, status, type
108
+
109
+ Optionally set the page and page size as second and third parameter
110
+
111
+ Adcloud::Campaign.all({ status: 'online' })
112
+ Adcloud::Campaign.all({ status: 'online' }, 2, 10)
113
+
114
+ Creating a New Campaign Object
115
+
116
+ campaign = Adcloud::Campaign.new({ your: 'attributes' })
117
+
118
+ ### Read a single campaign
119
+
120
+ Adcloud::Campaign.find_by_id(42)
121
+
122
+ ### Validate a campaign
123
+
124
+ campaign = Adcloud::Campaign.new({ your: 'attributes' })
125
+ campaign.valid? # returns true/false
126
+
127
+ ### Create a new campaign
128
+
129
+ Create a campaign by calling ```create``` on an initialized object. It will
130
+ return true when the campaign was created successfully and sets the id on the
131
+ object. Otherwise ```errors``` would provide you with the reason why it failed.
132
+
133
+ campaign = Adcloud::Campaign.new({ your: 'attributes' })
134
+ campaign.create # returns a boolean
135
+ campaign.errors
136
+
137
+ Alternatively, you could use the static method
138
+
139
+ campaign = Adcloud::Campaign.create({ your: 'attributes' })
140
+
141
+ Customer
142
+ --------
143
+
144
+ Get all customers
145
+
146
+ Customer.all
147
+
148
+ Get a customer object
149
+
150
+ Customer.find(42)
151
+
152
+ Create a customer object
153
+
154
+ Customer.create({ name: 'AdKlaus' })
155
+
156
+ Media Files
157
+ -----------
158
+
159
+ Create a new media file with
160
+
161
+ Adcloud::MediaFile.create(
162
+ uploaded_file: 'http://yourhost.com/yourfile.ext'
163
+ product_id: 123,
164
+ ad_id: 456,
165
+ flash: false,
166
+ display: false
167
+ end
168
+
169
+ where ```uploaded_file``` is a publicly accessible url to an image file.
170
+
171
+ Product
172
+ -------
173
+
174
+ Get all products
175
+
176
+ Adcloud::Product.all
177
+
178
+ Get a single product
179
+
180
+ Adcloud::Product.find(123)
181
+
182
+ Create a new product
183
+
184
+ product = Adcloud::Product.create(name: 'Product name', customer_id: 123)
185
+ # or
186
+ product = Adcloud::Product.new(name: 'Product name', customer_id: 123)
187
+ if product.create
188
+ # ...
189
+ else
190
+ puts product.errors.inspect
191
+ end
192
+
193
+
194
+ Topic
195
+ -----
196
+
197
+ Read all topics
198
+
199
+ topics = Adcloud::Topic.all
200
+
201
+ And a single topic
202
+
203
+ topic = Adcloud::Topic.find(123)
204
+
205
+ Topics provide their name in various languages
206
+
207
+ topic.names['en_gb'] # english name
208
+ topic.names['de_de'] # german name
209
+ ...
210
+
211
+ Prices, reach, discounts are provided for each country
212
+
213
+ topic.discounts['gb'] # Values for England
214
+ topic.discounts['de'] # Values for Germany
215
+
216
+ Authors
217
+ -------
218
+
219
+ [Jan Kus](http://github.com/koos),
220
+ [Maximilian Schulz](http://github.com/namxam),
221
+ [Michael Bumann](http://github.com/bumi)
data/RELEASE_NOTES.md ADDED
@@ -0,0 +1,14 @@
1
+ Release Notes
2
+ =============
3
+
4
+ ### 0.7 _First public release_
5
+
6
+ * Enable configuration
7
+ * Find and create advertisements
8
+ * Find, create, validate campaigns
9
+ * Find and create customers
10
+ * Create media files
11
+ * Find and create products
12
+ * Fetch report data by day
13
+ * Find and create topics
14
+ * Parse webhooks and call configured code blocks
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.test_files = FileList['test/**/*_test.rb']
7
+ end
8
+ task :default => :test
data/adcloud.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/adcloud/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ['Jan Kus', 'Max Schulz']
6
+ gem.email = ['jan@railslove.com', 'm.schulz@kulturfluss.de']
7
+ gem.summary = %Q{Wrapper for adcloud API}
8
+ gem.description = %Q{This is the official adcloud API gem. If you have any problems or requests please contact api@adcloud.com.}
9
+ gem.homepage = 'http://adcloud.com/'
10
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
11
+ gem.files = `git ls-files`.split("\n")
12
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
+ gem.name = 'adcloud'
14
+ gem.require_paths = ['lib']
15
+ gem.version = Adcloud::VERSION
16
+
17
+ gem.add_development_dependency 'minitest', '~> 3.4.0'
18
+ gem.add_development_dependency 'mocha', '~> 0.12.4'
19
+ gem.add_development_dependency 'rake'
20
+ gem.add_development_dependency 'simplecov'
21
+ gem.add_development_dependency 'webmock'
22
+
23
+ gem.add_dependency 'virtus'
24
+ gem.add_dependency 'activesupport', "~>3.2.6"
25
+ gem.add_dependency 'faraday'
26
+ gem.add_dependency 'faraday_middleware'
27
+ end
data/lib/adcloud.rb ADDED
@@ -0,0 +1,62 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+ require 'adcloud/response_error_handler'
4
+ require 'logger'
5
+ require 'active_support/configurable'
6
+ require 'active_support/inflector'
7
+ require 'virtus'
8
+
9
+ module Adcloud
10
+
11
+ include ActiveSupport::Configurable
12
+
13
+ autoload :Ad, "adcloud/ad"
14
+ autoload :Advertisement, "adcloud/advertisement"
15
+ autoload :ApiError, "adcloud/api_error"
16
+ autoload :Authentication, "adcloud/authentication"
17
+ autoload :Campaign, "adcloud/campaign"
18
+ autoload :Connection, "adcloud/connection"
19
+ autoload :Customer, "adcloud/customer"
20
+ autoload :Entity, "adcloud/entity"
21
+ autoload :ExceptionRaiser, "adcloud/exception_raiser"
22
+ autoload :MediaFile, "adcloud/media_file"
23
+ autoload :Product, "adcloud/product"
24
+ autoload :Report, "adcloud/report"
25
+ autoload :ReportEntry, "adcloud/report_entry"
26
+ autoload :Topic, "adcloud/topic"
27
+ autoload :TopicDiscount, "adcloud/topic_discount"
28
+ autoload :Webhook, "adcloud/webhook"
29
+ autoload :WebhookConfig, "adcloud/webhook_config"
30
+ autoload :WebhookEvent, "adcloud/webhook_event"
31
+
32
+ module AdcloudSucks; class InvalidApiResponse < StandardError; end; end
33
+ class BadRequestError < ApiError; end
34
+ class NotFoundError < ApiError; end
35
+ class ServerError < ApiError; end
36
+ class Unauthorized < ApiError; end
37
+
38
+ class << self
39
+ # Access the logger instance
40
+ def logger
41
+ @@logger ||= (defined?(Rails) && Rails.logger) || Adcloud.config.logger || Logger.new(STDOUT)
42
+ end
43
+
44
+ # Allow to override the logger
45
+ def logger=(input)
46
+ @@logger = input
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ Adcloud.configure do |c|
53
+ c.port = 443
54
+ c.protocol = 'https'
55
+ c.host = 'api.adcloud.com'
56
+ c.api_version = "v2"
57
+ c.http_open_timeout = 5
58
+ c.http_read_timeout = 10
59
+ c.debug = false
60
+ c.webhooks = Adcloud::WebhookConfig.new
61
+ c.webhooks.filter_tests = true
62
+ end