simple_slack 0.1.0 → 0.2.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 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: