cinch-twitter 1.0.4 → 2.0.2
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 +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +2 -2
- data/cinch-twitter.gemspec +7 -6
- data/lib/cinch/plugins/twitter.rb +70 -56
- data/lib/cinch/plugins/twitter/version.rb +1 -1
- metadata +39 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c78167e8dea6ad52e63fde4d37a76883fb6dbc8
|
4
|
+
data.tar.gz: 108e50c4e34bca3660891fc63b09af43240c9b79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd97aa5ab04f56e044b00e0e52e063f4f23ede8851e7f6cc739144efc258bdcd23a05e0e0a11967804a79309548a13149f9e784e2f054bf4fa0ffa6674adda2e
|
7
|
+
data.tar.gz: 2429229aae5a5234f8271eeebfb01eb49fa691aa779873114f01bbce34346bfb9230f0dd77ea2957a65bc9a92037d88aed4d3daca402d5b6ae6959414dae18de
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
data/cinch-twitter.gemspec
CHANGED
@@ -7,8 +7,8 @@ Gem::Specification.new do |spec|
|
|
7
7
|
|
8
8
|
spec.name = "cinch-twitter"
|
9
9
|
spec.version = Cinch::Twitter::VERSION
|
10
|
-
spec.authors = ["Mark Seymour"]
|
11
|
-
spec.email = ["mark.seymour.ns@gmail.com"]
|
10
|
+
spec.authors = ["Mark Seymour" "Richard Banks"]
|
11
|
+
spec.email = ["mark.seymour.ns@gmail.com" "namaste@rawnet.net"]
|
12
12
|
spec.description = %q{A Twitter plugin for Cinch.}
|
13
13
|
spec.summary = %q{A Cinch plugin for accessing Twitter.}
|
14
14
|
spec.homepage = "https://github.com/mseymour/cinch-twitter"
|
@@ -20,11 +20,12 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
22
|
# Gem dependencies
|
23
|
-
spec.add_dependency 'twitter', '~>
|
24
|
-
spec.add_dependency 'cinch', '~> 2.
|
25
|
-
spec.add_dependency
|
23
|
+
spec.add_dependency 'twitter', '~> 5.8'
|
24
|
+
spec.add_dependency 'cinch', '~> 2.1'
|
25
|
+
spec.add_dependency 'oj', '~> 2.0'
|
26
|
+
spec.add_dependency 'time-lord', '~> 1.0'
|
26
27
|
|
27
28
|
# Development dependencies
|
28
29
|
spec.add_development_dependency "bundler", "~> 1.3"
|
29
|
-
spec.add_development_dependency
|
30
|
+
spec.add_development_dependency 'rake', '~> 0'
|
30
31
|
end
|
@@ -3,106 +3,120 @@
|
|
3
3
|
require "oj"
|
4
4
|
require "twitter"
|
5
5
|
require "cgi"
|
6
|
+
require "time-lord"
|
6
7
|
|
7
8
|
module Cinch
|
8
9
|
module Plugins
|
9
10
|
class Twitter
|
10
11
|
include Cinch::Plugin
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
|
13
|
+
set :plugin_name, 'twitter'
|
14
|
+
set :help, <<-USAGE.gsub(/^ {6}/, '')
|
15
|
+
A Twitter plugin for the bot!
|
16
|
+
Usage:
|
17
|
+
* !tw <handle(-D)>: Fetch the latest Tweet from the bot or include an offset (I.E. !tw someuser-2) to fetch (-D) Tweets back (up to 19)
|
18
|
+
* @<handle(-D): Same as above, just shorthand.
|
19
|
+
* !t-search <terms>: Searches recent tweets containing your terms and returns the most recent three. You can search hash tags or do 'to:<handle>' to get the most recent tweets sent to that handle.
|
20
|
+
USAGE
|
21
|
+
|
22
|
+
def initialize(*args)
|
21
23
|
super
|
22
|
-
|
23
|
-
c.consumer_key = config[:access_keys][:consumer_key]
|
24
|
-
c.consumer_secret = config[:access_keys][:consumer_secret]
|
25
|
-
c.oauth_token = config[:access_keys][:oauth_token]
|
26
|
-
c.oauth_token_secret = config[:access_keys][:oauth_token_secret]
|
24
|
+
@client = twitter_client
|
27
25
|
end
|
28
|
-
|
29
|
-
|
26
|
+
|
30
27
|
match /tw (\w+)(?:-(\d+))?$/, method: :execute_tweet
|
31
28
|
match /(\w+)(?:-(\d+))?$/, method: :execute_tweet, prefix: /^@/
|
32
|
-
|
29
|
+
|
30
|
+
def execute_tweet(m, username, offset)
|
33
31
|
offset ||= 0
|
34
|
-
|
35
|
-
user =
|
36
|
-
|
37
|
-
return m.reply
|
38
|
-
return m.reply "
|
39
|
-
|
40
|
-
# Getting the user's 20 latest tweets if our offset is greater than 0:
|
32
|
+
|
33
|
+
user = @client.user(username)
|
34
|
+
|
35
|
+
return m.reply "This user's tweets are protected!" if user.protected?
|
36
|
+
return m.reply "This user hasn't tweeted yet!" if user.status.nil?
|
37
|
+
|
41
38
|
if offset.to_i > 0
|
42
|
-
tweets =
|
43
|
-
return m.reply
|
39
|
+
tweets = @client.user_timeline(user)
|
40
|
+
return m.reply "You can not backtrack more than #{tweets.count.pred} tweets before the current tweet!" if offset.to_i > tweets.count.pred
|
44
41
|
tweet = tweets[offset.to_i]
|
45
|
-
|
42
|
+
|
46
43
|
else
|
47
44
|
tweet = user.status
|
48
45
|
end
|
49
46
|
m.reply format_tweet(tweet)
|
50
47
|
rescue ::Twitter::Error::NotFound => e
|
51
|
-
m.reply
|
48
|
+
m.reply "#{username} doesn't exist."
|
52
49
|
rescue ::Twitter::Error => e
|
53
|
-
m.reply
|
50
|
+
m.reply "#{e.message.gsub(/user/i, username)}. (#{e.class})"
|
51
|
+
end
|
52
|
+
|
53
|
+
match /t-search (.+)/, method: :execute_search
|
54
|
+
|
55
|
+
def execute_search(m, term)
|
56
|
+
@client.search("#{term}", :result_type => "recent").take(3).each do |tweet|
|
57
|
+
m.reply format_tweet(tweet)
|
54
58
|
end
|
55
|
-
|
56
|
-
|
59
|
+
end
|
60
|
+
|
57
61
|
match /tw #(\d+)$/, method: :execute_id
|
58
62
|
match /#(\d+)$/, method: :execute_id, prefix: /^@/
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
63
|
+
|
64
|
+
def execute_id(m, id)
|
65
|
+
tweet = @client.status(id)
|
66
|
+
|
64
67
|
m.reply format_tweet(tweet)
|
65
68
|
rescue ::Twitter::Error::NotFound => e
|
66
|
-
m.reply
|
69
|
+
m.reply "#{id} doesn't exist."
|
67
70
|
rescue ::Twitter::Error => e
|
68
|
-
m.reply
|
69
|
-
|
70
|
-
|
71
|
+
m.reply "#{e.message.gsub(/user/i, id)}. (#{e.class})"
|
72
|
+
end
|
73
|
+
|
71
74
|
private
|
72
|
-
|
73
|
-
def format_tweet
|
75
|
+
|
76
|
+
def format_tweet(tweet)
|
74
77
|
# Username (and retweeted username if applicable)
|
75
78
|
head = []
|
76
79
|
head << tweet.user.screen_name
|
77
80
|
if tweet.retweet?
|
78
81
|
head << (tweet.retweeted_status.user.nil? ? "(RT)" : ("(RT from %s)" % tweet.retweeted_status.user.screen_name))
|
79
82
|
end
|
80
|
-
|
83
|
+
|
81
84
|
# Tweet tweet
|
82
85
|
body = expand_uris(CGI.unescapeHTML(!!tweet.retweet? ? tweet.retweeted_status.full_text : tweet.full_text).gsub("\n", " ").squeeze(" "), tweet.urls)
|
83
|
-
|
86
|
+
|
84
87
|
# Metadata
|
88
|
+
ttime = tweet.created_at
|
85
89
|
tail = []
|
86
|
-
tail <<
|
90
|
+
tail << ttime.ago.to_words
|
87
91
|
tail << "from #{tweet.place.full_name}" if !!tweet.place
|
88
|
-
tail << "via #{tweet.source.gsub( %r{</?[^>]+?>},
|
89
|
-
|
92
|
+
tail << "via #{tweet.source.gsub( %r{</?[^>]+?>}, "" )}"
|
93
|
+
|
90
94
|
# URLs for tweet and replied to:
|
91
95
|
urls = []
|
92
|
-
urls << "
|
96
|
+
urls << "https://twitter.com/#{tweet.user.screen_name}/status/#{tweet.id}"
|
93
97
|
urls << "in reply to #{format_reply_url(tweet.in_reply_to_screen_name, tweet.in_reply_to_status_id)}" if tweet.reply?
|
94
|
-
|
95
|
-
[Format(:bold, [*head,
|
98
|
+
|
99
|
+
[Format(:bold, [*head, "»"] * " "), body, ["(", tail * " · ", ")"].join, urls * " "].join(" ")
|
96
100
|
end
|
97
|
-
|
101
|
+
|
98
102
|
def format_reply_url(username, id)
|
99
|
-
"
|
103
|
+
"https://twitter.com/#{username}#{"/status/#{id}" if !!id}"
|
100
104
|
end
|
101
|
-
|
105
|
+
|
102
106
|
def expand_uris(t, uris)
|
103
|
-
uris.each_with_object(t) {|entity,tweet| tweet.gsub!(entity.url, entity.expanded_url)
|
107
|
+
uris.each_with_object(t) { |entity, tweet| tweet.gsub!(entity.url, entity.expanded_url) }
|
108
|
+
end
|
109
|
+
|
110
|
+
def twitter_client
|
111
|
+
::Twitter::REST::Client.new do |c|
|
112
|
+
c.consumer_key = config[:access_keys][:consumer_key]
|
113
|
+
c.consumer_secret = config[:access_keys][:consumer_secret]
|
114
|
+
c.access_token = config[:access_keys][:access_token]
|
115
|
+
c.access_token_secret = config[:access_keys][:access_token_secret]
|
116
|
+
end
|
104
117
|
end
|
105
|
-
|
106
118
|
end
|
107
119
|
end
|
108
120
|
end
|
121
|
+
|
122
|
+
|
metadata
CHANGED
@@ -1,94 +1,108 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cinch-twitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Mark
|
7
|
+
- Mark SeymourRichard Banks
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: twitter
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: cinch
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: oj
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: '2.0'
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - ~>
|
52
|
+
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '2.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: time-lord
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - ~>
|
59
|
+
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
61
|
+
version: '1.0'
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - ~>
|
66
|
+
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: '1.0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- - ~>
|
73
|
+
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '1.3'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- - ~>
|
80
|
+
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '1.3'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rake
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
description: A Twitter plugin for Cinch.
|
84
98
|
email:
|
85
|
-
- mark.seymour.ns@gmail.
|
99
|
+
- mark.seymour.ns@gmail.comnamaste@rawnet.net
|
86
100
|
executables: []
|
87
101
|
extensions: []
|
88
102
|
extra_rdoc_files: []
|
89
103
|
files:
|
90
|
-
- .document
|
91
|
-
- .gitignore
|
104
|
+
- ".document"
|
105
|
+
- ".gitignore"
|
92
106
|
- CHANGELOG.md
|
93
107
|
- Gemfile
|
94
108
|
- LICENSE.txt
|
@@ -107,18 +121,19 @@ require_paths:
|
|
107
121
|
- lib
|
108
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
123
|
requirements:
|
110
|
-
- -
|
124
|
+
- - ">="
|
111
125
|
- !ruby/object:Gem::Version
|
112
126
|
version: '0'
|
113
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
|
-
- -
|
129
|
+
- - ">="
|
116
130
|
- !ruby/object:Gem::Version
|
117
131
|
version: '0'
|
118
132
|
requirements: []
|
119
133
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.
|
134
|
+
rubygems_version: 2.2.1
|
121
135
|
signing_key:
|
122
136
|
specification_version: 4
|
123
137
|
summary: A Cinch plugin for accessing Twitter.
|
124
138
|
test_files: []
|
139
|
+
has_rdoc:
|