yelp2 0.0.3

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,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in yelp2.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
data/lib/yelp2.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ require 'oauth'
3
+
4
+ require 'yelp2/base'
5
+ require 'yelp2/business'
6
+ require 'yelp2/location'
data/lib/yelp2/base.rb ADDED
@@ -0,0 +1,61 @@
1
+ require 'addressable/uri'
2
+ require 'json'
3
+
4
+ module Yelp
5
+
6
+ class Base
7
+ API_HOST = "api.yelp.com"
8
+ API_PATH = "/v2"
9
+
10
+ SEARCH_PATH = "#{API_PATH}/search"
11
+
12
+ # Passing in the appropriate values, have access to the yelp api
13
+ #
14
+ # consumer_key - A value used by the Consumer to identify itself to the Service Provider.
15
+ # consumer_secret - A secret used by the Consumer to establish ownership of the Consumer Key.
16
+ # token - A value used by the Consumer to obtain authorization from the User, and exchanged for an Access Token.
17
+ # token_secret - A secret used by the Consumer to establish ownership of a given Token.
18
+ #
19
+ # Returns nothing.
20
+ def initialize(consumer_key, consumer_secret, token, token_secret)
21
+ @consumer = OAuth::Consumer.new(consumer_key, consumer_secret, {:site => API_HOST})
22
+ @access_token = OAuth::AccessToken.new(@consumer, token, token_secret)
23
+ end
24
+
25
+
26
+ # Search for a given optional term and locations
27
+ #
28
+ # term - (Optional) Search term.
29
+ # location - Location to search
30
+ # location_type - Location Hash continaing one of three search types.
31
+ #
32
+ # Example
33
+ # search("dinner", "san+francisco", :location)
34
+ # search("dinner", "34.720,-112.299", :ll)
35
+ #
36
+ # Returns hash of businesses found.
37
+ def search(term, location)
38
+ raise ArgumentError, "Location must be a hash and of size 1" unless location.is_a?(Hash) || location.size != 1
39
+ uri = Addressable::URI.new(
40
+ :scheme => "http",
41
+ :host => API_HOST,
42
+ :path => SEARCH_PATH
43
+ )
44
+
45
+ uri.query_values = {
46
+ :term => term
47
+ }.merge(location)
48
+
49
+
50
+ res = @access_token.get(uri.to_s)
51
+ hash = JSON.parse(res.body)
52
+ if hash["error"]
53
+ "Sorry, #{hash["error"]["text"]}"
54
+ else
55
+ hash["businesses"].collect {|b| Yelp::Business.new(b)}
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ end
@@ -0,0 +1,44 @@
1
+
2
+ module Yelp
3
+
4
+ class Business
5
+
6
+ def initialize(hash)
7
+ @hash = hash
8
+ end
9
+
10
+ def id
11
+ @hash["id"]
12
+ end
13
+
14
+ def name
15
+ @hash["name"]
16
+ end
17
+
18
+ def phone
19
+ @hash["phone"]
20
+ end
21
+
22
+ def url
23
+ @hash["url"]
24
+ end
25
+
26
+ def mobile_url
27
+ @hash["mobile_url"]
28
+ end
29
+
30
+ def image_url
31
+ @hash["image_url"]
32
+ end
33
+
34
+ def review_count
35
+ @hash["review_count"]
36
+ end
37
+
38
+ def location
39
+ Yelp::Location.new(@hash["location"])
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,47 @@
1
+ module Yelp
2
+
3
+ class Location
4
+
5
+ def initialize(hash)
6
+ @hash = hash
7
+ end
8
+
9
+ def address
10
+ @hash["address"]
11
+ end
12
+
13
+ def display_address
14
+ @hash["display_address"]
15
+ end
16
+
17
+ def city
18
+ @hash["city"]
19
+ end
20
+
21
+ def state
22
+ @hash["state_code"]
23
+ end
24
+
25
+ def postal_code
26
+ @hash["postal_code"]
27
+ end
28
+
29
+ def country
30
+ @hash["country_code"]
31
+ end
32
+
33
+ def latitude
34
+ @hash["coordinate"]["latitude"]
35
+ end
36
+
37
+ def longitude
38
+ @hash["coordinate"]["longitude"]
39
+ end
40
+
41
+ def neighborhoods
42
+ @hash["neighborhoods"]
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -0,0 +1,3 @@
1
+ module Yelp2
2
+ VERSION = "0.0.3"
3
+ end
data/yelp2.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "yelp2/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "yelp2"
7
+ s.version = Yelp2::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Michael Pilat"]
10
+ s.email = ["mike@mikepilat.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{A simple wrapper around the Yelp v2 API}
13
+ s.description = %q{A simple wrapper around the Yelp v2 API}
14
+
15
+ s.rubyforge_project = "yelp2"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency('oauth', '>= 0.4.4')
23
+ s.add_dependency('addressable', '>= 2.2.6')
24
+ s.add_dependency('json', '>= 1.5.1')
25
+
26
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yelp2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
11
+ platform: ruby
12
+ authors:
13
+ - Michael Pilat
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-09-13 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: oauth
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 7
29
+ segments:
30
+ - 0
31
+ - 4
32
+ - 4
33
+ version: 0.4.4
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: addressable
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 11
45
+ segments:
46
+ - 2
47
+ - 2
48
+ - 6
49
+ version: 2.2.6
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: json
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 1
61
+ segments:
62
+ - 1
63
+ - 5
64
+ - 1
65
+ version: 1.5.1
66
+ type: :runtime
67
+ version_requirements: *id003
68
+ description: A simple wrapper around the Yelp v2 API
69
+ email:
70
+ - mike@mikepilat.com
71
+ executables: []
72
+
73
+ extensions: []
74
+
75
+ extra_rdoc_files: []
76
+
77
+ files:
78
+ - .gitignore
79
+ - Gemfile
80
+ - Rakefile
81
+ - lib/yelp2.rb
82
+ - lib/yelp2/base.rb
83
+ - lib/yelp2/business.rb
84
+ - lib/yelp2/location.rb
85
+ - lib/yelp2/version.rb
86
+ - yelp2.gemspec
87
+ homepage: ""
88
+ licenses: []
89
+
90
+ post_install_message:
91
+ rdoc_options: []
92
+
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ hash: 3
110
+ segments:
111
+ - 0
112
+ version: "0"
113
+ requirements: []
114
+
115
+ rubyforge_project: yelp2
116
+ rubygems_version: 1.8.10
117
+ signing_key:
118
+ specification_version: 3
119
+ summary: A simple wrapper around the Yelp v2 API
120
+ test_files: []
121
+