Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 .bundle
Octocat-spinner-32 benchmark
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .document
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.rdoc
Octocat-spinner-32 Rakefile
Octocat-spinner-32 VERSION
Octocat-spinner-32 one40_proof.gemspec
README.rdoc

140Proof API Wrapper

This is a wrapper around the 140 Proof API.

It is split into two parts. The first is a simple interface (One40Proof::UserAd) and the second is a multi interface (One40Proof::Multi::UserAd).

The simple interface requires:

The multi interface requires:

They both require:

The multi interface allows you to make parallel requests (benchmarks are below).

Documentation for the 140Proof API can be found here - developers.140proof.com/docs

RDoc

rdoc.info/projects/reddavis/One40Proof

Install

## Beta V2 ##
git clone git://github.com/reddavis/One40Proof.git
rake gemspec
rake build
rake install

## Stable ##
gem sources -a http://gemcutter.org
sudo gem install one40_proof

Benchmarks

## Broken ##

This can be found on the benchmark dir

n = 10
Benchmark.bm do |x|
  x.report("Simple") do
    n.times { One40Proof::Test.new }
  end
  x.report("Multi") do
    query = []
    n.times { query << {:method => :test} }
    One40Proof::Multi::UserAd.new(query)
  end
end

              ## Ruby 1.9.1 ##
          user      system      total      real
Simple  0.030000   0.020000   0.050000 (  2.507165)
Multi   0.010000   0.010000   0.020000 (  0.426687)

## End Broken ##

How To Use

Making Parallel Requests

Queries are created using a hash and then placed in an array

require 'rubygems'
require 'one40_proof/multi'

queries = []
queries << {:user_name => 'reddavis', :app_name => 'Test'}
queries << {:user_name => 'sferik', :app_name => 'Test'}

# We then initialize the calls to the service
a = One40Proof::Multi::UserAd.new(queries)

# Then we have access to all our ads
a.ads.each do |ad|
  # The Ad
  ad.advertiser
  ad.byline
  ad.text
  ad.type # Banner or Text
  ad.tweet_url
  ad.validate_impression!  # Sends a GET request to the impression_validation url
  ad.click_url
  ad.impression_url
end

# You can also specify what happens if a request fails
a = One40Proof::Multi::UserAd.new(queries, :on_fail => "Fail!")

# It can also take anything that responds to #call
# e.g. One40Proof::Multi::UserAd.new(queries, :on_fail => Proc.new {raise "fail"})

# If all our requests fail then:
a.ads
  #=> ["Fail!", "Fail!", "Fail!"]

# If nothing is specified on_fail then a nil object is just placed inside the array

Making Single Requests

require 'rubygems'
require 'one40_proof/simple'

ad = One40Proof::UserAd.new(:user_name => 'reddavis', :app_name => 'your app_name', :network => "Twitter")

# The Ad
ad.advertiser
ad.byline
ad.text
ad.type # Banner or Text
ad.tweet_url
ad.validate_impression!  # Sends a GET request to the impression_validation url
ad.click_url
ad.impression_url

TODO

  • Make it more difficult to make mistakes (passing wrong param names, incorrect params etc…)

Issues

Please report any problems or feature requests here.

Copyright

Copyright © 2010 Red Davis. See LICENSE for details.

Something went wrong with that request. Please try again.