lita-google_search 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
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,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -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,4 @@
1
+ en:
2
+ lita:
3
+ handlers:
4
+ google_search:
@@ -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
@@ -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
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