tjplurker 1.0.2 → 1.0.3

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 (2) hide show
  1. data/lib/tjplurker.rb +21 -14
  2. metadata +5 -7
data/lib/tjplurker.rb CHANGED
@@ -95,6 +95,9 @@ class TJPlurker
95
95
  rescue Timeout::Error => ex
96
96
  $tjpLog.warn(self.class){"Request timeout, retry."}
97
97
  retry
98
+ rescue Errno::ECONNRESET => ex
99
+ $tjpLog.warn(self.class){"Connection reset, retry."}
100
+ retry
98
101
  rescue => ex
99
102
  $tjpLog.fatal(self.class){"Unknown error, skip."}
100
103
  puts ex.class, ex.message, ex.backtrace
@@ -139,6 +142,9 @@ class TJPlurker
139
142
  rescue Timeout::Error => ex
140
143
  $tjpLog.warn(self.class){"Request timeout, retrying."}
141
144
  retry
145
+ rescue Errno::ECONNRESET => ex
146
+ $tjpLog.warn(self.class){"Connection reset, retry."}
147
+ retry
142
148
  rescue JSON::ParserError => ex
143
149
  $tjpLog.error(self.class){"JSON parse error, request failed."}
144
150
  rescue => ex
@@ -149,8 +155,8 @@ class TJPlurker
149
155
  return json
150
156
  end
151
157
 
158
+ # Format the json from the comet server. See TJPlurker#comet_channel
152
159
  class NotificationData
153
-
154
160
  # Can be +new_plurk+ or +new_response+.
155
161
  attr_reader :type
156
162
  attr_reader :response_count
@@ -200,6 +206,7 @@ class TJPlurker
200
206
  @services = []
201
207
  end
202
208
 
209
+ # Starting a loop and invokes services when a notification was listened.
203
210
  def start
204
211
  $tjpLog.info(self.class){"Start robot."}
205
212
  Thread.new{
@@ -221,6 +228,7 @@ class TJPlurker
221
228
  }
222
229
  end
223
230
 
231
+ # +service+:: Can be instance TJPlurker::Service or class TJPlurker::Service or it's descendant classes.
224
232
  def add_service service
225
233
  if service.is_a? Service
226
234
  @services << service
@@ -244,24 +252,28 @@ class TJPlurker
244
252
  end
245
253
  end
246
254
 
255
+ # Invoke when listened a new plurk.
247
256
  def decide tjplurker, data
248
257
  true
249
258
  end
250
259
 
251
260
  def action tjplurker, data
252
- p data
253
- end
254
-
255
- def serve tjplurker, data
256
261
  if @serve_proc
257
262
  @serve_proc[tjplurker, data]
258
263
  else
259
- action(tjplurker, data) if decide(tjplurker, data)
264
+ p data
260
265
  end
261
266
  end
267
+
268
+ def serve tjplurker, data
269
+ action(tjplurker, data) if decide(tjplurker, data)
270
+ end
262
271
  end
263
272
 
264
273
  class ThreadService < Service
274
+ # +lasting+:: How long in second will a thread lives. If one plurk just be responsed, then it will live another +lasting+ time.
275
+ #
276
+ # +refresh+:: Interval that checks if thread should terminate.
265
277
  def initialize name=self.class.to_s, lasting=60, refresh=1, &proc
266
278
  super name
267
279
  @lasting = lasting
@@ -270,16 +282,12 @@ class TJPlurker
270
282
  @mutex = Mutex.new
271
283
  end
272
284
 
273
- def decide tjplurker, data
274
- true
275
- end
285
+ # Invoke after thread termination.
286
+ # You can use this to tell users this service just terminate.
287
+ def final tjplurker, data
276
288
 
277
- def action tjplurker, data
278
- @serve_proc[tjplurker, data]
279
289
  end
280
290
 
281
- def final tjplurker, data
282
- end
283
291
  def serve tjplurker, data
284
292
  if data.type=='new_plurk' && decide(tjplurker, data)
285
293
  @plurk_id_hash[data.plurk_id] = Thread.new(data.plurk_id){|plurk_id|
@@ -311,7 +319,6 @@ class TJPlurker
311
319
  end
312
320
  end
313
321
  end
314
-
315
322
  end
316
323
 
317
324
  if __FILE__ == $0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tjplurker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-05-24 00:00:00.000000000 +08:00
13
- default_executable:
12
+ date: 2011-05-27 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: json
17
- requirement: &19617900 !ruby/object:Gem::Requirement
16
+ requirement: &15370380 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ! '>='
@@ -22,7 +21,7 @@ dependencies:
22
21
  version: 1.4.2
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *19617900
24
+ version_requirements: *15370380
26
25
  description: A safe Plurk API wrapper based on Ruby and mainly designed for easily
27
26
  making plurk robot.
28
27
  email: tonytonyjan.cs97@g2.nctu.edu.tw
@@ -31,7 +30,6 @@ extensions: []
31
30
  extra_rdoc_files: []
32
31
  files:
33
32
  - lib/tjplurker.rb
34
- has_rdoc: true
35
33
  homepage: http://code.google.com/p/tjplurker
36
34
  licenses: []
37
35
  post_install_message:
@@ -52,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
50
  version: '0'
53
51
  requirements: []
54
52
  rubyforge_project:
55
- rubygems_version: 1.5.2
53
+ rubygems_version: 1.8.4
56
54
  signing_key:
57
55
  specification_version: 3
58
56
  summary: A safe Plurk API wrapper based on Ruby and mainly designed for easily making