one40_proof 0.0.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.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README.rdoc +58 -0
- data/Rakefile +47 -0
- data/VERSION +1 -0
- data/lib/one40_proof.rb +5 -0
- data/lib/one40_proof/attributes/action_urls.rb +34 -0
- data/lib/one40_proof/attributes/user.rb +25 -0
- data/lib/one40_proof/base.rb +53 -0
- data/lib/one40_proof/exceptions.rb +8 -0
- data/lib/one40_proof/search.rb +24 -0
- data/lib/one40_proof/test.rb +13 -0
- data/lib/one40_proof/user_ad.rb +24 -0
- data/spec/one40_proof/attributes/action_urls_spec.rb +32 -0
- data/spec/one40_proof/attributes/user_spec.rb +24 -0
- data/spec/one40_proof/base_spec.rb +42 -0
- data/spec/one40_proof/search_spec.rb +11 -0
- data/spec/one40_proof/test_spec.rb +13 -0
- data/spec/one40_proof/user_ad_spec.rb +11 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +27 -0
- metadata +112 -0
data/.document
ADDED
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 reddavis
|
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.rdoc
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
= 140Proof API Wrapper
|
2
|
+
|
3
|
+
A Ruby wrapper around the 140Proof API. Documentation can be found here - http://developers.140proof.com/docs
|
4
|
+
|
5
|
+
It currently only supports JSON.
|
6
|
+
|
7
|
+
== Install
|
8
|
+
|
9
|
+
gem sources -a http://gemcutter.org
|
10
|
+
sudo gem install one40_proof
|
11
|
+
|
12
|
+
== How To Use
|
13
|
+
|
14
|
+
Testing ad placement while in development
|
15
|
+
|
16
|
+
require 'rubygems'
|
17
|
+
require 'one40_proof'
|
18
|
+
|
19
|
+
ad = One40Proof::Test.new
|
20
|
+
|
21
|
+
# The Ad
|
22
|
+
ad.image_url
|
23
|
+
ad.byline
|
24
|
+
ad.text
|
25
|
+
|
26
|
+
# User
|
27
|
+
ad.user.screen_name
|
28
|
+
ad.user.user_id
|
29
|
+
ad.user.profile_image_url
|
30
|
+
ad.user.name
|
31
|
+
|
32
|
+
# Action URLS
|
33
|
+
ad.action_urls.click_url
|
34
|
+
ad.action_urls.favorite_url # Or ad.action_urls.favourite_url for the English
|
35
|
+
ad.action_urls.impression_url
|
36
|
+
ad.action_urls.friendship_url
|
37
|
+
ad.action_urls.reply_url
|
38
|
+
ad.action_urls.retweet_url
|
39
|
+
|
40
|
+
|
41
|
+
To get an ad for a specific user
|
42
|
+
|
43
|
+
require 'rubygems'
|
44
|
+
require 'one40_proof'
|
45
|
+
|
46
|
+
ad = One40Proof::UserAd.new(:user_id => 'reddavis', :publisher_id => 'your publisher id')
|
47
|
+
|
48
|
+
|
49
|
+
To get an ad for a specific query
|
50
|
+
|
51
|
+
require 'rubygems'
|
52
|
+
require 'one40_proof'
|
53
|
+
|
54
|
+
ad = One40Proof::Search.new(:user_id => 'reddavis', :publisher_id => 'your publisher id', :q => 'magic hats')
|
55
|
+
|
56
|
+
== Copyright
|
57
|
+
|
58
|
+
Copyright (c) 2010 Red Davis. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "one40_proof"
|
8
|
+
gem.summary = %Q{A Ruby wrapper around the 140Proof API}
|
9
|
+
gem.description = %Q{A Ruby wrapper around the 140Proof API. Documentation can be found here - http://developers.140proof.com/docs/}
|
10
|
+
gem.email = "reddavis@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/reddavis/One40Proof"
|
12
|
+
gem.authors = ["reddavis"]
|
13
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
+
gem.add_dependency "json"
|
15
|
+
gem.add_dependency "httparty"
|
16
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
17
|
+
end
|
18
|
+
Jeweler::GemcutterTasks.new
|
19
|
+
rescue LoadError
|
20
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
21
|
+
end
|
22
|
+
|
23
|
+
require 'spec/rake/spectask'
|
24
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
25
|
+
spec.libs << 'lib' << 'spec'
|
26
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
27
|
+
end
|
28
|
+
|
29
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
30
|
+
spec.libs << 'lib' << 'spec'
|
31
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
32
|
+
spec.rcov = true
|
33
|
+
end
|
34
|
+
|
35
|
+
task :spec => :check_dependencies
|
36
|
+
|
37
|
+
task :default => :spec
|
38
|
+
|
39
|
+
require 'rake/rdoctask'
|
40
|
+
Rake::RDocTask.new do |rdoc|
|
41
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
42
|
+
|
43
|
+
rdoc.rdoc_dir = 'rdoc'
|
44
|
+
rdoc.title = "One40Proof #{version}"
|
45
|
+
rdoc.rdoc_files.include('README*')
|
46
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
47
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.0
|
data/lib/one40_proof.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
module One40Proof
|
2
|
+
class ActionUrls
|
3
|
+
|
4
|
+
def initialize(data)
|
5
|
+
@data = data['ads'][0]['action_urls']
|
6
|
+
end
|
7
|
+
|
8
|
+
def click_url
|
9
|
+
@data['click_url']
|
10
|
+
end
|
11
|
+
|
12
|
+
def favorite_url
|
13
|
+
@data['favorite_url']
|
14
|
+
end
|
15
|
+
alias_method :favourite_url, :favorite_url # For the English ;)
|
16
|
+
|
17
|
+
def impression_url
|
18
|
+
@data['impression_url']
|
19
|
+
end
|
20
|
+
|
21
|
+
def friendship_url
|
22
|
+
@data['friendship_url']
|
23
|
+
end
|
24
|
+
|
25
|
+
def reply_url
|
26
|
+
@data['reply_url']
|
27
|
+
end
|
28
|
+
|
29
|
+
def retweet_url
|
30
|
+
@data['retweet_url']
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module One40Proof
|
2
|
+
class User
|
3
|
+
|
4
|
+
def initialize(data)
|
5
|
+
@data = data['ads'][0]['user']
|
6
|
+
end
|
7
|
+
|
8
|
+
def profile_image_url
|
9
|
+
@data['profile_image_url']
|
10
|
+
end
|
11
|
+
|
12
|
+
def name
|
13
|
+
@data['name']
|
14
|
+
end
|
15
|
+
|
16
|
+
def user_id
|
17
|
+
@data['id']
|
18
|
+
end
|
19
|
+
|
20
|
+
def screen_name
|
21
|
+
@data['screen_name']
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'json'
|
3
|
+
require 'one40_proof/attributes/action_urls'
|
4
|
+
require 'one40_proof/attributes/user'
|
5
|
+
require 'one40_proof/exceptions'
|
6
|
+
|
7
|
+
module One40Proof
|
8
|
+
class Base
|
9
|
+
include HTTParty
|
10
|
+
format :json
|
11
|
+
base_uri "http://api.140proof.com"
|
12
|
+
|
13
|
+
def initialize(url, options={})
|
14
|
+
validate_response(Base.get(url, options))
|
15
|
+
end
|
16
|
+
|
17
|
+
def action_urls
|
18
|
+
@action_urls ||= ActionUrls.new(json)
|
19
|
+
end
|
20
|
+
|
21
|
+
def user
|
22
|
+
@user ||= User.new(json)
|
23
|
+
end
|
24
|
+
|
25
|
+
def image_url
|
26
|
+
json['ads'][0]['image_url']
|
27
|
+
end
|
28
|
+
|
29
|
+
# e.g "ads by Pizza Hut"
|
30
|
+
def byline
|
31
|
+
json['ads'][0]['byline']
|
32
|
+
end
|
33
|
+
|
34
|
+
# Ad text
|
35
|
+
def text
|
36
|
+
json['ads'][0]['text']
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def json
|
42
|
+
@json ||= JSON.parse(@response.body)
|
43
|
+
end
|
44
|
+
|
45
|
+
def validate_response(response)
|
46
|
+
if response.code == 404
|
47
|
+
raise NotFound.new("Either user/publisher/targetted ad cannot be found")
|
48
|
+
else
|
49
|
+
@response = response
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'one40_proof/base'
|
2
|
+
|
3
|
+
# Returns an ad for a specified user.
|
4
|
+
# Returns an HTTP 404 error if the user does not exist, if the publisher does not exist, or if a targetted ad could not be found for the user.
|
5
|
+
|
6
|
+
module One40Proof
|
7
|
+
class Search < Base
|
8
|
+
|
9
|
+
# Options:
|
10
|
+
# * user_id. Required. The Twitter ID or screen name of a user.
|
11
|
+
# * publisher_id. Required. Your 140 Proof app id.
|
12
|
+
# * q. Required. The query the user entered. Query strings should be URL encoded. Queries are limited 140 URL encoded characters.
|
13
|
+
# * lat. Optional. The user's current latitude. Note: The valid ranges for latitude is -90.0 to +90.0 (North is positive) inclusive.
|
14
|
+
# This parameter will be ignored if outside that range, if it is not a number, or if there not a corresponding long parameter with this request.
|
15
|
+
# * long. Optional. The user's current longitude. Note:
|
16
|
+
# The valid ranges for longitude is -180.0 to +180.0 (East is positive) inclusive.
|
17
|
+
# This parameter will be ignored if outside that range, if it is not a number, or if there not a corresponding lat parameter with this request.
|
18
|
+
# * lang. Optional. Restricts ads to the given language, specified by an ISO 639-1 code - http://en.wikipedia.org/wiki/ISO_639-1
|
19
|
+
def initialize(options={})
|
20
|
+
super('/ads/search.json', {:query => options})
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'one40_proof/base'
|
2
|
+
|
3
|
+
# Returns an ad for a specified user.
|
4
|
+
# Returns an HTTP 404 error if the user does not exist, if the publisher does not exist, or if a targetted ad could not be found for the user.
|
5
|
+
|
6
|
+
module One40Proof
|
7
|
+
class UserAd < Base
|
8
|
+
|
9
|
+
# Options include
|
10
|
+
# * user_id. Required. The Twitter ID or screen name of a user.
|
11
|
+
# * publisher_id. Required. Your 140 Proof app id.
|
12
|
+
# * lat. Optional. The user's current latitude. Note:
|
13
|
+
# The valid ranges for latitude is -90.0 to +90.0 (North is positive) inclusive.
|
14
|
+
# This parameter will be ignored if outside that range, if it is not a number, or if there not a corresponding long parameter with this request.
|
15
|
+
# * long. Optional. The user's current longitude. Note:
|
16
|
+
# The valid ranges for longitude is -180.0 to +180.0 (East is positive) inclusive.
|
17
|
+
# This parameter will be ignored if outside that range, if it is not a number, or if there not a corresponding lat parameter with this request.
|
18
|
+
# * lang. Optional. Restricts ads to the given language, specified by an ISO 639-1 code - http://en.wikipedia.org/wiki/ISO_639-1
|
19
|
+
def initialize(options={})
|
20
|
+
super('/ads/user.json', {:query => options})
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe "ActionUrls" do
|
4
|
+
before(:all) do
|
5
|
+
parsed_json = JSON.parse(test_ad_data)
|
6
|
+
@action_urls = One40Proof::ActionUrls.new(parsed_json)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should return the click_url" do
|
10
|
+
@action_urls.click_url.should == "http://api.140proof.com/clicks/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return favorite_url" do
|
14
|
+
@action_urls.favorite_url.should == "http://api.140proof.com/favorites/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return impression_url" do
|
18
|
+
@action_urls.impression_url.should == "http://api.140proof.com/impressions/verify.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return friendship_url" do
|
22
|
+
@action_urls.friendship_url.should == "http://api.140proof.com/friendships/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return reply url" do
|
26
|
+
@action_urls.reply_url.should == "http://api.140proof.com/replies/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return retweet_url" do
|
30
|
+
@action_urls.retweet_url.should == "http://api.140proof.com/retweets/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7"
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe "User" do
|
4
|
+
before(:all) do
|
5
|
+
parsed_json = JSON.parse(test_ad_data)
|
6
|
+
@user = One40Proof::User.new(parsed_json)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should return profile_image_url" do
|
10
|
+
@user.profile_image_url.should == "http://img.tweetimag.es/i/Mets_n"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return name" do
|
14
|
+
@user.name.should == "New York Mets"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should return user_id" do
|
18
|
+
@user.user_id.should == 39367703
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return screen_name" do
|
22
|
+
@user.screen_name.should == "Mets"
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Base" do
|
4
|
+
|
5
|
+
describe "200 OK" do
|
6
|
+
before(:all) do
|
7
|
+
stub_request(:get, base_url).to_return(:body => user_ad_data)
|
8
|
+
@base = One40Proof::Base.new(base_url)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return an ActionUrls object" do
|
12
|
+
@base.action_urls.should be_a(One40Proof::ActionUrls)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return a User object" do
|
16
|
+
@base.user.should be_a(One40Proof::User)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return image_url" do
|
20
|
+
@base.image_url.should == "http://img.tweetimag.es/i/LittleSkillet_n"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return byline" do
|
24
|
+
@base.byline.should == 'ads by 140 Proof'
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return text" do
|
28
|
+
@base.text.should == "Serving up farm-fresh soul food and San Francisco's finest chicken and waffles. Follow @LittleSkillet for today's specials."
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "404" do
|
33
|
+
it "should raise a NotFound" do
|
34
|
+
stub_request(:get, base_url).to_return(:status => 404)
|
35
|
+
|
36
|
+
lambda do
|
37
|
+
@base = One40Proof::Base.new(base_url)
|
38
|
+
end.should raise_error(One40Proof::NotFound)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Search" do
|
4
|
+
it "should request GET /ads/search.json..." do
|
5
|
+
url = base_url + '/ads/search.json?user_id=sferik&publisher_id=test&q=New%20York%20Mets'
|
6
|
+
stub_request(:get, url)
|
7
|
+
One40Proof::Search.new(:user_id => 'sferik', :publisher_id => 'test', :q => 'New York Mets')
|
8
|
+
|
9
|
+
WebMock.should have_requested(:get, url)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Test" do
|
4
|
+
describe "Connection to the service" do
|
5
|
+
it "should request GET /test/ads.json" do
|
6
|
+
url = base_url + '/test/ads.json'
|
7
|
+
stub_request(:get, url)
|
8
|
+
One40Proof::Test.new
|
9
|
+
|
10
|
+
WebMock.should have_requested(:get, url)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "UserAd" do
|
4
|
+
it "should request GET /ads/user.json..." do
|
5
|
+
url = base_url + '/ads/user.json?user_id=sferik&publisher_id=test'
|
6
|
+
stub_request(:get, url)
|
7
|
+
One40Proof::UserAd.new(:user_id => 'sferik', :publisher_id => 'test')
|
8
|
+
|
9
|
+
WebMock.should have_requested(:get, url)
|
10
|
+
end
|
11
|
+
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
require 'rubygems'
|
4
|
+
require 'one40_proof'
|
5
|
+
require 'spec'
|
6
|
+
require 'spec/autorun'
|
7
|
+
require 'webmock/rspec'
|
8
|
+
|
9
|
+
include WebMock
|
10
|
+
|
11
|
+
def base_url
|
12
|
+
"http://api.140proof.com"
|
13
|
+
end
|
14
|
+
|
15
|
+
# From http://api.140proof.com/test/ads.json
|
16
|
+
def test_ad_data
|
17
|
+
%{{"ads":[{"status":{"id":6017128450},"byline":"ads by 140 Proof","text":"NEW #Mets 2010 Alternate Jersey can be ordered here --> http://bit.ly/8P6xYm","action_urls":{"click_url":"http://api.140proof.com/clicks/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7","favorite_url":"http://api.140proof.com/favorites/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7","impression_url":"http://api.140proof.com/impressions/verify.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7","friendship_url":"http://api.140proof.com/friendships/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7","reply_url":"http://api.140proof.com/replies/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7","retweet_url":"http://api.140proof.com/retweets/create.json?ad_id=1&impression_id=1&publisher_id=test&user_id=7"},"user":{"profile_image_url":"http://img.tweetimag.es/i/Mets_n","name":"New York Mets","id":39367703,"screen_name":"Mets"},"image_url":"http://img.tweetimag.es/i/mets_b"}]}}
|
18
|
+
end
|
19
|
+
|
20
|
+
# From http://api.140proof.com/ads/user.json?user_id=sferik&publisher_id=test
|
21
|
+
def user_ad_data
|
22
|
+
%{{"ads":[{"status":{"id":null},"byline":"ads by 140 Proof","text":"Serving up farm-fresh soul food and San Francisco's finest chicken and waffles. Follow @LittleSkillet for today's specials.","action_urls":{"click_url":"http://api.140proof.com/clicks/create.json?ad_id=295&impression_id=7933117&publisher_id=test&user_id=7505382","favorite_url":null,"impression_url":"http://api.140proof.com/impressions/verify.json?ad_id=295&impression_id=7933117&publisher_id=test&user_id=7505382","friendship_url":"http://api.140proof.com/friendships/create.json?ad_id=295&impression_id=7933117&publisher_id=test&user_id=7505382","reply_url":"http://api.140proof.com/replies/create.json?ad_id=295&impression_id=7933117&publisher_id=test&user_id=7505382","retweet_url":null},"user":{"profile_image_url":"http://img.tweetimag.es/i/LittleSkillet_n","name":"Little Skillet","id":27710301,"screen_name":"LittleSkillet"},"image_url":"http://img.tweetimag.es/i/LittleSkillet_n"}]}}
|
23
|
+
end
|
24
|
+
|
25
|
+
Spec::Runner.configure do |config|
|
26
|
+
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: one40_proof
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- reddavis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-02-17 00:00:00 +00:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.2.9
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: httparty
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
45
|
+
description: A Ruby wrapper around the 140Proof API. Documentation can be found here - http://developers.140proof.com/docs/
|
46
|
+
email: reddavis@gmail.com
|
47
|
+
executables: []
|
48
|
+
|
49
|
+
extensions: []
|
50
|
+
|
51
|
+
extra_rdoc_files:
|
52
|
+
- LICENSE
|
53
|
+
- README.rdoc
|
54
|
+
files:
|
55
|
+
- .document
|
56
|
+
- .gitignore
|
57
|
+
- LICENSE
|
58
|
+
- README.rdoc
|
59
|
+
- Rakefile
|
60
|
+
- VERSION
|
61
|
+
- lib/one40_proof.rb
|
62
|
+
- lib/one40_proof/attributes/action_urls.rb
|
63
|
+
- lib/one40_proof/attributes/user.rb
|
64
|
+
- lib/one40_proof/base.rb
|
65
|
+
- lib/one40_proof/exceptions.rb
|
66
|
+
- lib/one40_proof/search.rb
|
67
|
+
- lib/one40_proof/test.rb
|
68
|
+
- lib/one40_proof/user_ad.rb
|
69
|
+
- spec/one40_proof/attributes/action_urls_spec.rb
|
70
|
+
- spec/one40_proof/attributes/user_spec.rb
|
71
|
+
- spec/one40_proof/base_spec.rb
|
72
|
+
- spec/one40_proof/search_spec.rb
|
73
|
+
- spec/one40_proof/test_spec.rb
|
74
|
+
- spec/one40_proof/user_ad_spec.rb
|
75
|
+
- spec/spec.opts
|
76
|
+
- spec/spec_helper.rb
|
77
|
+
has_rdoc: true
|
78
|
+
homepage: http://github.com/reddavis/One40Proof
|
79
|
+
licenses: []
|
80
|
+
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options:
|
83
|
+
- --charset=UTF-8
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: "0"
|
91
|
+
version:
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: "0"
|
97
|
+
version:
|
98
|
+
requirements: []
|
99
|
+
|
100
|
+
rubyforge_project:
|
101
|
+
rubygems_version: 1.3.5
|
102
|
+
signing_key:
|
103
|
+
specification_version: 3
|
104
|
+
summary: A Ruby wrapper around the 140Proof API
|
105
|
+
test_files:
|
106
|
+
- spec/one40_proof/attributes/action_urls_spec.rb
|
107
|
+
- spec/one40_proof/attributes/user_spec.rb
|
108
|
+
- spec/one40_proof/base_spec.rb
|
109
|
+
- spec/one40_proof/search_spec.rb
|
110
|
+
- spec/one40_proof/test_spec.rb
|
111
|
+
- spec/one40_proof/user_ad_spec.rb
|
112
|
+
- spec/spec_helper.rb
|