simple_slack 0.1.0 → 0.2.0

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: 750780880ecea4a4e8f43651a71584cba4eb28f6
4
- data.tar.gz: d4083cf5ece114fe7b6cfbcfd9b686a1dc2ce749
3
+ metadata.gz: 50358ca98e866559e7e461a9f1f660d2efac975b
4
+ data.tar.gz: 717be28a59fa231ea591d161707cc272173fd92d
5
5
  SHA512:
6
- metadata.gz: 43ca832aad72ca76bc48fc7160ca621b428847bf33c11996513c9685246e160799d3996c3f87e8c523f6c455825c5eb9e8cb3249c32c430d8b6147dc89b3bee6
7
- data.tar.gz: c54fd91383db15f2ad49da2012f53891e486e53a38f99245f5246f1265497a1d1606604f8c13167a2f3f89cf0c03c4d6d89b3f56a4f8d79a15af03666522bc51
6
+ metadata.gz: 2cccf8eb285ac34486479c55af223d8bc56dee0131acd46402f07645ce086d8c63902fbc82d4cbbdf69db94332002f89386b94d4079967eb6b22561202e20c2e
7
+ data.tar.gz: 023b7efc5db7c49e731502a4ba0e36cc9a16a2b55490d30a29dc168064815a4ea4ecc831f5c49d61a3e64964d01b33ab36800427e611e09f8558d8e2e6cd0178
@@ -0,0 +1,126 @@
1
+ class SimpleSlack::Botter
2
+ def initialize(token, client)
3
+ Slack.configure {|c| c.token = token }
4
+ @r_client = Slack.realtime
5
+ @client = client
6
+ @channel, @text, @user = ["all"] * 3
7
+ @responce_channel, @responce_text, @responce_user = nil, nil, "slacker"
8
+ @responce_block = nil
9
+ end
10
+
11
+ def set_condition(channel: nil, text: nil, user: nil)
12
+ @channel = set_condition_channel(channel) if channel
13
+ @user = set_condition_user(user) if user
14
+ @text = set_condition_text(text) if text
15
+ end
16
+
17
+ def set_responce(channel: nil , text: nil, user: nil)
18
+ @responce_channel = channel if channel
19
+ @responce_text = text if text
20
+ @responce_user = user if user
21
+ if block_given?
22
+ @responce_block = Proc.new(&yield)
23
+ end
24
+ end
25
+
26
+ def status
27
+ variables = instance_variables.map {|v| v.to_s }
28
+ variables.map {|v| { v.to_s => instance_variable_get(v) } }
29
+ end
30
+
31
+ def start
32
+ return p "not set params. need set_responce(channel: , text: , user: )" unless valid_params
33
+ @r_client.on :message do |data|
34
+ if fit_condition?(data)
35
+ send_responce(data)
36
+ end
37
+ end
38
+ puts "client start!"
39
+ @r_client.start rescue puts "client stop. abort!"
40
+ end
41
+
42
+ private
43
+
44
+ def send_responce(data)
45
+ if @responce_block.nil?
46
+ @client.post.channel(to: @responce_channel, text: @responce_text, name: @responce_user)
47
+ else
48
+ @responce_block.call(data)
49
+ end
50
+ end
51
+
52
+ def valid_params
53
+ variables = instance_variables.map {|v| v.to_s }
54
+ variables.none? {|v| instance_variable_get(v).nil? }
55
+ end
56
+
57
+ def fit_condition?(data)
58
+ fit_params?(@channel, data["channel"]) && fit_params?(@user, data["user"]) && fit_params?(@text, data["text"])
59
+ end
60
+
61
+ def fit_params?(set_params, res_param)
62
+ return true if set_params == "all"
63
+ case set_params
64
+ when String
65
+ set_params == res_param
66
+ when Array
67
+ set_params.any? {|param| fit_params?(param, res_param) }
68
+ when Regexp
69
+ set_params =~ res_param
70
+ when Hash
71
+ set_params[:id] == res_param
72
+ else
73
+ false
74
+ end
75
+ end
76
+
77
+ def set_condition_channel(channel)
78
+ return nil if channel.nil?
79
+ case channel
80
+ when String
81
+ @client.get.channel(channel)
82
+ when Array
83
+ channle.map {|ch| @client.get.channel(ch.to_s) }
84
+ when Hash
85
+ channel
86
+ when Symbol
87
+ @client.get.channel(channel.to_s)
88
+ else
89
+ "error: invalid Object"
90
+ end
91
+ end
92
+
93
+ def set_condition_user(user)
94
+ return nil if user.nil?
95
+ case user
96
+ when String
97
+ @client.get.user(user)
98
+ when Array
99
+ user.map {|u| set_condition_user(u) }
100
+ when Hash
101
+ user
102
+ when Symbol
103
+ @client.get.user(user.to_s)
104
+ else
105
+ "error: invalid Object"
106
+ end
107
+ end
108
+
109
+ def set_condition_text(text)
110
+ return nil if text.nil?
111
+ case text
112
+ when String
113
+ text.gsub(/\p{blank}/,"\s").strip.split("\s")
114
+ when Array
115
+ text.map {|t| set_condition_text(t) }
116
+ when Regexp
117
+ text
118
+ else
119
+ text.to_s rescue nil
120
+ end
121
+ end
122
+
123
+ def set_responce_channel(channel)
124
+ set_condition_channel(channel)
125
+ end
126
+ end
@@ -2,10 +2,12 @@ require 'slack'
2
2
  require 'omniauth-slack'
3
3
  require 'simple_slack/getter'
4
4
  require 'simple_slack/poster'
5
+ require 'simple_slack/botter'
5
6
 
6
7
  class SimpleSlack::Client
7
8
  def initialize(token)
8
- Slack.configure { |config| config.token = token }
9
+ @token = token
10
+ Slack.configure { |config| config.token = @token }
9
11
  @slack = Slack.client
10
12
  end
11
13
 
@@ -16,4 +18,8 @@ class SimpleSlack::Client
16
18
  def post
17
19
  @poster ||= SimpleSlack::Poster.new(@slack)
18
20
  end
21
+
22
+ def bot
23
+ @botter ||= SimpleSlack::Botter.new(@token, self)
24
+ end
19
25
  end
@@ -15,7 +15,7 @@ class SimpleSlack::Poster
15
15
 
16
16
  def chat(channel: nil, user: nil, text: , name: "slacker")
17
17
  if channel
18
- self.channel(to: to, text: text, name: name)
18
+ self.channel(to: channel, text: text, name: name)
19
19
  elsif user
20
20
  "yet"
21
21
  end
@@ -24,8 +24,7 @@ class SimpleSlack::Poster
24
24
  private
25
25
 
26
26
  def convert(name)
27
- getter = SimpleSlack::Getter.new(@slack)
28
- channel = getter.channel(name)
27
+ channel = @slack.get.channel(name)
29
28
  channel[:id]
30
29
  end
31
30
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleSlack
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_slack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - toririn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-06 00:00:00.000000000 Z
11
+ date: 2016-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,6 +84,7 @@ files:
84
84
  - bin/console
85
85
  - bin/setup
86
86
  - lib/simple_slack.rb
87
+ - lib/simple_slack/botter.rb
87
88
  - lib/simple_slack/client.rb
88
89
  - lib/simple_slack/getter.rb
89
90
  - lib/simple_slack/poster.rb
@@ -115,3 +116,4 @@ signing_key:
115
116
  specification_version: 4
116
117
  summary: simple use slack
117
118
  test_files: []
119
+ has_rdoc: