lita-yelpme 0.0.3 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 738d11901b22de4eb7c960b9fc774c9404f6ec0c
4
- data.tar.gz: 12059976c0884af0506393341d65e7470c144441
3
+ metadata.gz: 7c14a1a9987d94ae1b311ec22452378998ce5564
4
+ data.tar.gz: 86aab3594dd42af3e7782e340200dbc44c3e18ff
5
5
  SHA512:
6
- metadata.gz: 62f55bf005867d57869e4cad76dd8fc1edd2fc241cadc09e474f779c8ca7d51b91094459185866f07766ed76375e50ea918c3f9ee95f4dcc2fca4c67f2004abe
7
- data.tar.gz: 65269bb83a2c76064bf97f45309d9bdee7bfe760ad8531cd5d507a270011fa21f0e9c0bcab22e4c4761e3475c54e1bf0021d49ea4dca8a585919929adbbba620
6
+ metadata.gz: d8a1fad4bf070abdf1715b70dc41ffdc2890eb75c25d5271da07f2f012676be9aad3ea247643e642928e45fb00c2ea70b110143312b3f77362d194793b0a9ff2
7
+ data.tar.gz: fd70ff35831442238371353f44d303fb76df04ea06caa11134e3d9d79a439bdc0c474dad1dce329a83329bf64f286d979014a7878fa9d8db7d50c250652ebcb1
@@ -3,10 +3,12 @@ require 'yelp'
3
3
  module Lita
4
4
  module Handlers
5
5
  class Yelpme < Handler
