cinch-twitterstatus 1.1.0 → 1.1.1
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 +7 -0
- data/.travis.yml +23 -6
- data/cinch-twitterstatus.gemspec +7 -9
- data/lib/cinch/plugins/twitterstatus.rb +42 -41
- data/lib/cinch/plugins/twitterstatus/version.rb +1 -1
- data/spec/cinch-twitterstatus_spec.rb +22 -18
- metadata +40 -45
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: 845cb76a25308cbdc40708c3c6d7c4fc6248da6a
|
4
|
+
data.tar.gz: 117716e75d38820d63fce21d2c603a17d9d4eff6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bea0d7b4bbaede8c99cf24b49b4e5e7ce19438a126ba0d94bd08e6fb8978a86dbbadb8e3fa13a5c00da8494cbd487391d4d7c634e75be4d09c85cca821899837
|
7
|
+
data.tar.gz: d44ef11168014e53a89d6e32b3c10371040018ed531570a429fab3c922002417332b9f77bcc30722f61737f42b20f14ef0c9dc6af0236ce741f8a9a7dee47c08
|
data/.travis.yml
CHANGED
@@ -1,26 +1,43 @@
|
|
1
1
|
---
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
|
-
- 1.
|
5
|
-
-
|
4
|
+
- 2.1.0
|
5
|
+
- 2.0.0
|
6
|
+
- 1.9.3
|
7
|
+
- 1.9.2
|
8
|
+
- 1.8.7
|
9
|
+
- jruby-18mode
|
10
|
+
- jruby-19mode
|
11
|
+
- ruby-head
|
12
|
+
- jruby-head
|
13
|
+
- ree
|
14
|
+
matrix:
|
15
|
+
allow_failures:
|
16
|
+
- rvm: 1.8.7
|
17
|
+
- rvm: ree
|
18
|
+
- rvm: jruby-18mode
|
19
|
+
- rvm: jruby-19mode
|
20
|
+
- rvm: jruby-head
|
21
|
+
fast_finish: true
|
6
22
|
env:
|
7
23
|
global:
|
8
|
-
|
24
|
+
- JRUBY_OPTS=-Xcext.enabled=true
|
25
|
+
- secure: ! 'Yz/VAtfbXwk6JD/2/z6c2SGygNGELrF0dlZ/M5nOrDiKNm8lxpC6w19esGbB
|
9
26
|
|
10
27
|
CYt8UtqylceJ2UxYngHLVH48oPb+A5fv21/jDJMqHeO/N4WjwQUOzBZXfZG6
|
11
28
|
|
12
29
|
lpugXIsT9Q10q0AsXry65YuzZtpY7VkVQUNSBYte7jTcWbLmIWQ='
|
13
|
-
|
30
|
+
- secure: ! 'CbdMyExVnyHfPQ+scSky8JIlqK0dU7idBrtvipQIA2dGfIIj0lzuUDEqvtAv
|
14
31
|
|
15
32
|
+9A7Mw01ddxQ/tXdixHDBNOhp9Ddz+4/0OSMyIb/5uFy+l7b2B2K4A4R5crI
|
16
33
|
|
17
34
|
RBc5W5rgzRLnDD7HL4BZMRDpx3sJRLcIH9S4bclXyjkzQ7yzVDc='
|
18
|
-
|
35
|
+
- secure: ! 'Pl14JkhwMe+HHi1Ht0znd0+TnSzdSGvtG4pX8+oSWuIyfTd3xfoj7Pf1S4P/
|
19
36
|
|
20
37
|
7SVnixq2gQh13OaL4Tj2sR6+AHz6n+onareFoKkZPSJuDRh6yXFfvKIdx4MV
|
21
38
|
|
22
39
|
l5lIJbSI4icPWOMk6ObMCzIb/m3m4Z/BG3O5E/6AcJDQa7rspL0='
|
23
|
-
|
40
|
+
- secure: ! 'Xrh52mNuRCf1kJHpZctrz3gfBZQ/rlC+qz/MlvZ9L7sm1CFSIoJdizrOYawt
|
24
41
|
|
25
42
|
cKOyLfsLrcnJqGbq0s++cSQ2QDggEGxtVkMXxIw7dBFn2icZsKsTN5rh28UR
|
26
43
|
|
data/cinch-twitterstatus.gemspec
CHANGED
@@ -17,13 +17,11 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
|
-
|
21
|
-
gem.add_development_dependency
|
22
|
-
gem.add_development_dependency
|
23
|
-
gem.add_development_dependency
|
24
|
-
gem.
|
25
|
-
|
26
|
-
gem.add_dependency
|
27
|
-
gem.add_dependency 'cinch', '~> 2.0.12'
|
28
|
-
gem.add_dependency 'cinch-toolbox', '~> 1.1.0'
|
20
|
+
gem.add_development_dependency 'rake', '~> 10'
|
21
|
+
gem.add_development_dependency 'rspec', '~> 3'
|
22
|
+
gem.add_development_dependency 'coveralls', '~> 0.7'
|
23
|
+
gem.add_development_dependency 'cinch-test', '~> 0.1', '>= 0.1.0'
|
24
|
+
gem.add_dependency 'cinch', '~> 2'
|
25
|
+
gem.add_dependency 'cinch-toolbox', '~> 1.1'
|
26
|
+
gem.add_dependency 'twitter', '~> 5.7', '>= 5.7.1'
|
29
27
|
end
|
@@ -3,62 +3,63 @@ require 'cinch'
|
|
3
3
|
require 'cinch/toolbox'
|
4
4
|
require 'twitter'
|
5
5
|
|
6
|
-
module Cinch
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
module Cinch
|
7
|
+
module Plugins
|
8
|
+
# Cinch Plugin to post twitter statuses
|
9
|
+
class TwitterStatus
|
10
|
+
include Cinch::Plugin
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
self.help = 'Just link to a specific twitter status and I will ' \
|
13
|
+
'post the content of that tweet.'
|
13
14
|
|
14
|
-
|
15
|
+
listen_to :channel
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
def initialize(*args)
|
18
|
+
super
|
19
|
+
@client = twitter_client
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
def listen(m)
|
23
|
+
Cinch::Toolbox.extract_urls(m.message).each do |url|
|
24
|
+
next unless url.match(%r(^https?://mobile|w{3}?\.?twitter\.com/))
|
24
25
|
msg = format_tweet(url)
|
25
26
|
m.reply msg unless msg.nil?
|
26
27
|
end
|
28
|
+
rescue Twitter::Error::NotFound, Twitter::Error::Forbidden
|
29
|
+
debug 'User posted an invalid twitter status'
|
27
30
|
end
|
28
|
-
rescue Twitter::Error::NotFound, Twitter::Error::Forbidden
|
29
|
-
debug 'User posted an invalid twitter status'
|
30
|
-
end
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
def format_tweet(url)
|
33
|
+
# Parse the url and get the relevant data
|
34
|
+
user, status = parse_twitter_url(url)
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
# Return blank if we didn't get a good user and status
|
37
|
+
return if user.nil? || status.nil?
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
tweet_text(user, status)
|
40
|
+
end
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
def tweet_text(user, status)
|
43
|
+
# Scrub the tweet for returns so we don't have multilined responses.
|
44
|
+
status.gsub!(/[\n]+/, ' ') if status.match(/\n/)
|
45
|
+
"@#{user} tweeted \"#{status}\""
|
46
|
+
end
|
47
47
|
|
48
|
-
|
48
|
+
private
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
def parse_twitter_url(url)
|
51
|
+
tweet_id = url[%r{statuse?s?/(\d+)/?}, 1]
|
52
|
+
user = url[%r{/?#?!?/([^\/]+)/statuse?s?}, 1]
|
53
|
+
[user, @client.status(tweet_id).text]
|
54
|
+
end
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
56
|
+
def twitter_client
|
57
|
+
Twitter::REST::Client.new do |c|
|
58
|
+
c.consumer_key = config[:consumer_key]
|
59
|
+
c.consumer_secret = config[:consumer_secret]
|
60
|
+
c.access_token = config[:access_token]
|
61
|
+
c.access_token_secret = config[:access_secret]
|
62
|
+
end
|
62
63
|
end
|
63
64
|
end
|
64
65
|
end
|
@@ -6,37 +6,42 @@ describe Cinch::Plugins::TwitterStatus do
|
|
6
6
|
|
7
7
|
before(:all) do
|
8
8
|
@bot = make_bot(Cinch::Plugins::TwitterStatus,
|
9
|
-
{ filename:
|
10
|
-
watchers:
|
11
|
-
consumer_key:
|
9
|
+
{ filename: '/dev/null',
|
10
|
+
watchers: { '#foo' => ['weirdo513'] },
|
11
|
+
consumer_key: ENV['CONSUMER_KEY'],
|
12
12
|
consumer_secret: ENV['CONSUMER_SECRET'],
|
13
|
-
oauth_token:
|
14
|
-
oauth_secret:
|
13
|
+
oauth_token: ENV['OAUTH_TOKEN'],
|
14
|
+
oauth_secret: ENV['OAUTH_SECRET'] })
|
15
|
+
@status =
|
16
|
+
{ normal: 'https://twitter.com/weirdo513/status/344186643609174016',
|
17
|
+
protected: 'https://twitter.com/brewtopian/status/68071618055901184',
|
18
|
+
invalid: 'https://twitter.com/weirdo513/status/3INVALI643609174016' }
|
15
19
|
end
|
16
20
|
|
17
21
|
describe "Twitter Link Parsing" do
|
18
22
|
it 'should return the text of the tweet when linked in the channel' do
|
19
|
-
get_replies(make_message(@bot,
|
20
|
-
|
21
|
-
|
23
|
+
msg = get_replies(make_message(@bot, @status[:normal],
|
24
|
+
{ channel: '#foo', nick: 'bar' })).first
|
25
|
+
expect(msg.text).to eq('@weirdo513 tweeted "HOW IS THAT MIC STILL ON JESUS"')
|
22
26
|
end
|
23
27
|
|
24
28
|
it 'should not return any text if the status is invalid' do
|
25
|
-
get_replies(make_message(@bot,
|
26
|
-
|
27
|
-
|
29
|
+
msg = get_replies(make_message(@bot, @status[:invalid],
|
30
|
+
{ channel: '#foo', nick: 'bar' }))
|
31
|
+
expect(msg).to be_empty
|
28
32
|
end
|
29
33
|
|
30
34
|
it 'should not return any text if the status is protected' do
|
31
|
-
get_replies(make_message(@bot,
|
32
|
-
|
33
|
-
|
35
|
+
msg = get_replies(make_message(@bot, @status[:protected],
|
36
|
+
{ channel: '#foo', nick: 'bar' }))
|
37
|
+
expect(msg).to be_empty
|
34
38
|
end
|
35
39
|
|
36
40
|
it 'should not run without credentials set' do
|
37
41
|
bot = make_bot(Cinch::Plugins::TwitterStatus)
|
38
|
-
get_replies(make_message(bot,
|
39
|
-
|
42
|
+
msg = get_replies(make_message(bot, @status[:normal],
|
43
|
+
{ channel: '#foo', nick: 'bar' }))
|
44
|
+
expect(msg).to be_empty
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
@@ -44,9 +49,8 @@ describe Cinch::Plugins::TwitterStatus do
|
|
44
49
|
# FIXME: cinch-test does not allow timers to function
|
45
50
|
it 'should not post tweets that already existed when the bot was started' do
|
46
51
|
sleep 20
|
47
|
-
get_replies(make_message(@bot,
|
52
|
+
get_replies(make_message(@bot, @status[:normal],
|
48
53
|
{ channel: '#foo', nick: 'bar' }))
|
49
54
|
end
|
50
55
|
end
|
51
56
|
end
|
52
|
-
|
metadata
CHANGED
@@ -1,128 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cinch-twitterstatus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brian Haberer
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-08-01 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '10'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '10'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
33
|
+
version: '3'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
40
|
+
version: '3'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: coveralls
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
47
|
+
version: '0.7'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
54
|
+
version: '0.7'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: cinch-test
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.1'
|
67
62
|
- - ! '>='
|
68
63
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
64
|
+
version: 0.1.0
|
70
65
|
type: :development
|
71
66
|
prerelease: false
|
72
67
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
68
|
requirements:
|
69
|
+
- - ~>
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0.1'
|
75
72
|
- - ! '>='
|
76
73
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
74
|
+
version: 0.1.0
|
78
75
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
76
|
+
name: cinch
|
80
77
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
78
|
requirements:
|
83
79
|
- - ~>
|
84
80
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
81
|
+
version: '2'
|
86
82
|
type: :runtime
|
87
83
|
prerelease: false
|
88
84
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
85
|
requirements:
|
91
86
|
- - ~>
|
92
87
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
88
|
+
version: '2'
|
94
89
|
- !ruby/object:Gem::Dependency
|
95
|
-
name: cinch
|
90
|
+
name: cinch-toolbox
|
96
91
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
92
|
requirements:
|
99
93
|
- - ~>
|
100
94
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
95
|
+
version: '1.1'
|
102
96
|
type: :runtime
|
103
97
|
prerelease: false
|
104
98
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
99
|
requirements:
|
107
100
|
- - ~>
|
108
101
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
102
|
+
version: '1.1'
|
110
103
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
104
|
+
name: twitter
|
112
105
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
106
|
requirements:
|
115
107
|
- - ~>
|
116
108
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
109
|
+
version: '5.7'
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 5.7.1
|
118
113
|
type: :runtime
|
119
114
|
prerelease: false
|
120
115
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
116
|
requirements:
|
123
117
|
- - ~>
|
124
118
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
119
|
+
version: '5.7'
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 5.7.1
|
126
123
|
description: Cinch IRC bot Plugin that access the Twitter API to post the content
|
127
124
|
of linked twitter statuses to the channel.
|
128
125
|
email:
|
@@ -146,29 +143,27 @@ files:
|
|
146
143
|
homepage: https://github.com/bhaberer/cinch-twitterstatus
|
147
144
|
licenses:
|
148
145
|
- MIT
|
146
|
+
metadata: {}
|
149
147
|
post_install_message:
|
150
148
|
rdoc_options: []
|
151
149
|
require_paths:
|
152
150
|
- lib
|
153
151
|
required_ruby_version: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
152
|
requirements:
|
156
153
|
- - ! '>='
|
157
154
|
- !ruby/object:Gem::Version
|
158
155
|
version: '0'
|
159
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
|
-
none: false
|
161
157
|
requirements:
|
162
158
|
- - ! '>='
|
163
159
|
- !ruby/object:Gem::Version
|
164
160
|
version: '0'
|
165
161
|
requirements: []
|
166
162
|
rubyforge_project:
|
167
|
-
rubygems_version:
|
163
|
+
rubygems_version: 2.2.2
|
168
164
|
signing_key:
|
169
|
-
specification_version:
|
165
|
+
specification_version: 4
|
170
166
|
summary: Cinch Plugin to post tweets to channel.
|
171
167
|
test_files:
|
172
168
|
- spec/cinch-twitterstatus_spec.rb
|
173
169
|
- spec/spec_helper.rb
|
174
|
-
has_rdoc:
|