lita-google 1.0.0 → 1.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 +4 -4
- data/README.md +3 -0
- data/lib/lita/handlers/google.rb +25 -1
- data/lita-google.gemspec +1 -1
- data/spec/lita/handlers/google_spec.rb +54 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 71adaf250d1a9a8e8e61d384bcf354bb27dacf0b
|
|
4
|
+
data.tar.gz: ef3dab0c4ba35d7d8893726b26b86e1428d29f22
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a1484e9c7199cb39f54b4e73cddeb6cf5234cf1bfef80032d0b0ce9050452852745c354fb79bbc964561ca04ddf8eb852d6ba9e3e5bdc4a1bb6656448364e853
|
|
7
|
+
data.tar.gz: 09324813ab5b0f012851fa68dd8faf33f56a9cab74a96ec5a543dedb5abca722d959044da5d12aa736e22286416d055242ad5825a4b56b8482cb7856d3b188ea
|
data/README.md
CHANGED
|
@@ -20,11 +20,14 @@ gem "lita-google"
|
|
|
20
20
|
|
|
21
21
|
* `safe_search` (String, Symbol) - The safe search setting to use. Possible values are `:active`, `:moderate`, and `:off`. Default: `:active`.
|
|
22
22
|
|
|
23
|
+
* `excluded_domains` (Array<String>) - Domains from which you never want to see results.
|
|
24
|
+
|
|
23
25
|
### Example
|
|
24
26
|
|
|
25
27
|
```
|
|
26
28
|
Lita.configure do |config|
|
|
27
29
|
config.handlers.google.safe_search = :off
|
|
30
|
+
config.excluded_domains = ["gawker.com", "funnyjunk.com", "dailymail.co.uk"]
|
|
28
31
|
end
|
|
29
32
|
```
|
|
30
33
|
|
data/lib/lita/handlers/google.rb
CHANGED
|
@@ -17,12 +17,15 @@ module Lita
|
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
config :excluded_domains, type: Array
|
|
21
|
+
|
|
20
22
|
route(/^(?:google|g)\s+(.+)/i, :search, command: true, help: {
|
|
21
23
|
"google QUERY" => "Return the first Google search result for QUERY."
|
|
22
24
|
})
|
|
23
25
|
|
|
24
26
|
def search(response)
|
|
25
27
|
query = response.matches[0][0]
|
|
28
|
+
result = nil
|
|
26
29
|
|
|
27
30
|
http_response = http.get(
|
|
28
31
|
URL,
|
|
@@ -33,7 +36,12 @@ module Lita
|
|
|
33
36
|
|
|
34
37
|
if http_response.status == 200
|
|
35
38
|
data = MultiJson.load(http_response.body)
|
|
36
|
-
|
|
39
|
+
|
|
40
|
+
if config.excluded_domains
|
|
41
|
+
result = check_for_excluded_domains(data)
|
|
42
|
+
else
|
|
43
|
+
result = data["responseData"]["results"].first
|
|
44
|
+
end
|
|
37
45
|
|
|
38
46
|
if result
|
|
39
47
|
response.reply(
|
|
@@ -48,6 +56,22 @@ module Lita
|
|
|
48
56
|
)
|
|
49
57
|
end
|
|
50
58
|
end
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
def check_for_excluded_domains(data)
|
|
62
|
+
data["responseData"]["results"].find do |response|
|
|
63
|
+
begin
|
|
64
|
+
uri = URI.parse(response["unescapedUrl"])
|
|
65
|
+
if uri && uri.host
|
|
66
|
+
response if config.excluded_domains.none? { |domain| uri.host.include?(domain) }
|
|
67
|
+
else
|
|
68
|
+
response
|
|
69
|
+
end
|
|
70
|
+
rescue URI::InvalidURIError
|
|
71
|
+
nil
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
51
75
|
end
|
|
52
76
|
|
|
53
77
|
Lita.register_handler(Google)
|
data/lita-google.gemspec
CHANGED
|
@@ -62,5 +62,59 @@ JSON
|
|
|
62
62
|
|
|
63
63
|
send_command("google ruby")
|
|
64
64
|
end
|
|
65
|
+
|
|
66
|
+
it "skips over domains that are blacklisted config" do
|
|
67
|
+
registry.config.handlers.google.excluded_domains = ['funnyjunk.com' ,'gawker.com']
|
|
68
|
+
|
|
69
|
+
allow(response).to receive(:body).and_return(
|
|
70
|
+
<<-JSON.chomp
|
|
71
|
+
{
|
|
72
|
+
"responseData": {
|
|
73
|
+
"results": [
|
|
74
|
+
{
|
|
75
|
+
"unescapedUrl": "http://www.funnyjunk.com",
|
|
76
|
+
"titleNoFormatting": "Funny pictures blah blah"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"unescapedUrl": "http://theoatmeal.com/blog/funnyjunk2",
|
|
80
|
+
"titleNoFormatting": "An update on the FunnyJunk situation"
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
JSON
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
send_command("google funnyjunk")
|
|
89
|
+
|
|
90
|
+
expect(replies.last).to eq(
|
|
91
|
+
"An update on the FunnyJunk situation - http://theoatmeal.com/blog/funnyjunk2"
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
it "fails gracefully if URI.parse raises an error" do
|
|
95
|
+
registry.config.handlers.google.excluded_domains = ['dailmail.co.uk']
|
|
96
|
+
|
|
97
|
+
allow(response).to receive(:body).and_return(
|
|
98
|
+
<<-JSON.chomp
|
|
99
|
+
{
|
|
100
|
+
"responseData": {
|
|
101
|
+
"results": [
|
|
102
|
+
{
|
|
103
|
+
"unescapedUrl": "555-867-5309",
|
|
104
|
+
"titleNoFormatting": "Funny pictures blah blah"
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
JSON
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
send_command("google funnyjunk")
|
|
113
|
+
|
|
114
|
+
expect(replies.last).to eq(
|
|
115
|
+
"Funny pictures blah blah - 555-867-5309"
|
|
116
|
+
)
|
|
117
|
+
end
|
|
118
|
+
|
|
65
119
|
end
|
|
66
120
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lita-google
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jimmy Cuadra
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2015-05-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: lita
|
|
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
133
133
|
version: '0'
|
|
134
134
|
requirements: []
|
|
135
135
|
rubyforge_project:
|
|
136
|
-
rubygems_version: 2.
|
|
136
|
+
rubygems_version: 2.4.5
|
|
137
137
|
signing_key:
|
|
138
138
|
specification_version: 4
|
|
139
139
|
summary: A Lita handler for returning Google search results.
|