A little wrapper for the adcloud API. It provides all the required classes and configuration options to access the adcloud API and interact with it. Moreover, you can use it to post-process incoming callbacks (implemented via http webhooks).
This is the official ruby gem for the adcloud API. If you have any problems or requests please contact [email protected]
Warning
- API does not yet support Campaign Updates
- API might change until it goes public, so expect changes!
In order to install the gem, run
gem install adcloud
or if you are using bundler, add the following to your Gemfile
gem 'adcloud'
You always need to provide your adcloud client id and secret. Contact [email protected] to get an account and credentials.
Adcloud.configure do |c|
c.client_id = '1234567890'
c.client_secret = '09876543'
end
Enable debug mode to log http requests and setup logging
Adcloud.configure do |c|
c.debug = true # default false
c.logger = Logger.new # defaults to STDOUT or Rails.logger if available
end
Usually you wont need to do this, as the gem authenticates against the api by itself. But if you wanna play with the API yourself, this might come in handy to get a valid auth token.
adcloud_auth = Adcloud::Authentication.new(
:client_id => Adcloud.config.client_id,
:client_secret => Adcloud.config.client_secret)
adcloud_auth.authenticate!
adcloud_auth.token # returns an oauth access_token
Read all advertisement objects
Adcloud::Advertisement.all
Filtering
Adcloud::Advertisement.all({ active: true })
Available filter keys are:
- campaign
- product
- active
Pagination
Adcloud::Advertisement.all(nil, 2, 10)
Read/Find a advertisement
Adcloud::Advertisement.find_by_id(42)
Create/Write a new advertisement
advertisement = Adcloud::Advertisement.new({ your: 'attributes' })
advertisement.create
Read all campaigns which belong to your account
Adcloud::Campaign.all
If the list gets too long, you can paginate and filter it. Provide a hash of filter criteria as the first parameter:
Adcloud::Campaign.all({ filter_key: 'filter value' })
Available filter keys are:
company, country, customer, delivery_type, destination, managed, name,
product, status, type
Optionally set the page and page size as second and third parameter
Adcloud::Campaign.all({ status: 'online' })
Adcloud::Campaign.all({ status: 'online' }, 2, 10)
Creating a New Campaign Object
campaign = Adcloud::Campaign.new({ your: 'attributes' })
Adcloud::Campaign.find_by_id(42)
campaign = Adcloud::Campaign.new({ your: 'attributes' })
campaign.valid? # returns true/false
Create a campaign by calling create
on an initialized object. It will
return true when the campaign was created successfully and sets the id on the
object. Otherwise errors
would provide you with the reason why it failed.
campaign = Adcloud::Campaign.new({ your: 'attributes' })
campaign.create # returns a boolean
campaign.errors
Alternatively, you could use the static method
campaign = Adcloud::Campaign.create({ your: 'attributes' })
Get all customers
Customer.all
Get a customer object
Customer.find(42)
Create a customer object
Customer.create({ name: 'AdKlaus' })
Create a new media file with
Adcloud::MediaFile.create(
uploaded_file: 'http://yourhost.com/yourfile.ext'
product_id: 123,
ad_id: 456,
flash: false,
display: false
end
where uploaded_file
is a publicly accessible url to an image file.
Get all products
Adcloud::Product.all
Get a single product
Adcloud::Product.find(123)
Create a new product
product = Adcloud::Product.create(name: 'Product name', customer_id: 123)
# or
product = Adcloud::Product.new(name: 'Product name', customer_id: 123)
if product.create
# ...
else
puts product.errors.inspect
end
Read all topics
topics = Adcloud::Topic.all
And a single topic
topic = Adcloud::Topic.find(123)
Topics provide their name in various languages
topic.names['en_gb'] # english name
topic.names['de_de'] # german name
...
Prices, reach, discounts are provided for each country
topic.discounts['gb'] # Values for England
topic.discounts['de'] # Values for Germany