lita-google-images 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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +6 -0
- data/Gemfile +3 -0
- data/README.md +42 -0
- data/Rakefile +1 -0
- data/lib/lita-google-images.rb +1 -0
- data/lib/lita/handlers/google_images.rb +51 -0
- data/lita-google-images.gemspec +25 -0
- data/spec/lita/handlers/google_images_spec.rb +45 -0
- data/spec/spec_helper.rb +10 -0
- metadata +169 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 98068c65c12607e1f49fbcf09bb391a503e01a14
|
4
|
+
data.tar.gz: 8a3f304099a7c4d351b5e515d52b0e950af2d282
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 32912fb60cad1e9698881b820b93aa59fa1e9f3a29fa2e7b9e360c0f37bd15c3ab6adc00fd713151d63c2541f05061b2631e6038a06cbcef654824c24ceea4a5
|
7
|
+
data.tar.gz: e4c1b123cca53276e341314e4d7659864dda8f0165e4344cbc6d681a7a55bb25dfebad9a3180360e8b6c5bd1f3b6eaa83709b168557258244e6c6a630d84ef85
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# lita-google-images
|
2
|
+
|
3
|
+
[](https://travis-ci.org/jimmycuadra/lita-google-images)
|
4
|
+
[](https://codeclimate.com/github/jimmycuadra/lita-google-images)
|
5
|
+
[](https://coveralls.io/r/jimmycuadra/lita-google-images)
|
6
|
+
|
7
|
+
**lita-google-images** is a handler for [Lita](https://github.com/jimmycuadra/lita) that searches Google Images for images matching users' queries, and replies with links to them.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add lita-google-images to your Lita instance's Gemfile:
|
12
|
+
|
13
|
+
``` ruby
|
14
|
+
gem "lita-google-images"
|
15
|
+
```
|
16
|
+
|
17
|
+
## Configuration
|
18
|
+
|
19
|
+
Set `safe_search` to `false` if you want to allow explicit images. (Default is `true`.)
|
20
|
+
|
21
|
+
```
|
22
|
+
Lita.configure do |config|
|
23
|
+
config.handlers.google_images.safe_search = false
|
24
|
+
end
|
25
|
+
```
|
26
|
+
|
27
|
+
## Usage
|
28
|
+
|
29
|
+
The following are all equivalent ways of asking Lita to search for an image of "carl the pug":
|
30
|
+
|
31
|
+
```
|
32
|
+
Lita: image carl the pug
|
33
|
+
Lita: image me carl the pug
|
34
|
+
Lita: img carl the pug
|
35
|
+
Lita: img me carl the pug
|
36
|
+
```
|
37
|
+
|
38
|
+
The second form is for those coming from [Hubot](http://hubot.github.com/).
|
39
|
+
|
40
|
+
## License
|
41
|
+
|
42
|
+
[MIT](http://opensource.org/licenses/MIT)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1 @@
|
|
1
|
+
require "lita/handlers/google_images"
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "lita"
|
2
|
+
|
3
|
+
require "multi_json"
|
4
|
+
require "faraday"
|
5
|
+
|
6
|
+
module Lita
|
7
|
+
module Handlers
|
8
|
+
class GoogleImages < Handler
|
9
|
+
URL = "https://ajax.googleapis.com/ajax/services/search/images"
|
10
|
+
|
11
|
+
route(/(?:image|img)(?:\s+me)? (.+)/, to: :fetch)
|
12
|
+
|
13
|
+
def fetch(matches)
|
14
|
+
query = matches[0][0]
|
15
|
+
|
16
|
+
response = Faraday.get(
|
17
|
+
URL,
|
18
|
+
v: "1.0",
|
19
|
+
q: query,
|
20
|
+
safe: safe_value,
|
21
|
+
rsz: 8
|
22
|
+
)
|
23
|
+
|
24
|
+
data = MultiJson.load(response.body)
|
25
|
+
|
26
|
+
if data["responseStatus"] == 200
|
27
|
+
choice = data["responseData"]["results"].sample
|
28
|
+
reply "#{choice["unescapedUrl"]}#.png"
|
29
|
+
else
|
30
|
+
reason = data["responseDetails"] || "unknown error"
|
31
|
+
Lita.logger.warn(
|
32
|
+
"Couldn't get image from Google: #{reason}"
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def safe_value
|
40
|
+
safe = Lita.config.handlers.google_images.safe_search || "active"
|
41
|
+
safe = safe.to_s.downcase
|
42
|
+
safe = "active" unless ["active", "moderate", "off"].include?(safe)
|
43
|
+
safe
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
Lita.config.handlers.google_images = Config.new
|
48
|
+
Lita.config.handlers.google_images.safe_search = :active
|
49
|
+
Lita.register_handler(GoogleImages)
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-google-images"
|
3
|
+
spec.version = "0.0.1"
|
4
|
+
spec.authors = ["Jimmy Cuadra"]
|
5
|
+
spec.email = ["jimmy@jimmycuadra.com"]
|
6
|
+
spec.description = %q{A Lita handler for fetching images from Google.}
|
7
|
+
spec.summary = %q{A Lita handler for fetching images from Google.}
|
8
|
+
spec.homepage = "https://github.com/jimmycuadra/lita-google-images"
|
9
|
+
spec.license = "MIT"
|
10
|
+
|
11
|
+
spec.files = `git ls-files`.split($/)
|
12
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
13
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
14
|
+
spec.require_paths = ["lib"]
|
15
|
+
|
16
|
+
spec.add_runtime_dependency "lita", "~> 1.0"
|
17
|
+
spec.add_runtime_dependency "multi_json", "~> 1.7"
|
18
|
+
spec.add_runtime_dependency "faraday", "~> 0.8"
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rspec", ">= 2.14.0.rc1"
|
23
|
+
spec.add_development_dependency "simplecov"
|
24
|
+
spec.add_development_dependency "coveralls"
|
25
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Handlers::GoogleImages, lita: true do
|
4
|
+
it { routes("#{robot.name}: image me foo").to(:fetch) }
|
5
|
+
it { routes("#{robot.name}: image foo").to(:fetch) }
|
6
|
+
it { routes("#{robot.name}: img foo").to(:fetch) }
|
7
|
+
it { routes("#{robot.name}: img me foo").to(:fetch) }
|
8
|
+
|
9
|
+
describe "#foo" do
|
10
|
+
let(:response) { double("Faraday::Response") }
|
11
|
+
|
12
|
+
before { allow(Faraday).to receive(:get).and_return(response) }
|
13
|
+
|
14
|
+
it "replies with a matching image URL on success" do
|
15
|
+
allow(response).to receive(:body).and_return(<<-JSON.chomp
|
16
|
+
{
|
17
|
+
"responseStatus": 200,
|
18
|
+
"responseData": {
|
19
|
+
"results": [
|
20
|
+
{
|
21
|
+
"unescapedUrl": "http://www.example.com/path/to/an/image.jpg"
|
22
|
+
}
|
23
|
+
]
|
24
|
+
}
|
25
|
+
}
|
26
|
+
JSON
|
27
|
+
)
|
28
|
+
expect_reply("http://www.example.com/path/to/an/image.jpg#.png")
|
29
|
+
send_test_message("Lita: image carl")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "logs a warning on failure" do
|
33
|
+
allow(response).to receive(:body).and_return(<<-JSON.chomp
|
34
|
+
{
|
35
|
+
"responseStatus": 500,
|
36
|
+
"responseDetails": "google fail"
|
37
|
+
}
|
38
|
+
JSON
|
39
|
+
)
|
40
|
+
expect_no_reply
|
41
|
+
expect(Lita.logger).to receive(:warn).with(/google fail/)
|
42
|
+
send_test_message("Lita: image carl")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-google-images
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jimmy Cuadra
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-06-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: multi_json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.8'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.14.0.rc1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 2.14.0.rc1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: coveralls
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: A Lita handler for fetching images from Google.
|
126
|
+
email:
|
127
|
+
- jimmy@jimmycuadra.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- .gitignore
|
133
|
+
- .travis.yml
|
134
|
+
- Gemfile
|
135
|
+
- README.md
|
136
|
+
- Rakefile
|
137
|
+
- lib/lita-google-images.rb
|
138
|
+
- lib/lita/handlers/google_images.rb
|
139
|
+
- lita-google-images.gemspec
|
140
|
+
- spec/lita/handlers/google_images_spec.rb
|
141
|
+
- spec/spec_helper.rb
|
142
|
+
homepage: https://github.com/jimmycuadra/lita-google-images
|
143
|
+
licenses:
|
144
|
+
- MIT
|
145
|
+
metadata: {}
|
146
|
+
post_install_message:
|
147
|
+
rdoc_options: []
|
148
|
+
require_paths:
|
149
|
+
- lib
|
150
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
requirements: []
|
161
|
+
rubyforge_project:
|
162
|
+
rubygems_version: 2.0.3
|
163
|
+
signing_key:
|
164
|
+
specification_version: 4
|
165
|
+
summary: A Lita handler for fetching images from Google.
|
166
|
+
test_files:
|
167
|
+
- spec/lita/handlers/google_images_spec.rb
|
168
|
+
- spec/spec_helper.rb
|
169
|
+
has_rdoc:
|