tweetline 0.0.6 → 0.0.7

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.
Files changed (4) hide show
  1. data/bin/tl +5 -0
  2. data/lib/tweetline.rb +59 -8
  3. data/tweetline.gemspec +3 -1
  4. metadata +36 -4
data/bin/tl CHANGED
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
+ if File.exists?(File.join(File.expand_path('../..', __FILE__), '.git'))
4
+ lib_path = File.expand_path('../../lib', __FILE__)
5
+ $:.unshift(lib_path)
6
+ end
7
+
3
8
  require 'rubygems'
4
9
  require 'tweetline'
5
10
  require 'tweetline/cli'
data/lib/tweetline.rb CHANGED
@@ -1,9 +1,50 @@
1
1
  require 'thor'
2
2
  require 'twitter'
3
3
  require 'json'
4
+ require 'oauth'
5
+ require 'shortly'
4
6
 
5
7
  module Tweetline
8
+ CONSUMER_KEY = "cbaTxnPKFhGAngIYDqsNyg"
9
+ CONSUMER_SECRET = "FTrMluAB5pMPEZZRoGmOf2AH3md2KSqW6PNwD7TAzc"
10
+
6
11
  class << self
12
+
13
+ def authorize_user
14
+ api_url = "https://api.twitter.com"
15
+ consumer = OAuth::Consumer.new(Tweetline::CONSUMER_KEY, Tweetline::CONSUMER_SECRET, :site => api_url)
16
+ request_token = consumer.get_request_token
17
+
18
+ request = consumer.create_signed_request(:get, consumer.authorize_path, request_token, {:oauth_callback => 'oob'})
19
+ params = request['Authorization'].sub(/^OAuth\s+/, '').split(/,\s+/).map { |p|
20
+ k, v = p.split('=')
21
+ v =~ /"(.*?)"/
22
+ "#{k}=#{CGI::escape($1)}"
23
+ }.join('&')
24
+ auth_url = "#{api_url}#{request.path}?#{params}"
25
+
26
+ #bitly = Bitly.new("tweetline", "R_c27cfa45caf4f11cea7fb224056fb7f5")
27
+ bitly = Shortly::Clients::Bitly
28
+
29
+ puts
30
+ puts "Follow these steps to access your twitter account."
31
+ puts
32
+ puts "1) Navigate to the following url..."
33
+ puts
34
+ puts bitly.shorten(auth_url, {:apiKey => 'R_c27cfa45caf4f11cea7fb224056fb7f5', :login => 'tweetline'}).url
35
+ puts
36
+ puts "2) Allow Tweet-line access to your twitter account..."
37
+ puts
38
+ puts "3) Enter your pin number..."
39
+ puts
40
+ pin = gets
41
+ puts
42
+
43
+ access_token = request_token.get_access_token(:oauth_verifier => pin.chomp)
44
+ File.open(rc_file_name, "w") do |f|
45
+ f.write({:oauth_token => access_token.token, :oauth_token_secret => access_token.secret}.to_yaml)
46
+ end
47
+ end
7
48
 
8
49
  def cat_tweet(tweet_id, created_at, name, screen_name, text)
9
50
  Tweetline.put_tweet(tweet_id, created_at, name, screen_name, text)
@@ -17,14 +58,19 @@ module Tweetline
17
58
  end
18
59
 
19
60
  def configure_twitter
20
- Twitter.configure do |config|
21
- File.open(File.expand_path('~/.tweetlinerc')) do |yaml|
22
- options = YAML.load(yaml)
23
- config.consumer_key = options[:consumer_key]
24
- config.consumer_secret = options[:consumer_secret]
25
- config.oauth_token = options[:oauth_token]
26
- config.oauth_token_secret = options[:oauth_token_secret]
61
+ if File.exist?(rc_file_name)
62
+ Twitter.configure do |config|
63
+ File.open(rc_file_name) do |yaml|
64
+ options = YAML.load(yaml)
65
+ config.consumer_key = options[:consumer_key] || Tweetline::CONSUMER_KEY
66
+ config.consumer_secret = options[:consumer_secret] || Tweetline::CONSUMER_SECRET
67
+ config.oauth_token = options[:oauth_token]
68
+ config.oauth_token_secret = options[:oauth_token_secret]
69
+ end
27
70
  end
71
+ else
72
+ Tweetline.authorize_user
73
+ configure_twitter
28
74
  end
29
75
  end
30
76
 
@@ -77,6 +123,11 @@ module Tweetline
77
123
 
78
124
  return time.strftime(format)
79
125
  end
80
-
126
+
127
+ private
128
+
129
+ def rc_file_name
130
+ File.expand_path('~/.tweetlinerc')
131
+ end
81
132
  end
82
133
  end
data/tweetline.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.platform = Gem::Platform::RUBY
3
3
  s.name = "tweetline"
4
- s.version = "0.0.6"
4
+ s.version = "0.0.7"
5
5
  s.summary = "Command line client for Twitter."
6
6
  s.description = "Tweetline is a command line Twitter client for those who can't imagine a better interface to anything than the command line. Also, some folks may find it useful for automating Twitter interactions."
7
7
 
@@ -24,4 +24,6 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency('twitter', '~> 1.2.0')
25
25
  s.add_dependency('json', '~> 1.5.1')
26
26
  s.add_dependency('thor', '~> 0.14.6')
27
+ s.add_dependency('oauth', '~> 0.4.4')
28
+ s.add_dependency('shortly', '~> 0.3.2')
27
29
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweetline
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 6
10
- version: 0.0.6
9
+ - 7
10
+ version: 0.0.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Anthony Crumley
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-10 00:00:00 -05:00
18
+ date: 2011-04-23 00:00:00 -05:00
19
19
  default_executable: tl
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -66,6 +66,38 @@ dependencies:
66
66
  version: 0.14.6
67
67
  type: :runtime
68
68
  version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: oauth
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 7
78
+ segments:
79
+ - 0
80
+ - 4
81
+ - 4
82
+ version: 0.4.4
83
+ type: :runtime
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: shortly
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 23
94
+ segments:
95
+ - 0
96
+ - 3
97
+ - 2
98
+ version: 0.3.2
99
+ type: :runtime
100
+ version_requirements: *id005
69
101
  description: Tweetline is a command line Twitter client for those who can't imagine a better interface to anything than the command line. Also, some folks may find it useful for automating Twitter interactions.
70
102
  email: anthony.crumley@gmail.com
71
103
  executables: