hibot 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da04f8159bb4a38fcec07a4b097f3686b07a79ad
4
- data.tar.gz: ce6402a54c877a8eeeacd580b37cdd033123b246
3
+ metadata.gz: 20c6d76c9963fa2fac68bf484003d065d071fb78
4
+ data.tar.gz: c5ad3bf5f78f41aaa8333833aec2b0f8841496a2
5
5
  SHA512:
6
- metadata.gz: 35d390f87724f6090b3924ad00d99180f4143abe9089623b95a23ed0473c3eeded19ae400ca4a9b3573a02aff250793d0018d97df0b350f6da6919a2a5f621c1
7
- data.tar.gz: 5375e81f645cfb8f2e3330c2007e7f59f6d52e8e8e6983c35e59c94c49a20a7d1095c3476069f949169f732813d615089645d35b948a6af313b7397c76c2692e
6
+ metadata.gz: b1f9ea06d13f11ee04c7378910206fe42d2024ff0058d5c71b649757b599c6f77867a2063aae2704d4037ac6e68630ff2752f06a5ed06fa36205d03d037bbc43
7
+ data.tar.gz: fbaf53d4166bffd1c900a811753d74bfc758cbc13d8bb6617a0851d0705614f5bffb1ea1215f4727178eed4e69cfee24de1332a90868f3e0cef218424e2685ad
data/README.md CHANGED
@@ -28,8 +28,6 @@ Then, just run the hibot binary to launch the bot. If you changed to default hib
28
28
 
29
29
  ## Plugins
30
30
 
31
- At the moment, the following plugins are available :
32
-
33
31
  To use a plugin, first you have to add it to the hibotrc file. Then configure the plugin if some extra configuration is needed. Here is the plugin list and the instructions per plugin :
34
32
 
35
33
  1. Hibot::Spotify : allows you to parse Spotify uri when pasted in a channel or to search through Spotify's API some data.
@@ -44,6 +42,15 @@ To use this plugin, you have to create a spotify application. You can do it from
44
42
  :client_secret: your_client_secret
45
43
  ```
46
44
 
45
+ 2. Hibot::Giphy : allows you to get random gif uri matching your query
46
+
47
+ To use this plugin, you have to request an API key more information about how to get a key [here](https://github.com/giphy/GiphyAPI#access-and-api-keys). When you have your key, complete the hibotrc file with that structure :
48
+
49
+ ```yaml
50
+ :Hibot::Giphy:
51
+ :api_key: your_api_key
52
+ ```
53
+
47
54
  ## Contribute
48
55
  1. Fork it
49
56
  2. Dev it
@@ -2,8 +2,8 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'hibot'
5
- s.version = '0.0.1'
6
- s.date = '2015-04-16'
5
+ s.version = '0.0.2'
6
+ s.date = '2015-04-21'
7
7
  s.summary = "IRC bot supporting multiple services."
8
8
  s.description = "IRC bot supporting multiple services like spotify, giphy and so on."
9
9
  s.authors = ["Nicolas Collard"]
@@ -0,0 +1,24 @@
1
+ module API
2
+ module Giphy
3
+ WS_URL = "http://api.giphy.com/v1/gifs/search"
4
+ URI_REGEX = /spotify:([a-z]+):(\w+)/
5
+
6
+ def search(query)
7
+ puts "dans le seeeeaaartch !!!"
8
+ query = query.gsub('!gsearch', '').strip
9
+ # Check that parameters are correct or return the corresponding error
10
+ return "Please provide something to search" if query.nil? || query == ""
11
+
12
+ # Perform the search and return the result
13
+ result = ""
14
+ response = HTTParty.get("#{WS_URL}?q=#{URI.encode(query)}&api_key=#{@@api_key}")
15
+ if response['data'] && response['data'].count > 0
16
+ gif = response['data'].first
17
+ result = "Check this : #{gif['url']}"
18
+ else
19
+ result = 'Nothing found with that parameter.'
20
+ end
21
+ result
22
+ end
23
+ end
24
+ end
@@ -6,6 +6,7 @@ module API
6
6
 
7
7
  def search(query)
8
8
  # Check that parameters are correct or return the corresponding error
9
+ query = query.gsub('!ssearch', '').strip
9
10
  type, q = query.split(' ')
10
11
  return "Invalid search request. You have to provide a valid type (artist, album or track) and then your query" if type.nil? || q.nil?
11
12
  return "Bad request. Allowed types are album, artist and track." unless PERMITTED_TYPES.include?(type)
@@ -6,7 +6,9 @@ require 'rainbow'
6
6
  # custom classes
7
7
  require 'hibot/helpers/configuration'
8
8
  require 'api/spotify'
9
+ require 'api/giphy'
9
10
  require 'hibot/plugins/spotify'
11
+ require 'hibot/plugins/giphy'
10
12
 
11
13
 
12
14
  module Hibot
@@ -25,7 +27,7 @@ module Hibot
25
27
  c.plugins.plugins = []
26
28
  config[:general]['plugins.plugins'.to_sym].each do |plugin|
27
29
  c.plugins.plugins << Object.const_get(plugin)
28
- end
30
+ end
29
31
  end
30
32
  end
31
33
 
@@ -23,4 +23,10 @@ module Configuration
23
23
  API::Spotify.class_variable_set("@@#{opt}", value)
24
24
  }
25
25
  end
26
+
27
+ def configure_hibot_giphy(opts)
28
+ opts.each {|opt, value|
29
+ API::Giphy.class_variable_set("@@#{opt}", value)
30
+ }
31
+ end
26
32
  end
@@ -0,0 +1,13 @@
1
+ module Hibot
2
+ class Giphy
3
+ include Cinch::Plugin
4
+ include API::Giphy
5
+
6
+ match /gsearch/, method: :query
7
+
8
+ def query(m)
9
+ result = search(m.message)
10
+ m.reply result
11
+ end
12
+ end
13
+ end
@@ -3,12 +3,11 @@ module Hibot
3
3
  include Cinch::Plugin
4
4
  include API::Spotify
5
5
 
6
- match "search", method: :search
6
+ match /ssearch/, {method: :query}
7
7
  match API::Spotify::URI_REGEX, {method: :parse, use_prefix: false}
8
8
 
9
- def search(m)
10
- # Search on the message without !search and without any trailing spaces
11
- result = search(m.message.gsub('!search', '').split)
9
+ def query(m)
10
+ result = search(m.message)
12
11
  m.reply result
13
12
  end
14
13
 
@@ -0,0 +1,18 @@
1
+ RSpec.describe API::Giphy do
2
+ let(:obj) { Object.new.extend(described_class) }
3
+
4
+ before(:each) do
5
+ config = Hibot.configure({path: File.expand_path("../../hibotrc", __FILE__)})
6
+ Hibot.configure_hibot_giphy(config['Hibot::Giphy'.to_sym])
7
+ end
8
+
9
+ context "parse_uri method" do
10
+ it "should return a message with an url if some gifs match the query" do
11
+ expect(obj.search('funny cat')).to_not eq("Nothing found with that parameter.")
12
+ end
13
+
14
+ it "should return an error message if none gif is found with that query" do
15
+ expect(obj.search('foobartest')).to eq("Nothing found with that parameter.")
16
+ end
17
+ end
18
+ end
@@ -11,6 +11,10 @@ RSpec.describe API::Spotify do
11
11
  expect(obj.parse_uri('spotify:track:0YQznyH9mJn6UTwWFHqy4b')).to eq('Nicolas Jaar - El Bandido')
12
12
  end
13
13
 
14
+ it "should return a result if the uri matches with an artist" do
15
+ expect(obj.parse_uri('spotify:artist:7dGJo4pcD2V6oG8kP0tJRR')).to eq('Eminem')
16
+ end
17
+
14
18
  it "should return nil if the uri doesn't match with any results" do
15
19
  expect(obj.parse_uri('spotify:track:xxxxxxxxxxxxxxxxxx')).to eq(nil)
16
20
  end
@@ -54,4 +54,15 @@ RSpec.describe Configuration do
54
54
  expect(API::Spotify.class_variable_get(:@@bar)).to eq('foo')
55
55
  end
56
56
  end
57
+
58
+ describe "configure the gihpy plugin" do
59
+ it "should create class variable for each options" do
60
+ opts = {foo: "bar", bar: "foo"}
61
+ obj.configure_hibot_giphy(opts)
62
+ expect(API::Giphy.class_variable_defined?(:@@foo)).to eq(true)
63
+ expect(API::Giphy.class_variable_get(:@@foo)).to eq('bar')
64
+ expect(API::Giphy.class_variable_defined?(:@@bar)).to eq(true)
65
+ expect(API::Giphy.class_variable_get(:@@bar)).to eq('foo')
66
+ end
67
+ end
57
68
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hibot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Collard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-16 00:00:00.000000000 Z
11
+ date: 2015-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cinch
@@ -94,11 +94,14 @@ files:
94
94
  - Rakefile
95
95
  - bin/hibot
96
96
  - hibot.gemspec
97
+ - lib/api/giphy.rb
97
98
  - lib/api/spotify.rb
98
99
  - lib/config.rb
99
100
  - lib/hibot.rb
100
101
  - lib/hibot/helpers/configuration.rb
102
+ - lib/hibot/plugins/giphy.rb
101
103
  - lib/hibot/plugins/spotify.rb
104
+ - spec/api/giphy_spec.rb
102
105
  - spec/api/spotify_spec.rb
103
106
  - spec/foo
104
107
  - spec/helpers/configuration_spec.rb
@@ -128,6 +131,7 @@ signing_key:
128
131
  specification_version: 4
129
132
  summary: IRC bot supporting multiple services.
130
133
  test_files:
134
+ - spec/api/giphy_spec.rb
131
135
  - spec/api/spotify_spec.rb
132
136
  - spec/foo
133
137
  - spec/helpers/configuration_spec.rb