akane-imkayac 0.0.2 → 0.1.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: 1b5f3b9d4393a71aef08adf5d2469244c3a0fd26
4
- data.tar.gz: cb6b4e9ff764cda573f4710a1897201fc996bcc3
3
+ metadata.gz: c577a93ea8e1b5b4e9c38a847ba784686068d75a
4
+ data.tar.gz: bba9ef19a5f412093f0c043d36407feb5ac6e10a
5
5
  SHA512:
6
- metadata.gz: 0f2342663271e350fddd1ee266bb95be3214eb51e829872aa901f9739c036f6f38643dc43661c3736ea3e71f078a58b8000a51c73fdf87d695a7c0ada910fc6b
7
- data.tar.gz: 7d7715b8a50910061449ad376dd8a852236b60104deed1b5d0fc33a3894af96cb2eab9ed5f3dff7ee306c411957b0a94456f6ea412563cfc353ceabf81a96477
6
+ metadata.gz: 109a6d6a35e6c3bea41021e4cb1e197b3885699d6276b90b346a378ea4ca82303994492bae35c9c334dbd3a0bef4937163ef9024f4ceb3049ea9dd01854a23e4
7
+ data.tar.gz: 6643b96aff7cade3fb33b7943a2de179b16c7d662fd47141c18008c68f5ef77fab7c3eae884a6e2e965649c951045a43a848d67710cd0aaf8903b73a27ef63f4
@@ -1,3 +1,3 @@
1
1
  module AkaneImkayac
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -20,6 +20,7 @@ module Akane
20
20
  super
21
21
 
22
22
  @config["keywords"] ||= []
23
+ @config["screen_names"] ||= []
23
24
  @config["excludes"] ||= []
24
25
  @config["message"] ||= DEFAULT_MESSAGE
25
26
  @config["endpoint"] ||= DEFAULT_ENDPOINT
@@ -39,12 +40,8 @@ module Akane
39
40
  end
40
41
 
41
42
  def record_tweet(account, tweet)
42
- unless tweet.text &&
43
- !tweet.retweet? &&
44
- @config["excludes"].all? { |_| ! tweet.text.include?(_.to_s) } &&
45
- @config["keywords"].any? { |_| tweet.text.include?(_.to_s) }
46
- return
47
- end
43
+ return unless match_rule?(tweet)
44
+
48
45
  payload = { message: ERB.new(@config["message"]).result(binding), }
49
46
 
50
47
  payload[:password] = @config["password"] if @config["password"]
@@ -77,6 +74,18 @@ module Akane
77
74
 
78
75
  def record_message(*)
79
76
  end
77
+
78
+ private
79
+
80
+ def match_rule?(tweet)
81
+ tweet.text &&
82
+ !tweet.retweet? &&
83
+ @config["excludes"].all? { |_| ! tweet.text.include?(_.to_s) } &&
84
+ (
85
+ @config["keywords"].any? { |_| tweet.text.include?(_.to_s) } ||
86
+ @config["screen_names"].include?(tweet.user.screen_name)
87
+ )
88
+ end
80
89
  end
81
90
  end
82
91
  end
@@ -8,7 +8,7 @@ require 'twitter/tweet'
8
8
  require 'twitter/user'
9
9
 
10
10
  describe Akane::Storages::Imkayac do
11
- let(:base_config) { {"user" => 'tester', "keywords" => %w(keyword), "excludes" => %w(ignore)} }
11
+ let(:base_config) { {"user" => 'tester', "screen_names" => ["match_user"], "keywords" => %w(keyword), "excludes" => %w(ignore)} }
12
12
  let(:config) { base_config }
13
13
 
14
14
  let(:endpoint) { "http://im.kayac.com/api/post" }
@@ -78,6 +78,40 @@ describe Akane::Storages::Imkayac do
78
78
  end
79
79
  end
80
80
 
81
+ describe "screen_name matching:" do
82
+ let(:tweet_text) { '---' }
83
+ context "when matched user" do
84
+ let(:screen_name) { 'match_user' }
85
+
86
+ it "sends" do
87
+ subject.record_tweet('tester', tweet)
88
+
89
+ expect(a_request(:post, "#{endpoint}/tester").with(
90
+ body: {message: '[tw] match_user: ---'}
91
+ )).to have_been_made
92
+ end
93
+ end
94
+
95
+ context "when not match" do
96
+ let(:screen_name) { 'doesnt_match_user' }
97
+
98
+ it "doesn't send" do
99
+ subject.record_tweet('tester', tweet)
100
+ expect(a_request(:post, "#{endpoint}/tester")).not_to have_been_made
101
+ end
102
+ end
103
+
104
+ context "when matched user but having excluded keyword" do
105
+ let(:screen_name) { 'match_user' }
106
+ let(:tweet_text) { 'ignore' }
107
+
108
+ it "doesn't send" do
109
+ subject.record_tweet('tester', tweet)
110
+ expect(a_request(:post, "#{endpoint}/tester")).not_to have_been_made
111
+ end
112
+ end
113
+ end
114
+
81
115
  describe "message option:" do
82
116
  let(:config) { base_config.merge("message" => '<%= tweet.id %> <%= tweet.user.id %> <%= tweet.text %> <%= tweet.user.screen_name %>') }
83
117
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akane-imkayac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shota Fukumori (sora_h)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-14 00:00:00.000000000 Z
11
+ date: 2014-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: akane
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  version: '0'
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 2.2.0
122
+ rubygems_version: 2.2.2
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: imkayac storage plugin for akane | for notification