termitter 2010.11.16
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.
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -0
- data/bin/termitter +20 -0
- data/src/termitter.rb +67 -0
- data/termitter.gemspec +29 -0
- metadata +129 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
data/bin/termitter
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
source_dir = File.join(File.dirname(__FILE__), "../src")
|
3
|
+
$LOAD_PATH.unshift source_dir
|
4
|
+
|
5
|
+
require 'termitter'
|
6
|
+
|
7
|
+
usage = <<HELP
|
8
|
+
USAGE:
|
9
|
+
$ termitter
|
10
|
+
|
11
|
+
Termitter is a client for twitter which does one thing - it prints the home
|
12
|
+
timeline to the standart output of the terminal.
|
13
|
+
|
14
|
+
HELP
|
15
|
+
|
16
|
+
consumer_key = 'woceBDOMe6MWD8OT5Z3yA'
|
17
|
+
consumer_secret ='ZcSDt7eIhqHQvakMr6IevCq4L1P7LJJqfn6f8qPI1Q'
|
18
|
+
|
19
|
+
app = Termitter.new(consumer_key, consumer_secret)
|
20
|
+
app.run
|
data/src/termitter.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'twitter_oauth'
|
3
|
+
|
4
|
+
class Termitter
|
5
|
+
VERSION = "2010.11.16"
|
6
|
+
|
7
|
+
def initialize(consumer_key, consumer_secret)
|
8
|
+
@consumer_key = consumer_key
|
9
|
+
@consumer_secret = consumer_secret
|
10
|
+
@auth_file = File.join(ENV['HOME'], ".termitter.oauth")
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
client = authenticate
|
15
|
+
timeline = client.home_timeline.map do |t|
|
16
|
+
"#{t["user"]["screen_name"]}: #{t["text"].gsub("\n", " ")}"
|
17
|
+
end
|
18
|
+
|
19
|
+
puts timeline.join("\n")
|
20
|
+
rescue SocketError
|
21
|
+
$stderr.puts "Could not connect to Twitter"
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
|
25
|
+
def authenticate
|
26
|
+
access_token, access_secret = File.read(@auth_file).split("\n").map{|l| l.strip}
|
27
|
+
client = TwitterOAuth::Client.new(
|
28
|
+
:consumer_key => @consumer_key,
|
29
|
+
:consumer_secret => @consumer_secret,
|
30
|
+
:token => access_token,
|
31
|
+
:secret => access_secret
|
32
|
+
)
|
33
|
+
client
|
34
|
+
rescue
|
35
|
+
authorize
|
36
|
+
end
|
37
|
+
|
38
|
+
def authorize
|
39
|
+
client = TwitterOAuth::Client.new(
|
40
|
+
:consumer_key => @consumer_key,
|
41
|
+
:consumer_secret => @consumer_secret
|
42
|
+
)
|
43
|
+
request_token = client.request_token()
|
44
|
+
puts "Please follow the URL below to authorize the application"
|
45
|
+
puts request_token.authorize_url
|
46
|
+
puts "Please enter the PIN below and press enter"
|
47
|
+
pin = STDIN.readline.chomp
|
48
|
+
|
49
|
+
access_token = client.authorize(
|
50
|
+
request_token.token,
|
51
|
+
request_token.secret,
|
52
|
+
{:oauth_verifier => pin}
|
53
|
+
)
|
54
|
+
|
55
|
+
puts "Verification complete!"
|
56
|
+
|
57
|
+
File.open(@auth_file, "w") {|f| f.write("#{access_token.token}\n#{access_token.secret}") }
|
58
|
+
|
59
|
+
client
|
60
|
+
rescue SocketError
|
61
|
+
$stderr.puts "Could not connect to twitter."
|
62
|
+
exit
|
63
|
+
rescue
|
64
|
+
$stderr.puts "Verification failed."
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
end
|
data/termitter.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../src", __FILE__)
|
3
|
+
require "termitter"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "termitter"
|
7
|
+
s.version = Termitter::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Pavlo Kerestey"]
|
10
|
+
s.email = ["pavlo@kerestey.net"]
|
11
|
+
s.homepage = "http://rubygems.org/gems/termitter"
|
12
|
+
s.summary = %q{A simple terminal twitter client which prints the home timeline.}
|
13
|
+
s.description = %q{A terminal read-only twitter client. It prints the tweets along with the nicknames to the terminal output.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "termitter"
|
16
|
+
|
17
|
+
s.add_dependency "twitter_oauth"
|
18
|
+
|
19
|
+
s.add_development_dependency "bundler", "~> 1.0"
|
20
|
+
s.add_development_dependency "rspec"
|
21
|
+
s.add_development_dependency "rake"
|
22
|
+
|
23
|
+
s.files = `git ls-files`.split("\n")
|
24
|
+
s.test_files = `git ls-files -- {tests,spec,features}/*`.split("\n")
|
25
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
+
s.require_paths = ["src"]
|
27
|
+
|
28
|
+
s.has_rdoc = false
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: termitter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 16067
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 2010
|
8
|
+
- 11
|
9
|
+
- 16
|
10
|
+
version: 2010.11.16
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Pavlo Kerestey
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-11-16 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: twitter_oauth
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: bundler
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 15
|
44
|
+
segments:
|
45
|
+
- 1
|
46
|
+
- 0
|
47
|
+
version: "1.0"
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rspec
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
type: :development
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: rake
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
type: :development
|
77
|
+
version_requirements: *id004
|
78
|
+
description: A terminal read-only twitter client. It prints the tweets along with the nicknames to the terminal output.
|
79
|
+
email:
|
80
|
+
- pavlo@kerestey.net
|
81
|
+
executables:
|
82
|
+
- termitter
|
83
|
+
extensions: []
|
84
|
+
|
85
|
+
extra_rdoc_files: []
|
86
|
+
|
87
|
+
files:
|
88
|
+
- .gitignore
|
89
|
+
- Gemfile
|
90
|
+
- Rakefile
|
91
|
+
- bin/termitter
|
92
|
+
- src/termitter.rb
|
93
|
+
- termitter.gemspec
|
94
|
+
has_rdoc: true
|
95
|
+
homepage: http://rubygems.org/gems/termitter
|
96
|
+
licenses: []
|
97
|
+
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
|
101
|
+
require_paths:
|
102
|
+
- src
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
hash: 3
|
109
|
+
segments:
|
110
|
+
- 0
|
111
|
+
version: "0"
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
hash: 3
|
118
|
+
segments:
|
119
|
+
- 0
|
120
|
+
version: "0"
|
121
|
+
requirements: []
|
122
|
+
|
123
|
+
rubyforge_project: termitter
|
124
|
+
rubygems_version: 1.3.7
|
125
|
+
signing_key:
|
126
|
+
specification_version: 3
|
127
|
+
summary: A simple terminal twitter client which prints the home timeline.
|
128
|
+
test_files: []
|
129
|
+
|