twibot 0.1.5 → 0.1.6

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/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.1.6 / 2009-04-13
2
+
3
+ * Fixed configure block not actually working for username and password (Bodaniel Jeanes)
4
+ * Minor updates in tests
5
+
1
6
  == 0.1.5 / 2009-04-12
2
7
 
3
8
  * Added support for regular expression routes
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ task :default => 'test:run'
21
21
  PROJ.name = 'twibot'
22
22
  PROJ.authors = 'Christian Johansen'
23
23
  PROJ.email = 'christian@cjohansen.no'
24
- PROJ.url = 'http://github.com/cjohansen/twibot/'
24
+ PROJ.url = 'http://github.com/bjeanes/twibot/'
25
25
  PROJ.version = Twibot::VERSION
26
26
  PROJ.rubyforge.name = 'twibot'
27
27
  PROJ.readme_file = 'Readme.rdoc'
data/Readme.rdoc CHANGED
@@ -148,6 +148,7 @@ reaches max_interval, where it will stay until Twibot finds anything.
148
148
  * Ben Vandgrift (Twitter downtime error handling) - http://neovore.com/
149
149
  * Jens Ohlig (warnings)
150
150
  * Wilco van Duinkerken (bug fixes) - http://www.sparkboxx.com/
151
+ * Bodaniel Jeanes (configure block fix) - http://bjeanes.github.com/
151
152
 
152
153
  == License
153
154
 
data/lib/twibot/bot.rb CHANGED
@@ -15,21 +15,26 @@ module Twibot
15
15
  @prompt = prompt
16
16
  @conf = nil
17
17
  @config = options || Twibot::Config.default << Twibot::FileConfig.new << Twibot::CliConfig.new
18
- @twitter = Twitter::Client.new :login => config[:login], :password => config[:password]
19
18
  @log = nil
20
19
  @abort = false
20
+ rescue Exception => krash
21
+ raise SystemExit.new(krash.message)
22
+ end
21
23
 
