lita-google_search 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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +3 -0
- data/README.md +15 -0
- data/Rakefile +6 -0
- data/lib/lita-google_search.rb +12 -0
- data/lib/lita/handlers/google_search.rb +53 -0
- data/lita-google_search.gemspec +24 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/google_search_spec.rb +64 -0
- data/spec/spec_helper.rb +6 -0
- data/templates/.gitkeep +0 -0
- metadata +155 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1ae5bbbb2d81727e623cf33523126e6f2b2ea897
|
4
|
+
data.tar.gz: 72f2816ebc68457f1a06e7adc625a46843713248
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: aeb8d26c587396bdbcf39242b7d08259c62ab9480dbd6f07f8759e621b15fc85e0a5f7ae46f556bc03ebf404a0700a89a1ed4fc6be9b2e7d554edcc457c9d7e7
|
7
|
+
data.tar.gz: 9538fb174a1c0154eccf714d50a58c211da297e36a984dc1968fe110ea5818177ded1561774275c09deae50739d0e3f6ff4303b6c4d3e21a024a880f037eec41
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# lita-google_search
|
2
|
+
|
3
|
+
A lita plugin to take care of all searches: image, google and youtube
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add lita-google_search to your Lita instance's Gemfile:
|
8
|
+
|
9
|
+
``` ruby
|
10
|
+
gem "lita-google_search"
|
11
|
+
```
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
See help
|
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "lita"
|
2
|
+
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join("..", "..", "locales", "*.yml"), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require "lita/handlers/google_search"
|
8
|
+
|
9
|
+
Lita::Handlers::GoogleSearch.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'google-search'
|
2
|
+
|
3
|
+
module Lita
|
4
|
+
module Handlers
|
5
|
+
class GoogleSearch < Handler
|
6
|
+
# insert handler code here
|
7
|
+
route(/g(oogle)?\s+(?<me>me\s+)?(?<terms>.*)/, :google_search, command: true, help:{
|
8
|
+
"google smthg" => "google search something (alias g smthg)",
|
9
|
+
"google me smthg" => "google search something and reply privately (alias g me smthg)",
|
10
|
+
})
|
11
|
+
|
12
|
+
def google_search(r)
|
13
|
+
print_search(r, Google::Search::Web)
|
14
|
+
end
|
15
|
+
|
16
|
+
route(/(image|img)\s+(?<me>me\s+)?(?<terms>.*)/, :image_search, command: true, help:{
|
17
|
+
"image smthg" => "google image search something (alias img smthg)",
|
18
|
+
"image me smthg" => "google image search something and reply privately (alias img me smthg)",
|
19
|
+
})
|
20
|
+
|
21
|
+
def image_search(r)
|
22
|
+
print_search(r, Google::Search::Image)
|
23
|
+
end
|
24
|
+
|
25
|
+
route(/(yt|youtube)\s+(?<me>me\s+)?(?<terms>.*)/, :youtube_search, command: true, help: {
|
26
|
+
"youtube smthg" => "youtube image search something (alias yt smthg)",
|
27
|
+
"youtube me smthg" => "youtube search something and reply privately (alias yt me smthg)",
|
28
|
+
})
|
29
|
+
|
30
|
+
def youtube_search(r)
|
31
|
+
print_search(r, Google::Search::Video)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def print_search(r, clazz)
|
37
|
+
result = clazz.new(:query => r.match_data[:terms]).first
|
38
|
+
r.send(answering_method(r), "#{r.user.name}: #{result.title.gsub(/<[^>]*>/,"").gsub(/\s\s+/," ")} ( #{result.uri} )")
|
39
|
+
r.send(answering_method(r), result.content.gsub(/<[^>]*>/,"").gsub(/\s\s+/," "))
|
40
|
+
end
|
41
|
+
|
42
|
+
def answering_method(r)
|
43
|
+
if r.match_data[:me]
|
44
|
+
"reply_privately"
|
45
|
+
else
|
46
|
+
"reply"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
Lita.register_handler(self)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-google_search"
|
3
|
+
spec.version = "0.1.0"
|
4
|
+
spec.authors = ["Zaratan"]
|
5
|
+
spec.email = ["denis.pasin@gmail.com"]
|
6
|
+
spec.description = "A lita plugin to do all the type of google search"
|
7
|
+
spec.summary = "A lita plugin to do all the type of google search"
|
8
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
9
|
+
|
10
|
+
spec.files = `git ls-files`.split($/)
|
11
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
12
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
13
|
+
spec.require_paths = ["lib"]
|
14
|
+
|
15
|
+
spec.add_dependency "google-search"
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "lita", ">= 4.6"
|
18
|
+
|
19
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
20
|
+
spec.add_development_dependency "pry-byebug"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rack-test"
|
23
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
24
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Handlers::GoogleSearch, lita_handler: true do
|
4
|
+
let(:user) {Lita::User.create("1234", name: "Skizzk")}
|
5
|
+
|
6
|
+
describe "google" do
|
7
|
+
it { is_expected.to route_command("google ruby").to(:google_search) }
|
8
|
+
it { is_expected.to route_command("google me ruby").to(:google_search) }
|
9
|
+
it { is_expected.to route_command("g ruby").to(:google_search) }
|
10
|
+
it { is_expected.to route_command("g me ruby").to(:google_search) }
|
11
|
+
|
12
|
+
subject do
|
13
|
+
send_command("google test", as: user)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "makes a call to google_search gem with the right params" do
|
17
|
+
expect(Google::Search::Web).to receive(:new).with(query: "test").and_call_original
|
18
|
+
subject
|
19
|
+
end
|
20
|
+
|
21
|
+
it "sends back a title, url and a short description" do
|
22
|
+
subject
|
23
|
+
expect(replies.last(2).first).to match(/^Skizzk: \S+.*http:\/\/.*/)
|
24
|
+
expect(replies.last).to match(/\S+/)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "answer in private if google me" do
|
28
|
+
expect(Google::Search::Web).to receive(:new).with(query: "test").and_call_original
|
29
|
+
expect_any_instance_of(Lita::Response).to receive(:reply_privately).twice.and_call_original
|
30
|
+
send_command("g me test", as: user)
|
31
|
+
expect(replies.last).to match(/\S+/)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "image" do
|
36
|
+
subject do
|
37
|
+
send_command("image test", as: user)
|
38
|
+
end
|
39
|
+
|
40
|
+
it { is_expected.to route_command("image ruby").to(:image_search) }
|
41
|
+
it { is_expected.to route_command("image me ruby").to(:image_search) }
|
42
|
+
it { is_expected.to route_command("img ruby").to(:image_search) }
|
43
|
+
|
44
|
+
it "makes a call to google_search gem with the right params" do
|
45
|
+
expect(Google::Search::Image).to receive(:new).with(query: "test").and_call_original
|
46
|
+
subject
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "youtube" do
|
51
|
+
subject do
|
52
|
+
send_command("youtube test", as: user)
|
53
|
+
end
|
54
|
+
|
55
|
+
it { is_expected.to route_command("youtube ruby").to(:youtube_search) }
|
56
|
+
it { is_expected.to route_command("youtube me ruby").to(:youtube_search) }
|
57
|
+
it { is_expected.to route_command("yt ruby").to(:youtube_search) }
|
58
|
+
|
59
|
+
it "makes a call to google_search gem with the right params" do
|
60
|
+
expect(Google::Search::Video).to receive(:new).with(query: "test").and_call_original
|
61
|
+
subject
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
require "lita-google_search"
|
2
|
+
require "lita/rspec"
|
3
|
+
|
4
|
+
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
5
|
+
# was generated with Lita 4, the compatibility mode should be left disabled.
|
6
|
+
Lita.version_3_compatibility_mode = false
|
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-google_search
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Zaratan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-10-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: google-search
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: lita
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry-byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
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: rack-test
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.0.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.0.0
|
111
|
+
description: A lita plugin to do all the type of google search
|
112
|
+
email:
|
113
|
+
- denis.pasin@gmail.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- Gemfile
|
120
|
+
- README.md
|
121
|
+
- Rakefile
|
122
|
+
- lib/lita-google_search.rb
|
123
|
+
- lib/lita/handlers/google_search.rb
|
124
|
+
- lita-google_search.gemspec
|
125
|
+
- locales/en.yml
|
126
|
+
- spec/lita/handlers/google_search_spec.rb
|
127
|
+
- spec/spec_helper.rb
|
128
|
+
- templates/.gitkeep
|
129
|
+
homepage:
|
130
|
+
licenses: []
|
131
|
+
metadata:
|
132
|
+
lita_plugin_type: handler
|
133
|
+
post_install_message:
|
134
|
+
rdoc_options: []
|
135
|
+
require_paths:
|
136
|
+
- lib
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
requirements: []
|
148
|
+
rubyforge_project:
|
149
|
+
rubygems_version: 2.4.8
|
150
|
+
signing_key:
|
151
|
+
specification_version: 4
|
152
|
+
summary: A lita plugin to do all the type of google search
|
153
|
+
test_files:
|
154
|
+
- spec/lita/handlers/google_search_spec.rb
|
155
|
+
- spec/spec_helper.rb
|