twuckoo 0.4.2 → 0.5.0
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 -3
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/twuckoo +1 -1
- data/lib/modules/one_line_from_file.rb +1 -2
- data/lib/modules/wikipedia_tfa.rb +1 -1
- data/lib/twuckoo.rb +1 -1
- data/lib/twuckoo/runner.rb +16 -21
- data/lib/twuckoo/twitter_oauth_module.rb +16 -0
- data/spec/one_line_from_file_spec.rb +1 -1
- data/spec/twuckoo/runner_spec.rb +37 -6
- data/spec/wikipedia_tfa_spec.rb +1 -1
- data/twuckoo.gemspec +8 -7
- metadata +28 -10
data/.gitignore
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
config/twuckoo.yml
|
1
2
|
lines.txt
|
2
3
|
used_lines*.txt
|
3
4
|
todos.txt
|
@@ -6,6 +7,5 @@ vendor/gems/ruby/**/gems
|
|
6
7
|
vendor/gems/ruby/**/specifications
|
7
8
|
vendor/gems/ruby/**/doc
|
8
9
|
vendor/gems/ruby/**/environment.rb
|
9
|
-
|
10
|
-
|
11
|
-
super_proba.rb
|
10
|
+
*_proba.rb
|
11
|
+
oauth/
|
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ begin
|
|
13
13
|
gemspec.authors = ["Balint Erdi"]
|
14
14
|
gemspec.add_development_dependency("mocha", ">= 0.9.5")
|
15
15
|
gemspec.add_development_dependency("rspec")
|
16
|
-
gemspec.add_dependency("
|
16
|
+
gemspec.add_dependency("twitter_oauth", "~> 0.4.3")
|
17
17
|
gemspec.add_dependency("hpricot", ">= 0.6.164")
|
18
18
|
gemspec.add_dependency("mail", ">= 1.6.0")
|
19
19
|
gemspec.add_dependency("tlsmail", ">= 0.0.1")
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/bin/twuckoo
CHANGED
data/lib/twuckoo.rb
CHANGED
data/lib/twuckoo/runner.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require "optparse"
|
2
2
|
require "ostruct"
|
3
|
-
require "twibot"
|
4
3
|
require "mail"
|
5
4
|
|
6
5
|
class TwuckooException < Exception
|
@@ -18,7 +17,6 @@ class Twuckoo::Runner
|
|
18
17
|
next_tweet = self.next
|
19
18
|
while (next_tweet and !tweet_limit_reached?) do
|
20
19
|
tweet(next_tweet)
|
21
|
-
inc_tweet_counter
|
22
20
|
wait if wait_between_tweets?
|
23
21
|
next_tweet = self.next
|
24
22
|
if next_tweet.nil?
|
@@ -29,22 +27,18 @@ class Twuckoo::Runner
|
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
32
|
-
|
33
|
-
|
30
|
+
attr_accessor :tweets_sent
|
31
|
+
|
32
|
+
def initialize(module_name, twitter_module=nil, args=[])
|
34
33
|
unless module_name.nil?
|
35
|
-
_module = get_module(module_name)
|
34
|
+
_module = self.class.get_module(module_name)
|
36
35
|
class_eval { include _module }
|
37
36
|
end
|
38
|
-
new(args)
|
39
|
-
end
|
40
|
-
|
41
|
-
attr_accessor :tweets_sent
|
42
|
-
|
43
|
-
def initialize(args=[])
|
44
37
|
@tweets_sent = 0
|
38
|
+
@twitter_module = twitter_module.nil? ? Twuckoo::TwitterOauth : twitter_module
|
45
39
|
@options = OpenStruct.new
|
46
40
|
parse_options!(args)
|
47
|
-
|
41
|
+
setup_for_module
|
48
42
|
end
|
49
43
|
|
50
44
|
def parse_options!(args)
|
@@ -60,11 +54,6 @@ class Twuckoo::Runner
|
|
60
54
|
end
|
61
55
|
end
|
62
56
|
|
63
|
-
if args.length.zero?
|
64
|
-
puts opts.banner
|
65
|
-
exit
|
66
|
-
end
|
67
|
-
|
68
57
|
# opts.on_tail("--version", "Show version") do
|
69
58
|
# File.read(...)
|
70
59
|
# exit
|
@@ -92,8 +81,14 @@ class Twuckoo::Runner
|
|
92
81
|
|
93
82
|
def tweet(message)
|
94
83
|
unless message.nil? or message.empty?
|
95
|
-
|
96
|
-
|
84
|
+
begin
|
85
|
+
send_tweet(message, config)
|
86
|
+
rescue @twitter_module.exception
|
87
|
+
return message
|
88
|
+
else
|
89
|
+
inc_tweet_counter
|
90
|
+
store(message)
|
91
|
+
end
|
97
92
|
end
|
98
93
|
message
|
99
94
|
end
|
@@ -138,8 +133,8 @@ class Twuckoo::Runner
|
|
138
133
|
end
|
139
134
|
end
|
140
135
|
|
141
|
-
def send_tweet(message)
|
142
|
-
|
136
|
+
def send_tweet(message, options)
|
137
|
+
@twitter_module._tweet(message, options)
|
143
138
|
end
|
144
139
|
|
145
140
|
def inc_tweet_counter
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'twitter_oauth/client'
|
2
|
+
require 'twitter_oauth'
|
3
|
+
|
4
|
+
module Twuckoo::TwitterOauth
|
5
|
+
|
6
|
+
def self._tweet(message, options)
|
7
|
+
@client ||= TwitterOAuth::Client.new(
|
8
|
+
:consumer_key => options[:consumer_key],
|
9
|
+
:consumer_secret => options[:consumer_secret],
|
10
|
+
:token => options[:oauth_token],
|
11
|
+
:secret => options[:oauth_token_secret]
|
12
|
+
)
|
13
|
+
@client.update(message)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
2
2
|
|
3
3
|
describe "A cuckoo twitterer with one line from a file" do
|
4
4
|
before do
|
5
|
-
@twuckoo = Twuckoo::Runner.
|
5
|
+
@twuckoo = Twuckoo::Runner.new("file")
|
6
6
|
# just so that no files will be written
|
7
7
|
@twuckoo.stubs(:store).returns(nil)
|
8
8
|
# and the actual text tweets are not tweeted (twittered?)
|
data/spec/twuckoo/runner_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
|
2
2
|
|
3
3
|
describe Twuckoo::Runner do
|
4
4
|
before do
|
5
|
-
@twuckoo = Twuckoo::Runner.
|
5
|
+
@twuckoo = Twuckoo::Runner.new("file")
|
6
6
|
# actual text tweets should not be tweeted (twittered?)
|
7
7
|
@twuckoo.stubs(:send_tweet).returns(true)
|
8
8
|
end
|
@@ -43,22 +43,22 @@ describe Twuckoo::Runner do
|
|
43
43
|
@twuckoo.setup do |config|
|
44
44
|
config[:tweet_limit] = 2
|
45
45
|
end
|
46
|
-
@twuckoo.expects(:
|
46
|
+
@twuckoo.expects(:send_tweet).times(2).returns("tweet me this")
|
47
47
|
@twuckoo.run
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should receive the module to use as the last parameter" do
|
51
|
-
runner = Twuckoo::Runner.new(
|
51
|
+
runner = Twuckoo::Runner.new('file')
|
52
52
|
runner.should respond_to(:reset)
|
53
53
|
end
|
54
54
|
|
55
55
|
it "name can be given through the -n option" do
|
56
|
-
runner = Twuckoo::Runner.new(%w[-n pragthinklearn
|
56
|
+
runner = Twuckoo::Runner.new('file', nil, %w[-n pragthinklearn])
|
57
57
|
runner.name.should == "pragthinklearn"
|
58
58
|
end
|
59
59
|
|
60
|
-
it "if no is given, the directory name is used" do
|
61
|
-
runner = Twuckoo::Runner.new(
|
60
|
+
it "if no name is given, the directory name is used" do
|
61
|
+
runner = Twuckoo::Runner.new('file')
|
62
62
|
runner.name.should == "twuckoo"
|
63
63
|
end
|
64
64
|
|
@@ -84,4 +84,35 @@ describe Twuckoo::Runner do
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
+
it "tries tweeting again if Twitter is not available" do
|
88
|
+
module ShakyTwitter
|
89
|
+
i = 0
|
90
|
+
define_method :_tweet do |message, options|
|
91
|
+
if i == 0
|
92
|
+
i = i + 1
|
93
|
+
raise ShakyTwitterException, "Twitter is down. Try again later"
|
94
|
+
else
|
95
|
+
i = i + 1
|
96
|
+
message
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
extend self
|
101
|
+
|
102
|
+
class ShakyTwitterException < Exception
|
103
|
+
end
|
104
|
+
def self.exception
|
105
|
+
ShakyTwitterException
|
106
|
+
end
|
107
|
+
end
|
108
|
+
twuckoo = Twuckoo::Runner.new("file", ShakyTwitter)
|
109
|
+
twuckoo.stubs(:send_email).returns(true)
|
110
|
+
twuckoo.setup do |config|
|
111
|
+
config[:tweet_limit] = 2
|
112
|
+
config[:time_to_sleep] = "0"
|
113
|
+
end
|
114
|
+
twuckoo.stubs(:next).returns('Twuckoo 2.0 is coming soonish')
|
115
|
+
twuckoo.run
|
116
|
+
twuckoo.tweets_sent.should == 2
|
117
|
+
end
|
87
118
|
end
|
data/spec/wikipedia_tfa_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
2
2
|
|
3
3
|
describe "A cuckoo twitterer for wikipedia featured article" do
|
4
4
|
before do
|
5
|
-
@twuckoo = Twuckoo::Runner.
|
5
|
+
@twuckoo = Twuckoo::Runner.new("wikipedia_tfa")
|
6
6
|
@twuckoo.setup do |config|
|
7
7
|
config[:time_to_sleep] = "0"
|
8
8
|
end
|
data/twuckoo.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{twuckoo}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Balint Erdi"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-09-12}
|
13
13
|
s.default_executable = %q{twuckoo}
|
14
14
|
s.description = %q{ A simple yet elegant solution to tweet a message regularly from a file (or from a webpage, a database, etc.)
|
15
15
|
}
|
@@ -35,6 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/twuckoo.rb",
|
36
36
|
"lib/twuckoo/config.rb",
|
37
37
|
"lib/twuckoo/runner.rb",
|
38
|
+
"lib/twuckoo/twitter_oauth_module.rb",
|
38
39
|
"spec/duration_string_spec.rb",
|
39
40
|
"spec/one_line_from_file_spec.rb",
|
40
41
|
"spec/spec.opts",
|
@@ -48,7 +49,7 @@ Gem::Specification.new do |s|
|
|
48
49
|
s.homepage = %q{http://github.com/balinterdi/twuckoo}
|
49
50
|
s.rdoc_options = ["--charset=UTF-8"]
|
50
51
|
s.require_paths = ["lib"]
|
51
|
-
s.rubygems_version = %q{1.3.
|
52
|
+
s.rubygems_version = %q{1.3.7}
|
52
53
|
s.summary = %q{Need to tweet periodically in an automated fashion? Then Twuckoo is for you!}
|
53
54
|
s.test_files = [
|
54
55
|
"spec/duration_string_spec.rb",
|
@@ -63,17 +64,17 @@ Gem::Specification.new do |s|
|
|
63
64
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
64
65
|
s.specification_version = 3
|
65
66
|
|
66
|
-
if Gem::Version.new(Gem::
|
67
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
67
68
|
s.add_development_dependency(%q<mocha>, [">= 0.9.5"])
|
68
69
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
69
|
-
s.add_runtime_dependency(%q<
|
70
|
+
s.add_runtime_dependency(%q<twitter_oauth>, ["~> 0.4.3"])
|
70
71
|
s.add_runtime_dependency(%q<hpricot>, [">= 0.6.164"])
|
71
72
|
s.add_runtime_dependency(%q<mail>, [">= 1.6.0"])
|
72
73
|
s.add_runtime_dependency(%q<tlsmail>, [">= 0.0.1"])
|
73
74
|
else
|
74
75
|
s.add_dependency(%q<mocha>, [">= 0.9.5"])
|
75
76
|
s.add_dependency(%q<rspec>, [">= 0"])
|
76
|
-
s.add_dependency(%q<
|
77
|
+
s.add_dependency(%q<twitter_oauth>, ["~> 0.4.3"])
|
77
78
|
s.add_dependency(%q<hpricot>, [">= 0.6.164"])
|
78
79
|
s.add_dependency(%q<mail>, [">= 1.6.0"])
|
79
80
|
s.add_dependency(%q<tlsmail>, [">= 0.0.1"])
|
@@ -81,7 +82,7 @@ Gem::Specification.new do |s|
|
|
81
82
|
else
|
82
83
|
s.add_dependency(%q<mocha>, [">= 0.9.5"])
|
83
84
|
s.add_dependency(%q<rspec>, [">= 0"])
|
84
|
-
s.add_dependency(%q<
|
85
|
+
s.add_dependency(%q<twitter_oauth>, ["~> 0.4.3"])
|
85
86
|
s.add_dependency(%q<hpricot>, [">= 0.6.164"])
|
86
87
|
s.add_dependency(%q<mail>, [">= 1.6.0"])
|
87
88
|
s.add_dependency(%q<tlsmail>, [">= 0.0.1"])
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twuckoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 11
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Balint Erdi
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-09-12 00:00:00 +02:00
|
18
19
|
default_executable: twuckoo
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: mocha
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 49
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
- 9
|
@@ -35,35 +38,41 @@ dependencies:
|
|
35
38
|
name: rspec
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
41
46
|
segments:
|
42
47
|
- 0
|
43
48
|
version: "0"
|
44
49
|
type: :development
|
45
50
|
version_requirements: *id002
|
46
51
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
52
|
+
name: twitter_oauth
|
48
53
|
prerelease: false
|
49
54
|
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
50
56
|
requirements:
|
51
|
-
- -
|
57
|
+
- - ~>
|
52
58
|
- !ruby/object:Gem::Version
|
59
|
+
hash: 9
|
53
60
|
segments:
|
54
61
|
- 0
|
55
|
-
-
|
56
|
-
-
|
57
|
-
version: 0.
|
62
|
+
- 4
|
63
|
+
- 3
|
64
|
+
version: 0.4.3
|
58
65
|
type: :runtime
|
59
66
|
version_requirements: *id003
|
60
67
|
- !ruby/object:Gem::Dependency
|
61
68
|
name: hpricot
|
62
69
|
prerelease: false
|
63
70
|
requirement: &id004 !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
64
72
|
requirements:
|
65
73
|
- - ">="
|
66
74
|
- !ruby/object:Gem::Version
|
75
|
+
hash: 335
|
67
76
|
segments:
|
68
77
|
- 0
|
69
78
|
- 6
|
@@ -75,9 +84,11 @@ dependencies:
|
|
75
84
|
name: mail
|
76
85
|
prerelease: false
|
77
86
|
requirement: &id005 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
78
88
|
requirements:
|
79
89
|
- - ">="
|
80
90
|
- !ruby/object:Gem::Version
|
91
|
+
hash: 15
|
81
92
|
segments:
|
82
93
|
- 1
|
83
94
|
- 6
|
@@ -89,9 +100,11 @@ dependencies:
|
|
89
100
|
name: tlsmail
|
90
101
|
prerelease: false
|
91
102
|
requirement: &id006 !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
92
104
|
requirements:
|
93
105
|
- - ">="
|
94
106
|
- !ruby/object:Gem::Version
|
107
|
+
hash: 29
|
95
108
|
segments:
|
96
109
|
- 0
|
97
110
|
- 0
|
@@ -124,6 +137,7 @@ files:
|
|
124
137
|
- lib/twuckoo.rb
|
125
138
|
- lib/twuckoo/config.rb
|
126
139
|
- lib/twuckoo/runner.rb
|
140
|
+
- lib/twuckoo/twitter_oauth_module.rb
|
127
141
|
- spec/duration_string_spec.rb
|
128
142
|
- spec/one_line_from_file_spec.rb
|
129
143
|
- spec/spec.opts
|
@@ -143,23 +157,27 @@ rdoc_options:
|
|
143
157
|
require_paths:
|
144
158
|
- lib
|
145
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
160
|
+
none: false
|
146
161
|
requirements:
|
147
162
|
- - ">="
|
148
163
|
- !ruby/object:Gem::Version
|
164
|
+
hash: 3
|
149
165
|
segments:
|
150
166
|
- 0
|
151
167
|
version: "0"
|
152
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
153
170
|
requirements:
|
154
171
|
- - ">="
|
155
172
|
- !ruby/object:Gem::Version
|
173
|
+
hash: 3
|
156
174
|
segments:
|
157
175
|
- 0
|
158
176
|
version: "0"
|
159
177
|
requirements: []
|
160
178
|
|
161
179
|
rubyforge_project:
|
162
|
-
rubygems_version: 1.3.
|
180
|
+
rubygems_version: 1.3.7
|
163
181
|
signing_key:
|
164
182
|
specification_version: 3
|
165
183
|
summary: Need to tweet periodically in an automated fashion? Then Twuckoo is for you!
|