22
- @processed = {
24
+ def prompt?
25
+ @prompt
26
+ end
27
+
28
+ def processed
29
+ @processed ||= {
23
30
  :message => nil,
24
31
  :reply => nil,
25
32
  :tweet => nil
26
33
  }
27
- rescue Exception => krash
28
- raise SystemExit.new(krash.message)
29
34
  end
30
35
 
31
- def prompt?
32
- @prompt
36
+ def twitter
37
+ @twitter ||= Twitter::Client.new :login => config[:login], :password => config[:password]
33
38
  end
34
39
 
35
40
  #
@@ -44,21 +49,21 @@ module Twibot
44
49
  end
45
50
 
46
51
  # Make sure we don't process messages and tweets received prior to bot launch
47
- messages = @twitter.messages(:received, { :count => 1 })
48
- @processed[:message] = messages.first.id if messages.length > 0
52
+ messages = twitter.messages(:received, { :count => 1 })
53
+ processed[:message] = messages.first.id if messages.length > 0
49
54
 
50
55
  handle_tweets = !@handlers.nil? && @handlers[:tweet].length + @handlers[:reply].length > 0
51
56
  tweets = []
52
57
 
53
58
  begin
54
- tweets = handle_tweets ? @twitter.timeline_for(@config.to_hash[:timeline_for], { :count => 1 }) : []
59
+ tweets = handle_tweets ? twitter.timeline_for(config[:timeline_for], { :count => 1 }) : []
55
60
  rescue Twitter::RESTError => e
56
61
  log.error("Failed to connect to Twitter. It's likely down for a bit:")
57
62
  log.error(e.to_s)
58
63
  end
59
64
 
60
- @processed[:tweet] = tweets.first.id if tweets.length > 0
61
- @processed[:reply] = tweets.first.id if tweets.length > 0
65
+ processed[:tweet] = tweets.first.id if tweets.length > 0
66
+ processed[:reply] = tweets.first.id if tweets.length > 0
62
67
 
63
68
  poll
64
69
  end
@@ -91,9 +96,9 @@ module Twibot
91
96
  type = :message
92
97
  return false unless handlers[type].length > 0
93
98
  options = {}
94
- options[:since_id] = @processed[type] if @processed[type]
99
+ options[:since_id] = processed[type] if processed[type]
95
100
  begin
96
- dispatch_messages(type, @twitter.messages(:received, options), %w{message messages})
101
+ dispatch_messages(type, twitter.messages(:received, options), %w{message messages})
97
102
  rescue Twitter::RESTError => e
98
103
  log.error("Failed to connect to Twitter. It's likely down for a bit:")
99
104
  log.error(e.to_s)
@@ -108,9 +113,9 @@ module Twibot
108
113
  type = :tweet
109
114
  return false unless handlers[type].length > 0
110
115
  options = {}
111
- options[:since_id] = @processed[type] if @processed[type]
116
+ options[:since_id] = processed[type] if processed[type]
112
117
  begin
113
- dispatch_messages(type, @twitter.timeline_for(@config.to_hash[:timeline_for], options), %w{tweet tweets})
118
+ dispatch_messages(type, twitter.timeline_for(config.to_hash[:timeline_for] || :public, options), %w{tweet tweets})
114
119
  rescue Twitter::RESTError => e
115
120
  log.error("Failed to connect to Twitter. It's likely down for a bit:")
116
121
  log.error(e.to_s)
@@ -125,9 +130,9 @@ module Twibot
125
130
  type = :reply
126
131
  return false unless handlers[type].length > 0
127
132
  options = {}
128
- options[:since_id] = @processed[type] if @processed[type]
133
+ options[:since_id] = processed[type] if processed[type]
129
134
  begin
130
- dispatch_messages(type, @twitter.status(:replies, options), %w{reply replies})
135
+ dispatch_messages(type, twitter.status(:replies, options), %w{reply replies})
131
136
  rescue Twitter::RESTError => e
132
137
  log.error("Failed to connect to Twitter. It's likely down for a bit:")
133
138
  log.error(e.to_s)
@@ -142,7 +147,7 @@ module Twibot
142
147
  def dispatch_messages(type, messages, labels)
143
148
  messages.each { |message| dispatch(type, message) }
144
149
  # Avoid picking up messages over again
145
- @processed[type] = messages.first.id if messages.length > 0
150
+ processed[type] = messages.first.id if messages.length > 0
146
151
 
147
152
  num = messages.length
148
153
  log.info "Received #{num} #{num == 1 ? labels[0] : labels[1]}"
@@ -166,6 +171,7 @@ module Twibot
166
171
  def configure
167
172
  yield @config
168
173
  @conf = nil
174
+ @twitter = nil
169
175
  end
170
176
 
171
177
  private
data/lib/twibot.rb CHANGED
@@ -7,7 +7,7 @@ require File.join(File.dirname(__FILE__), 'hash')
7
7
  module Twibot
8
8
 
9
9
  # :stopdoc:
10
- VERSION = '0.1.5'
10
+ VERSION = '0.1.6'
11
11
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
12
12
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
13
13
  # :startdoc:
data/test/test_bot.rb CHANGED
@@ -76,13 +76,13 @@ class TestBot < Test::Unit::TestCase
76
76
  should "receive tweet" do
77
77
  bot = Twibot::Bot.new(Twibot::Config.new(:log_level => "error"))
78
78
  bot.add_handler(:tweet, Twibot::Handler.new)
79
- Twitter::Client.any_instance.expects(:timeline_for).with(:me, {}).returns([tweet("cjno", "Hei der!")])
79
+ Twitter::Client.any_instance.expects(:timeline_for).with(:public, {}).returns([tweet("cjno", "Hei der!")])
80
80
 
81
81
  assert_equal 1, bot.receive_tweets
82
82
  end
83
83
 
84
84
  should "receive friend tweets if configured" do
85
- bot = Twibot::Bot.new(Twibot::Config.new({:log_level => "error", :include_friends => true}))
85
+ bot = Twibot::Bot.new(Twibot::Config.new({:log_level => "error", :timeline_for => :friends}))
86
86
  bot.add_handler(:tweet, Twibot::Handler.new)
87
87
  Twitter::Client.any_instance.expects(:timeline_for).with(:friends, {}).returns([tweet("cjno", "Hei der!")])
88
88
 
@@ -92,10 +92,10 @@ class TestBot < Test::Unit::TestCase
92
92
  should "remember received tweets" do
93
93
  bot = Twibot::Bot.new(Twibot::Config.new(:log_level => "error"))
94
94
  bot.add_handler(:tweet, Twibot::Handler.new)
95
- Twitter::Client.any_instance.expects(:timeline_for).with(:me, {}).returns([tweet("cjno", "Hei der!")])
95
+ Twitter::Client.any_instance.expects(:timeline_for).with(:public, {}).returns([tweet("cjno", "Hei der!")])
96
96
  assert_equal 1, bot.receive_tweets
97
97
 
98
- Twitter::Client.any_instance.expects(:timeline_for).with(:me, { :since_id => 1 }).returns([])
98
+ Twitter::Client.any_instance.expects(:timeline_for).with(:public, { :since_id => 1 }).returns([])
99
99
  assert_equal 0, bot.receive_tweets
100
100
  end
101
101
 
data/test/test_helper.rb CHANGED
@@ -1,7 +1,8 @@
1
+ require 'rubygems'
1
2
  require 'test/unit'
2
3
  require 'shoulda'
3
4
  require 'mocha'
4
- require File.join(File.dirname(__FILE__), '../lib/twibot')
5
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'twibot')
5
6
 
6
7
  module Test::Unit::Assertions
7
8
  def assert_hashes_equal(expected, actual, message = nil)
data/twibot.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{twibot}
5
+ s.version = "0.1.6"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Christian Johansen"]
9
+ s.date = %q{2009-04-13}
10
+ s.description = %q{Twibot (pronounced like "Abbot"), is a Ruby microframework for creating Twitter bots, heavily inspired by Sinatra.}
11
+ s.email = %q{christian@cjohansen.no}
12
+ s.extra_rdoc_files = ["History.txt", "Readme.rdoc"]
13
+ s.files = ["History.txt", "Rakefile", "Readme.rdoc", "lib/hash.rb", "lib/twibot.rb", "lib/twibot/bot.rb", "lib/twibot/config.rb", "lib/twibot/handlers.rb", "lib/twibot/macros.rb", "lib/twibot/tweets.rb", "test/test_bot.rb", "test/test_config.rb", "test/test_handler.rb", "test/test_hash.rb", "test/test_helper.rb", "test/test_twibot.rb", "twibot.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/bjeanes/twibot/}
16
+ s.rdoc_options = ["--main", "Readme.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{twibot}
19
+ s.rubygems_version = %q{1.3.1}
20
+ s.summary = %q{Twibot (pronounced like "Abbot"), is a Ruby microframework for creating Twitter bots, heavily inspired by Sinatra}
21
+ s.test_files = ["test/test_helper.rb", "test/test_config.rb", "test/test_hash.rb", "test/test_twibot.rb", "test/test_bot.rb", "test/test_handler.rb"]
22
+
23
+ if s.respond_to? :specification_version then
24
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
+ s.specification_version = 2
26
+
27
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
+ s.add_runtime_dependency(%q<mbbx6spp-twitter4r>, [">= 0.3.1"])
29
+ s.add_development_dependency(%q<bones>, [">= 2.4.0"])
30
+ else
31
+ s.add_dependency(%q<mbbx6spp-twitter4r>, [">= 0.3.1"])
32
+ s.add_dependency(%q<bones>, [">= 2.4.0"])
33
+ end
34
+ else
35
+ s.add_dependency(%q<mbbx6spp-twitter4r>, [">= 0.3.1"])
36
+ s.add_dependency(%q<bones>, [">= 2.4.0"])
37
+ end
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twibot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Johansen
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-12 00:00:00 +02:00
12
+ date: 2009-04-13 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -70,8 +70,9 @@ files:
70
70
  - test/test_hash.rb
71
71
  - test/test_helper.rb
72
72
  - test/test_twibot.rb
73
+ - twibot.gemspec
73
74
  has_rdoc: true
74
- homepage: http://github.com/cjohansen/twibot/
75
+ homepage: http://github.com/bjeanes/twibot/
75
76
  post_install_message:
76
77
  rdoc_options:
77
78
  - --main