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 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: