= OpenX
== Description
A Ruby interface to the OpenX XML-RPC API. Used touchlocal 1.1.2 version as base for adding more API calls to OpenX API from http://developer.openx.org/api/ . It also works with v2 of OpenX API, especially that it now can pass localTZ to the OpenX API which will give back the correct statistics for the local time zone.
== Synopsis
OpenX::Services::Base.configuration = {
'username' => 'admin',
'password' => 'password',
'url' => 'http://localhost/www/api/v2/xmlrpc/',
}
OpenX::Services::Agency.find(:all).each do |agency|
puts agency.name
# Look up publishers
agency.publishers.each do |publisher|
puts "-- #{publisher.name}"
end
# Create a publisher
Publisher.create!(
:agency => agency,
:name => 'My Test Publisher',
:contact_name => 'My Contact',
:email => 'agency@example.com',
:username => 'user',
:password => 'password'
)
end
== Requirements
== Install
The YAML file lists configuration for each environment. The gem uses the
'production' environment by default. Trailing slash is required on the 'url'.
'invocation_url' is only used by the OpenX::Invocation methods to serve
advertisements over XML-RPC
== Ruby on Rails Integration
As common deployment scenarios for RoR projects dictates that you manage all
of your dependent files from within your project, storing your credentials.yml
file in the default location (as above) will not work. However, this is easily
fixed.
Create your credentials.yml file in your ./config folder, and populate it with
the necessary environment settings. It may in fact be more useful to name your
file something like openx_credentials.yml to be explicit about the content.
Then, add your gem require line to the initialize block of the environment.rb:
config.gem "touchlocal-openx",
:lib => "openx", :source => "http://gemcutter.org"
You will of course need to install the gem, either manually or via
rake gems:install
Finally, create a config/initializers/openx.rb and include the following:
require 'yaml'
OpenX::Services::Base.configuration =
YAML.load_file(File.join(Rails.root, 'config', 'credentials.yml'))[Rails.env]
== Banner Keyword Support
Not all attributes of OpenX objects that can be set in the web interface are
accessible via the API. A notable case of this is the ability to access
Banner Keywords. While it seems to be a case of "We'll add them as people
need them," this process is slower than one might expect;
https://developer.openx.org/jira/browse/OX-4779 has been an open ticket since
January 2009.
As TouchLocal required the ability to access Banner Keywords, the
OpenX::Services::Banner object has the support for this attribute. If the
server does not support the attribute, then setting it will have no effect,
and it will return nil when retrieving it. To enable support on the server,
you will need access to the server source, and the included
php/openx-2.8.1-keywords.diff
Copy the openx-2.8.1-keywords.diff file to the root of the OpenX distribution
on your server, and execute:
patch -p0 < openx-2.8.1-keywords.diff
This will patch the relevant OpenX API to allow access to the keyword
attribute, meaning that now both your client and server support it. Happy days.
This patch has been tested on OpenX Server versions 2.8.1 and 2.8.2 at the
time of writing.
== License
(The MIT License)
Copyright (c) 2008:
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.