white_pages 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ .DS_Store
4
+ Gemfile.lock
5
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm_gemset_create_on_use_flag=1
2
+ rvm use 1.9.2@white_pages
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Octohq.com
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 ADDED
@@ -0,0 +1,34 @@
1
+ WhitePages
2
+ =========
3
+
4
+ WhitePages is a Ruby wrapper for the WhitePages.com API.
5
+
6
+ WhitePages API Docs
7
+ =========
8
+
9
+ http://developer.whitepages.com/
10
+
11
+ You will need to register for a WhitePages API Key.
12
+
13
+ INSTALLATION
14
+ ==========
15
+
16
+ gem install white_pages
17
+
18
+ USAGE
19
+ ==========
20
+
21
+ # Set API Key
22
+ WhitePages.api_key = 'XXXXXXXX'
23
+
24
+ WhitePages.find_person(name: 'John Doe')
25
+ WhitePages.find_business(businessname: 'Target')
26
+ WhitePages.reverse_phone(phone: '3334445555')
27
+ WhitePages.reverse_address(street: '333 S. 3rd St', city: 'Los Angeles', state: 'CA')
28
+
29
+ Available options can be found by generating RDoc or visiting http://developer.whitepages.com.
30
+
31
+ COPYRIGHT
32
+ =========
33
+
34
+ Copyright (c) 2011 octohq.com. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ RSpec::Core::RakeTask.new('spec')
6
+
7
+ task :default => :spec
@@ -0,0 +1,105 @@
1
+ module WhitePages
2
+ class Client
3
+ include HTTParty
4
+ base_uri 'http://api.whitepages.com'
5
+
6
+ # API Version
7
+ def version
8
+ '1.0'
9
+ end
10
+
11
+ # Find a person
12
+ #
13
+ # http://developer.whitepages.com/docs/read/Methods/find_person
14
+ #
15
+ # * <tt>:firstname</tt>
16
+ # * <tt>:lastname</tt> - Required unless :name is provided
17
+ # * <tt>:name</tt> - Full name. Required unless :lastname is provided
18
+ # * <tt>:house</tt> - House number
19
+ # * <tt>:street</tt> - Street name, including any directional prefix or suffix
20
+ # * <tt>:city</tt>
21
+ # * <tt>:state</tt> - USPS two-character abbreviation
22
+ # * <tt>:zip</tt> - Will accept 5 digit ZIP Code or 9 digit ZIP+4
23
+ # * <tt>:areacode</tt>
24
+ # * <tt>:metro</tt> - Expand search to metro area
25
+ #
26
+ # == Example
27
+ #
28
+ # WhitePages.api_key = API_KEY
29
+ # WhitePages.find_person(name: 'John Doe', state: 'CA')
30
+ #
31
+ def find_person(options = {})
32
+ fetch(:find_person, options)
33
+ end
34
+
35
+ # Find a business
36
+ #
37
+ # http://developer.whitepages.com/docs/read/Methods/find_business
38
+ #
39
+ # * <tt>:businessname</tt> - Required unless :category is provided
40
+ # * <tt>:category</tt> - Required unless :businessname is provided
41
+ # * <tt>:house</tt> - House number
42
+ # * <tt>:street</tt> - Street name, including any directional prefix or suffix
43
+ # * <tt>:city</tt>
44
+ # * <tt>:state</tt> - USPS two-character abbreviation
45
+ # * <tt>:zip</tt> - Will accept 5 digit ZIP Code or 9 digit ZIP+4
46
+ # * <tt>:areacode</tt>
47
+ # * <tt>:metro</tt> - Expand search to metro area
48
+ #
49
+ # == Example
50
+ #
51
+ # WhitePages.api_key = API_KEY
52
+ # WhitePages.find_business(businessname: 'Target', city: 'Los Angeles', state: 'CA')
53
+ #
54
+ def find_business(options = {})
55
+ fetch(:find_business, options)
56
+ end
57
+
58
+ # Reverse lookup of a phone number
59
+ #
60
+ # http://developer.whitepages.com/docs/read/Methods/reverse_phone
61
+ #
62
+ # * <tt>:phone</tt> - 7 or 10 digits
63
+ # * <tt>:state</tt> - USPS two-character abbreviation. Required if :phone is 7 digits
64
+ #
65
+ # == Example
66
+ #
67
+ # WhitePages.api_key = API_KEY
68
+ # WhitePages.reverse_phone(phone: '3334445555')
69
+ #
70
+ def reverse_phone(options = {})
71
+ fetch(:reverse_phone, options)
72
+ end
73
+
74
+ # Reverse lookup of an address
75
+ #
76
+ # http://developer.whitepages.com/docs/read/Methods/reverse_address
77
+ #
78
+ # * <tt>:house</tt> - House number
79
+ # * <tt>:apt</tt> - Apartment number
80
+ # * <tt>:street</tt> - Street name, including any directional prefix or suffix. Required
81
+ # * <tt>:city</tt>
82
+ # * <tt>:state</tt> - USPS two-character abbreviation
83
+ # * <tt>:zip</tt> - Will accept 5 digit ZIP Code or 9 digit ZIP+4
84
+ # * <tt>:areacode</tt>
85
+ #
86
+ # == Example
87
+ #
88
+ # WhitePages.api_key = API_KEY
89
+ # WhitePages.reverse_address(street: '333 S. 3rd St', city: 'Los Angeles', state: 'CA')
90
+ #
91
+ def reverse_address(options = {})
92
+ fetch(:reverse_address, options)
93
+ end
94
+
95
+ protected
96
+ def fetch(method, options)
97
+ options.merge!(api_key: WhitePages.api_key, outputtype: 'JSON')
98
+ response = self.class.get("/#{method}/#{version}", query: options)
99
+ case response.code
100
+ when 400...600 then raise WhitePagesError.new(response.headers['x-mashery-error-code'])
101
+ else Hashie::Mash.new(response)
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,30 @@
1
+ require 'hashie'
2
+ require 'httparty'
3
+
4
+ module WhitePages
5
+ VERSION = "0.0.1"
6
+
7
+ class WhitePagesError < StandardError; end
8
+
9
+ autoload :Client, 'white_pages/client'
10
+
11
+ class << self
12
+ attr_accessor :api_key
13
+ end
14
+
15
+ def self.find_person(options)
16
+ Client.new(self.api_key).find_person(options)
17
+ end
18
+
19
+ def self.find_business(options)
20
+ Client.new(self.api_key).find_business(options)
21
+ end
22
+
23
+ def self.reverse_address(options)
24
+ Client.new(self.api_key).reverse_address(options)
25
+ end
26
+
27
+ def self.reverse_phone(options)
28
+ Client.new(self.api_key).reverse_phone(options)
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'white_pages'
5
+
6
+ RSpec.configure do |config|
7
+ config.mock_with :rspec
8
+ end
9
+
10
+ # Be sure to pass wp_api_key=XXX or change the API key here
11
+ WhitePages.api_key = ENV['wp_api_key'] || '0123456789abcdef'
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe WhitePages do
4
+ context "Valid API Key" do
5
+ it "should find a person" do
6
+ WhitePages.find_person(name: 'John Doe').should be_an_instance_of(Hashie::Mash)
7
+ end
8
+
9
+ it "should find a business" do
10
+ WhitePages.find_business(businessname: 'Target').should be_an_instance_of(Hashie::Mash)
11
+ end
12
+
13
+ it "should reverse a phone number" do
14
+ WhitePages.reverse_phone(phone: '3236030004').should be_an_instance_of(Hashie::Mash)
15
+ end
16
+
17
+ it "should reverse an address" do
18
+ WhitePages.reverse_address(street: 'Santa Monica Blvd').should be_an_instance_of(Hashie::Mash)
19
+ end
20
+ end
21
+
22
+ context "Invalid API Key" do
23
+ it "should raise errors" do
24
+ WhitePages.api_key = 'invalid'
25
+ lambda { WhitePages.find_person(name: 'John Doe') }.should raise_error(WhitePages::WhitePagesError)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "white_pages"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "white_pages"
7
+ s.version = WhitePages::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["kris"]
10
+ s.email = ["kris@octohq.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{Simple interface to WhitePages API}
13
+ s.description = %q{Simple interface to WhitePages API}
14
+
15
+ s.rubyforge_project = "white_pages"
16
+
17
+ s.add_dependency "hashie"
18
+ s.add_dependency "httparty"
19
+
20
+ s.add_development_dependency("rspec", "~> 2.0.1")
21
+
22
+ s.files = `git ls-files`.split("\n")
23
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
+ s.require_paths = ["lib"]
26
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: white_pages
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - kris
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-21 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: hashie
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 2.0.1
47
+ type: :development
48
+ version_requirements: *id003
49
+ description: Simple interface to WhitePages API
50
+ email:
51
+ - kris@octohq.com
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files: []
57
+
58
+ files:
59
+ - .gitignore
60
+ - .rspec
61
+ - .rvmrc
62
+ - Gemfile
63
+ - LICENSE
64
+ - README
65
+ - Rakefile
66
+ - lib/white_pages.rb
67
+ - lib/white_pages/client.rb
68
+ - spec/spec_helper.rb
69
+ - spec/white_pages_spec.rb
70
+ - white_pages.gemspec
71
+ has_rdoc: true
72
+ homepage: ""
73
+ licenses: []
74
+
75
+ post_install_message:
76
+ rdoc_options: []
77
+
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: "0"
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: "0"
92
+ requirements: []
93
+
94
+ rubyforge_project: white_pages
95
+ rubygems_version: 1.6.0
96
+ signing_key:
97
+ specification_version: 3
98
+ summary: Simple interface to WhitePages API
99
+ test_files:
100
+ - spec/spec_helper.rb
101
+ - spec/white_pages_spec.rb