cinch-twitter 1.0.4 → 2.0.2

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: 0d69b378bedbf627bd39cdaf33ccb5fa07344375
4
- data.tar.gz: 80b3210196ce6d6e7122decbffcc2ada839e20b4
3
+ metadata.gz: 5c78167e8dea6ad52e63fde4d37a76883fb6dbc8
4
+ data.tar.gz: 108e50c4e34bca3660891fc63b09af43240c9b79
5
5
  SHA512:
6
- metadata.gz: 858ddf3cef0223bb6a139705b112edd644ead6f51b114dc3d60a8ad09eac09e720c9e9d3ab9a53e50a7b883c9c199bdf4bc42a5de4632b3f51235bdbcdaa8d55
7
- data.tar.gz: e07b9e4543de97dd496a3b50aeb395002b52efb97da0f0dc95de6bb0b279daa42b1a901c849503412c6bab310ffeeba0642ad91f65776a00198a44feb906b8b1
6
+ metadata.gz: cd97aa5ab04f56e044b00e0e52e063f4f23ede8851e7f6cc739144efc258bdcd23a05e0e0a11967804a79309548a13149f9e784e2f054bf4fa0ffa6674adda2e
7
+ data.tar.gz: 2429229aae5a5234f8271eeebfb01eb49fa691aa779873114f01bbce34346bfb9230f0dd77ea2957a65bc9a92037d88aed4d3daca402d5b6ae6959414dae18de
@@ -1,3 +1,6 @@
1
+ # Version 2.0.2
2
+ * Brings everything up to the latest version of the Twitter gem. Portions rewritten by @Namasteh.
3
+
1
4
  # Version 1.0.4
2
5
  * Fixes an issue where retweeted statuses' have no user associated with them
3
6
 
data/README.md CHANGED
@@ -47,8 +47,8 @@ Example:
47
47
  access_keys: {
48
48
  consumer_key: "XXXXXXX",
49
49
  consumer_secret: "XXXXXXX",
50
- oauth_token: "XXXXXXX",
51
- oauth_token_secret: "XXXXXXX"
50
+ access_token: "XXXXXXX",
51
+ access_token_secret: "XXXXXXX"
52
52
  }
53
53
  }
54
54
 
@@ -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', '~> 4.8'
24
- spec.add_dependency 'cinch', '~> 2.0'
25
- spec.add_dependency "oj", "~> 2.0.14"
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 "rake"
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
- TWITTER_URL_BASE = 'https://twitter.com/'
13
- ERROR_TPL = Cinch::Formatting.format(:bold, 'Uhoh! »') + ' %s'
14
-
15
- set(
16
- plugin_name: "Twitter",
17
- help: "Access Twitter from the comfort of your IRC client! Usage:\n* `!tw <username><-D>` - Gets the latest tweet of the specified user, or the tweet 'D' tweets back, between 1 and 20.\n* `!tw #[id]` - Gets the tweet at the specified ID\n* `?tw [username]` - Gets the specified user's Twitter profile\n* `?ts [term]` - Searches for three of the most recent tweets regarding the specified query\n\nShorthand: `@[username]<+D>`, @#[id]",
18
- required_options: [:access_keys])
19
-
20
- def initialize *args
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
- ::Twitter.configure do |c|
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
- end
29
-
26
+
30
27
  match /tw (\w+)(?:-(\d+))?$/, method: :execute_tweet
31
28
  match /(\w+)(?:-(\d+))?$/, method: :execute_tweet, prefix: /^@/
32
- def execute_tweet m, username, offset
29
+
30
+ def execute_tweet(m, username, offset)
33
31
  offset ||= 0
34
-
35
- user = ::Twitter.user(username)
36
-
37
- return m.reply ERROR_TPL % "#{user.screen_name}'s tweets are protected." if user.protected?
38
- return m.reply "#{user.screen_name} is lame because they haven't tweeted yet!" if user.status.nil?
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 = ::Twitter.user_timeline(user)
43
- return m.reply ERROR_TPL % "You cannot backtrack more than #{tweets.count.pred} tweets before the current tweet." if offset.to_i > tweets.count.pred
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
- # Otherwise, just get the latest tweet from the user object.
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 ERROR_TPL % "#{username} doesn't exist."
48
+ m.reply "#{username} doesn't exist."
52
49
  rescue ::Twitter::Error => e
53
- m.reply ERROR_TPL % "#{e.message.gsub(/user/i, username)}. (#{e.class})"
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
- def execute_id m, id
60
- tweet = ::Twitter.status(id)
61
-
62
- #return m.reply ERROR_TPL % "#{user.screen_name}'s tweets are protected." if user.protected?
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 ERROR_TPL % "#{id} doesn't exist."
69
+ m.reply "#{id} doesn't exist."
67
70
  rescue ::Twitter::Error => e
68
- m.reply ERROR_TPL % "#{e.message.gsub(/user/i, id)}. (#{e.class})"
69
- end
70
-
71
+ m.reply "#{e.message.gsub(/user/i, id)}. (#{e.class})"
72
+ end
73
+
71
74
  private
72
-
73
- def format_tweet 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 << tweet.created_at.strftime("at %b %-d %Y, %-l:%M %p %Z")
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 << "#{TWITTER_URL_BASE}#{tweet.user.screen_name}/status/#{tweet.id}"
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, '»'] * ' '), body, ['(', tail * ' · ', ')'].join, urls * ' '].join(' ')
98
+
99
+ [Format(:bold, [*head, "»"] * " "), body, ["(", tail * " · ", ")"].join, urls * " "].join(" ")
96
100
  end
97
-
101
+
98
102
  def format_reply_url(username, id)
99
- "#{TWITTER_URL_BASE}#{username}#{"/status/#{id}" if !!id}"
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
+
@@ -1,5 +1,5 @@
1
1
  module Cinch
2
2
  module Twitter
3
- VERSION = "1.0.4"
3
+ VERSION = "2.0.2"
4
4
  end
5
5
  end
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: 1.0.4
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
- - Mark Seymour
7
+ - Mark SeymourRichard Banks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-04 00:00:00.000000000 Z
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: '4.8'
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: '4.8'
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: oj
56
+ name: time-lord
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ~>
59
+ - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 2.0.14
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: 2.0.14
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.com
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.0.6
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: