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 ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
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
@@ -0,0 +1,5 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'one40_proof/test'
4
+ require 'one40_proof/user_ad'
5
+ require 'one40_proof/search'
@@ -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,8 @@
1
+ module One40Proof
2
+
3
+ # Raised:
4
+ # * When a user does not exists
5
+ # * When a publisher does not exist
6
+ # * If a targetted ad cannot be found
7
+ class NotFound < Exception; end
8
+ 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,13 @@
1
+ require 'one40_proof/base'
2
+
3
+ # Returns an ad. Use for testing and verifying your ad-serving code while in development.
4
+
5
+ module One40Proof
6
+ class Test < Base
7
+
8
+ def initialize
9
+ super('/test/ads.json')
10
+ end
11
+
12
+ end
13
+ 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
@@ -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