6
- route(/^(?:yelp|y)\s+(.+)/u, :yelp, command: true, help: {
6
+ route(/^(?:yelp|y)\s+(.+)./u, :yelp, command: true, help: {
7
7
  "yelp QUERY" => "Return the first Yelp result with information about the first business found"
8
8
  })
9
-
9
+ route(/^(?:yelp|y)\s+(.+)@\s(.*)/u, :yelp_city, command: true, help: {
10
+ "yelp QUERY @ CITY" => "Return the first Yelp result with information about the first business found"
11
+ })
10
12
  def self.default_config(handler_config)
11
13
  handler_config.default_city = "San Francisco"
12
14
  end
@@ -20,12 +22,28 @@ module Lita
20
22
  response.reply('Sorry, could not fetch a response from Yelp')
21
23
  return
22
24
  end
25
+ response.reply create_reply(config.default_city, query, yelp_response)
26
+ end
27
+ def yelp_city(response)
28
+ query = response.matches[0][0]
29
+ city = response.matches[0][1]
30
+ begin
31
+ yelp_response = client.search(city, { term: query, limit: 1 })
32
+ rescue Yelp::Error::MissingAPIKeys
33
+ Lita.logger.error('Could not receive response from yelp, check your API keys')
34
+ response.reply('Sorry, could not fetch a response from Yelp')
35
+ return
36
+ end
37
+ response.reply create_reply(city, query, yelp_response)
38
+ end
39
+
40
+ def create_reply(city, query, yelp_response)
23
41
  if yelp_response.businesses.length == 0
24
- response.reply('Cannot find any businesses in #{config.default_city} matching #{query}')
42
+ return "Cannot find any businesses in #{city} matching #{query}"
25
43
  end
26
44
  result = yelp_response.businesses[0]
27
45
  address = "#{result.location.address.join(' ')}, #{result.location.city}, #{result.location.state_code} #{result.location.postal_code}"
28
- response.reply("#{result.name} (#{result.rating} from #{result.review_count} reviews) @ #{address} - #{result.display_phone} #{result.url}")
46
+ "#{result.name} (#{result.rating} from #{result.review_count} reviews) @ #{address} - #{result.display_phone} #{result.url}"
29
47
  end
30
48
 
31
49
  def client
data/lita-yelpme.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-yelpme"
3
- spec.version = "0.0.3"
3
+ spec.version = "0.1.0"
4
4
  spec.authors = ["Ted"]
5
5
  spec.email = ["ted@stuckinacan.com"]
6
6
  spec.description = %q{A yelp handler for lita}
@@ -2,6 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe Lita::Handlers::Yelpme, lita_handler: true do
4
4
  it { routes_command('yelp state bird provisions').to(:yelp) }
5
+ it { routes_command('yelp original gravity @ san jose').to(:yelp_city) }
5
6
 
6
7
  describe "without valid API keys" do
7
8
  it "returns an error when no api keys are defined" do
@@ -11,32 +12,71 @@ describe Lita::Handlers::Yelpme, lita_handler: true do
11
12
  end
12
13
 
13
14
  describe "with valid API keys" do
14
- let(:yelp_response) {
15
- BurstStruct::Burst.new({
16
- businesses: [
17
- {
18
- location: {
19
- city: "San Francisco",
20
- address: ["1529", "Fillmore", "St"],
21
- state_code: "CA",
22
- postal_code: "94115"
23
- },
24
- name: "State Bird Provisions",
25
- rating: "4.5",
26
- review_count: 787,
27
- display_phone: "+1-415-795-1272",
28
- url: "http://www.yelp.com/biz/state-bird-provisions-san-francisco"
29
- }
30
- ]
31
- })
32
- }
15
+
33
16
  before do
34
17
  allow(Yelp::Client).to receive(:new) { Yelp::Client }
35
18
  allow(Yelp::Client).to receive(:search) { yelp_response }
36
19
  end
37
- it "fetches a result from yelp" do
38
- send_command("yelp state bird provisions")
39
- expect(replies.last).to eq ("State Bird Provisions (4.5 from 787 reviews) @ 1529 Fillmore St, San Francisco, CA 94115 - +1-415-795-1272 http://www.yelp.com/biz/state-bird-provisions-san-francisco")
20
+ describe "using the default city" do
21
+ let(:yelp_response) {
22
+ BurstStruct::Burst.new({
23
+ businesses: [
24
+ {
25
+ location: {
26
+ city: "San Francisco",
27
+ address: ["1529", "Fillmore", "St"],
28
+ state_code: "CA",
29
+ postal_code: "94115"
30
+ },
31
+ name: "State Bird Provisions",
32
+ rating: "4.5",
33
+ review_count: 787,
34
+ display_phone: "+1-415-795-1272",
35
+ url: "http://www.yelp.com/biz/state-bird-provisions-san-francisco"
36
+ }
37
+ ]
38
+ })
39
+ }
40
+ it "fetches a result from yelp" do
41
+ send_command("yelp state bird provisions")
42
+ expect(replies.last).to eq ("State Bird Provisions (4.5 from 787 reviews) @ 1529 Fillmore St, San Francisco, CA 94115 - +1-415-795-1272 http://www.yelp.com/biz/state-bird-provisions-san-francisco")
43
+ end
44
+ end
45
+ describe "using the specified city" do
46
+ let(:yelp_response) {
47
+ BurstStruct::Burst.new({
48
+ businesses: [
49
+ {
50
+ location: {
51
+ city: "San Jose",
52
+ address: ["66", "S", "1st", "St"],
53
+ state_code: "CA",
54
+ postal_code: "95113"
55
+ },
56
+ name: "Original Gravity Public House",
57
+ rating: "4.0",
58
+ review_count: 348,
59
+ display_phone: "+1-408-915-2337",
60
+ url: "http://www.yelp.com/biz/original-gravity-public-house-san-jose"
61
+ }
62
+ ]
63
+ })
64
+ }
65
+ it "fetches a result from the specified city" do
66
+ send_command('yelp original gravity @ san jose')
67
+ expect(replies.last).to eq ("Original Gravity Public House (4.0 from 348 reviews) @ 66 S 1st St, San Jose, CA 95113 - +1-408-915-2337 http://www.yelp.com/biz/original-gravity-public-house-san-jose")
68
+ end
69
+ end
70
+ describe "if there are no results" do
71
+ let(:yelp_response) {
72
+ BurstStruct::Burst.new({
73
+ businesses: []
74
+ })
75
+ }
76
+ it "returns an error" do
77
+ send_command("yelp fhaskjlfhaskfhdaskjlgflaskjhdalkhflaksjhfsa")
78
+ expect(replies.last).to eq("Cannot find any businesses in San Francisco matching fhaskjlfhaskfhdaskjlgflaskjhdalkhflaksjhfs")
79
+ end
40
80
  end
41
81
  end
42
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-yelpme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ted
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-23 00:00:00.000000000 Z
11
+ date: 2014-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita