twitter2jabber 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d434391b12803f08dec2790028dccd36ec5db99c
4
- data.tar.gz: 7ab9bac4e82d981f0281f16990ef2fc7ea6d52fb
3
+ metadata.gz: 22d1efa034a7df52c0417d0122d5a6cfc86ac732
4
+ data.tar.gz: 679a722cd4e6384fb5fbd1e52a9ea78d689b867f
5
5
  SHA512:
6
- metadata.gz: f6909849d8bd8705a47aeb84c940841344e4a41f852d349108e0c8c7edd9ae44b78179ec6ccea5cfdbbe9f37f93dd252bcf34cbd549dab9efe42587b31daf1f2
7
- data.tar.gz: ed809ca1fce70a4479d196232d506e4585dd77197e66f6b27b781177ccd6be0abba952c4ecee7b11facf8727a75ed0c719af8070ccbe77711ed19520555227f5
6
+ metadata.gz: 34e9362d7eefa5aeb5fff91f850d0cb08df52e85f3f5855edbd954b00c6fa8b6863d27e6912056d13d711650c1405be210a81f02206956652d889944a05b079d
7
+ data.tar.gz: 85a22de2e19cb87a963b2479da076ca59dda43d3d735e9aeceb8520e607c776d0ee8803939ed989d50096bf60444f6ecc31f400b8b09ad2d9f60a36b79264539
data/ChangeLog CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  = Revision history for twitter2jabber
4
4
 
5
+ == 0.8.1 [2014-04-25]
6
+
7
+ * Exhaust the Twitter stream by buffering all tweets received since the last
8
+ time, or one batch when run for the first time.
9
+ * Relies on the order in Twitter::REST::Client#home_timeline (descending by
10
+ ID).
11
+ * Disconnects Twitter and Jabber clients when finished.
12
+
5
13
  == 0.8.0 [2014-04-15]
6
14
 
7
15
  * Dropped "write" functionality. Only forwards Twitter messages to Jabber.
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to twitter2jabber version 0.8.0
5
+ This documentation refers to twitter2jabber version 0.8.1
6
6
 
7
7
 
8
8
  == DESCRIPTION
data/TODO CHANGED
@@ -1,6 +1,4 @@
1
1
  - include_entities=true (http://dev.twitter.com/pages/tweet_entities)
2
2
  - include_rts=true (?)
3
- - use streaming API? (http://apiwiki.twitter.com/Streaming-API-Documentation)
4
- - persistent cache? (friends_timeline: since/since_id?)
5
3
  - SPECS!!!
6
4
  - DOCS!!
@@ -68,6 +68,11 @@ class Twitter2Jabber
68
68
  raise "Can't connect to Jabber with JID '#{spec}': #{err}"
69
69
  end
70
70
 
71
+ def disconnect
72
+ close if @client
73
+ log 'disconnected'
74
+ end
75
+
71
76
  def format(tweet)
72
77
  user = tweet.user
73
78
  text = @erb.result(binding)
@@ -113,14 +118,18 @@ class Twitter2Jabber
113
118
  rescue Errno::EPIPE, IOError
114
119
  raise if attempts > 3
115
120
 
121
+ close
122
+ sleep 1
123
+ retry
124
+ end
125
+
126
+ def close
116
127
  begin
117
128
  @client.close
118
129
  rescue Errno::EPIPE, IOError
119
130
  end
120
131
 
121
132
  @client = nil
122
- sleep 1
123
- retry
124
133
  end
125
134
 
126
135
  def log(msg)
@@ -31,6 +31,8 @@ class Twitter2Jabber
31
31
 
32
32
  class TwitterClient
33
33
 
34
+ BATCH_SIZE = Twitter::REST::Timelines::MAX_TWEETS_PER_REQUEST
35
+
34
36
  def initialize(gw, config)
35
37
  @gw, @config, @client = gw, config, Twitter::REST::Client.new(
36
38
  consumer_key: @spec = config[:consumer_token],
@@ -49,11 +51,13 @@ class Twitter2Jabber
49
51
  raise "Can't connect to Twitter with ID '#{spec}': #{err}"
50
52
  end
51
53
 
52
- def tweets(since_id = nil)
53
- tweets = client.home_timeline(since_id: since_id)
54
- return unless tweets.is_a?(Array)
54
+ def disconnect
55
+ @client = nil
56
+ log 'disconnected'
57
+ end
55
58
 
56
- tweets.sort_by { |tweet| tweet.created_at }.each { |tweet|
59
+ def tweets(since_id = nil)
60
+ get_tweets(since_id).reverse_each { |tweet|
57
61
  log since_id = tweet.id
58
62
  yield tweet
59
63
  sleep 1
@@ -80,6 +84,20 @@ class Twitter2Jabber
80
84
 
81
85
  private
82
86
 
87
+ def get_tweets(since_id = nil)
88
+ options, buffer = { count: BATCH_SIZE }, []
89
+ options[:since_id] = since_id if since_id
90
+
91
+ loop {
92
+ buffer.concat(batch = client.home_timeline(options))
93
+
94
+ break if batch.empty? || !since_id ||
95
+ since_id >= options[:max_id] = batch.last.id - 1
96
+ }
97
+
98
+ buffer
99
+ end
100
+
83
101
  def log(msg)
84
102
  @gw.log("TWITTER #{msg}")
85
103
  end
@@ -4,7 +4,7 @@ class Twitter2Jabber
4
4
 
5
5
  MAJOR = 0
6
6
  MINOR = 8
7
- TINY = 0
7
+ TINY = 1
8
8
 
9
9
  class << self
10
10
 
@@ -29,7 +29,7 @@ class Twitter2Jabber
29
29
  class << self
30
30
 
31
31
  def run(options, since_id = nil)
32
- new(options).connect.deliver_tweets(since_id)
32
+ new(options).connect.deliver_tweets(since_id).disconnect
33
33
  end
34
34
 
35
35
  def client(client)
@@ -54,6 +54,8 @@ class Twitter2Jabber
54
54
  end
55
55
  end
56
56
 
57
+ attr_reader :twitter, :jabber, :debug
58
+
57
59
  def connect
58
60
  log 'Connecting...'
59
61
 
@@ -63,10 +65,18 @@ class Twitter2Jabber
63
65
  self
64
66
  end
65
67
 
66
- attr_reader :twitter, :jabber, :debug
68
+ def disconnect
69
+ log 'Disconnecting...'
70
+
71
+ twitter.disconnect
72
+ jabber.disconnect
73
+
74
+ self
75
+ end
67
76
 
68
77
  def deliver_tweets(since_id = nil)
69
78
  twitter.tweets(since_id) { |tweet| jabber.deliver(tweet) }
79
+ self
70
80
  end
71
81
 
72
82
  def log(msg)
@@ -84,5 +94,5 @@ class Twitter2Jabber
84
94
  end
85
95
 
86
96
  require_relative 'twitter2jabber/version'
87
- require_relative 'twitter2jabber/twitter'
88
- require_relative 'twitter2jabber/jabber'
97
+ require_relative 'twitter2jabber/twitter_client'
98
+ require_relative 'twitter2jabber/jabber_client'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter2jabber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Wille
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-15 00:00:00.000000000 Z
11
+ date: 2014-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cyclops
@@ -115,8 +115,8 @@ files:
115
115
  - example/templates/tweet.txt
116
116
  - lib/twitter2jabber.rb
117
117
  - lib/twitter2jabber/cli.rb
118
- - lib/twitter2jabber/jabber.rb
119
- - lib/twitter2jabber/twitter.rb
118
+ - lib/twitter2jabber/jabber_client.rb
119
+ - lib/twitter2jabber/twitter_client.rb
120
120
  - lib/twitter2jabber/version.rb
121
121
  homepage: http://github.com/blackwinter/twitter2jabber
122
122
  licenses:
@@ -124,16 +124,17 @@ licenses:
124
124
  metadata: {}
125
125
  post_install_message: |2+
126
126
 
127
- twitter2jabber-0.8.0 [2014-04-15]:
127
+ twitter2jabber-0.8.1 [2014-04-25]:
128
128
 
129
- * Dropped "write" functionality. Only forwards Twitter messages to Jabber.
130
- * Dropped Ruby 1.8 support.
131
- * Reduced external dependencies.
132
- * Cut down command line options.
129
+ * Exhaust the Twitter stream by buffering all tweets received since the last
130
+ time, or one batch when run for the first time.
131
+ * Relies on the order in Twitter::REST::Client#home_timeline (descending by
132
+ ID).
133
+ * Disconnects Twitter and Jabber clients when finished.
133
134
 
134
135
  rdoc_options:
135
136
  - "--title"
136
- - twitter2jabber Application documentation (v0.8.0)
137
+ - twitter2jabber Application documentation (v0.8.1)
137
138
  - "--charset"
138
139
  - UTF-8
139
140
  - "--line-numbers"
@@ -154,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
155
  version: '0'
155
156
  requirements: []
156
157
  rubyforge_project:
157
- rubygems_version: 2.2.2
158
+ rubygems_version: 2.2.2.x
158
159
  signing_key:
159
160
  specification_version: 4
160
161
  summary: Twitter-to-Jabber gateway.