console_tweet 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,7 +7,7 @@ module ConsoleTweet
7
7
  require 'yaml'
8
8
 
9
9
  # The allowed API methods
10
- AllowedMethods = [:setup, :help, :status, :tweet]
10
+ AllowedMethods = [:setup, :help, :status, :tweet, :timeline]
11
11
 
12
12
  # Twitter API details
13
13
  ConsumerKey = 'MvVdCyl6xCVtEUVdcp4rw'
@@ -37,7 +37,7 @@ module ConsoleTweet
37
37
  end
38
38
  end
39
39
  # get the first command as the method, and the rest of the commands as args
40
- method = @commands.empty? ? :help : @commands[0].to_sym
40
+ method = @commands.empty? ? :timeline : @commands[0].to_sym
41
41
  return method_missing(method) unless AllowedMethods.include?(method)
42
42
  self.send(method, @commands[1..@commands.size])
43
43
  end
@@ -56,7 +56,30 @@ module ConsoleTweet
56
56
  false # Didn't get an access token
57
57
  end
58
58
  end
59
-
59
+
60
+ # Display the user's timeline
61
+ def timeline(*args)
62
+ load_default_token
63
+ return failtown("Unauthorized, re-run setup!") unless @client && @client.authorized?
64
+
65
+ # Only send since_id to @client if it's not nil
66
+ home_timeline = since_id ? @client.home_timeline(:since_id => since_id) : @client.home_timeline
67
+
68
+ if home_timeline.any?
69
+ # We want the latest tweets at the bottom on a CLI
70
+ home_timeline.reverse!
71
+
72
+ # Print each tweet, with user name on next line
73
+ home_timeline.each do |tweet|
74
+ puts "#{tweet['text']}\n#{NameColor}@#{tweet['user']['screen_name']} (#{tweet['user']['name']})#{DefaultColor}\n\n"
75
+ end
76
+
77
+ # Save the last id as since_id
78
+ self.since_id = home_timeline.last['id']
79
+ end
80
+
81
+ end
82
+
60
83
  # Send a tweet for the user
61
84
  def tweet(*args)
62
85
  load_default_token
@@ -71,7 +94,7 @@ module ConsoleTweet
71
94
  end
72
95
  return failtown("Empty Tweet") if tweet_text.empty?
73
96
  return failtown("Tweet is too long!") if tweet_text.size > 140
74
- return failtown("Unauthorized, re-run setup!") unless @client.authorized?
97
+ return failtown("Unauthorized, re-run setup!") unless @client && @client.authorized?
75
98
  # actually post it
76
99
  @client.update(tweet_text)
77
100
  puts "Tweet Posted!"
@@ -80,7 +103,7 @@ module ConsoleTweet
80
103
  # Get the user's most recent status
81
104
  def status(*args)
82
105
  load_default_token
83
- return failtown("Unauthorized, re-run setup!") unless @client.authorized?
106
+ return failtown("Unauthorized, re-run setup!") unless @client && @client.authorized?
84
107
  user = @client.info
85
108
  status = user['status']
86
109
  puts "#{user['name']} (at #{status['created_at']}) #{status['text']}"
@@ -103,6 +126,7 @@ module ConsoleTweet
103
126
  puts "#{NameColor}console-tweet#{DefaultColor} by John Crepezzi <john.crepezzi@gmail.com>"
104
127
  puts 'http://github.com/seejohnrun/console-tweet'
105
128
  puts
129
+ puts "#{CommandColor}twitter#{DefaultColor} View your timeline, since last view"
106
130
  puts "#{CommandColor}twitter setup#{DefaultColor} Setup your account"
107
131
  puts "#{CommandColor}twitter status#{DefaultColor} Get your most recent status"
108
132
  puts "#{CommandColor}twitter tweet \"Hello World\"#{DefaultColor} Send out a tweet"
@@ -123,17 +147,21 @@ module ConsoleTweet
123
147
 
124
148
  # Load the default token from the ~/.twitter file
125
149
  def load_default_token
126
- tokens = load_tokens
127
- default_hash = tokens[:default]
128
- @client = TwitterOAuth::Client.new(:consumer_key => ConsumerKey, :consumer_secret => ConsumerSecret, :token => default_hash[:token], :secret => default_hash[:secret])
150
+ if tokens = load_tokens
151
+ default_hash = tokens[:default]
152
+ @client = TwitterOAuth::Client.new(:consumer_key => ConsumerKey, :consumer_secret => ConsumerSecret, :token => default_hash[:token], :secret => default_hash[:secret])
153
+ default_hash
154
+ end
129
155
  end
130
156
 
131
157
  # Load tokens from the ~/.twitter file
132
158
  def load_tokens
133
- f = File.open(TOKEN_PATH, 'r')
134
- tokens = YAML::load(f)
135
- f.close
136
- tokens
159
+ if File.exists?(TOKEN_PATH)
160
+ f = File.open(TOKEN_PATH, 'r')
161
+ tokens = YAML::load(f)
162
+ f.close
163
+ tokens
164
+ end
137
165
  end
138
166
 
139
167
  # Save the set of tokens to the ~/.twitter file
@@ -147,6 +175,18 @@ module ConsoleTweet
147
175
  def self.get_input
148
176
  STDIN.gets.strip.chomp
149
177
  end
178
+
179
+ # Getter for since_id in ~/.twitter file
180
+ def since_id
181
+ load_default_token[:since_id]
182
+ end
183
+
184
+ # Setter for since_id in ~/.twitter file
185
+ def since_id=(id)
186
+ tokens = load_default_token
187
+ tokens[:since_id] = id
188
+ save_tokens(:default => tokens)
189
+ end
150
190
 
151
191
  end
152
192
 
@@ -1,5 +1,5 @@
1
1
  module ConsoleTweet
2
2
 
3
- VERSION = '0.0.6'
3
+ VERSION = '0.1.0'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_tweet
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 6
10
- version: 0.0.6
4
+ prerelease:
5
+ version: 0.1.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - John Crepezzi
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-01-22 00:00:00 -05:00
13
+ date: 2011-05-20 00:00:00 -04:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,9 +21,6 @@ dependencies:
26
21
  requirements:
27
22
  - - ">="
28
23
  - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
24
  version: "0"
33
25
  type: :development
34
26
  version_requirements: *id001
@@ -40,9 +32,6 @@ dependencies:
40
32
  requirements:
41
33
  - - ">="
42
34
  - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
35
  version: "0"
47
36
  type: :runtime
48
37
  version_requirements: *id002
@@ -73,23 +62,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
62
  requirements:
74
63
  - - ">="
75
64
  - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
65
  version: "0"
80
66
  required_rubygems_version: !ruby/object:Gem::Requirement
81
67
  none: false
82
68
  requirements:
83
69
  - - ">="
84
70
  - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
71
  version: "0"
89
72
  requirements: []
90
73
 
91
74
  rubyforge_project: console_tweet
92
- rubygems_version: 1.3.7
75
+ rubygems_version: 1.6.2
93
76
  signing_key:
94
77
  specification_version: 3
95
78
  summary: CLI Twitter Client