asakusa-rss-monitor 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ # 0.0.4 / 2013-01-19
2
+
3
+ * Minor
4
+ * Change class name of AsakusaRssMonitor::ASInfo to AsakusaRssMonitor::BotConfig
5
+ * Change method name in AsakusaRssMonitor::DateChecker
6
+ * Bug Fixes
7
+ * Fix initialize in AsakusaRssMonitor::PostBot
8
+
data/README.md CHANGED
@@ -8,7 +8,7 @@ To post rss updates on AsakusaSatellite.
8
8
  monitor = AsakusaRssMonitor.new({
9
9
  :check_file => 'last_time.txt',
10
10
  :rss_url => '<TARGET RSS>',
11
- :as_info => AsakusaRssMonitor::ASInfo.new({
11
+ :bot_config => AsakusaRssMonitor::BotConfig.new({
12
12
  :api_key => '<YOUR AS API KEY>',
13
13
  :entry_point => '<YOUR AS ENTRY POINT>', # cf. 'http://localhost:3000/api/v1'
14
14
  :room_id => '<ROOM ID>'
@@ -21,7 +21,7 @@ To post rss updates on AsakusaSatellite.
21
21
  def initialize(config)
22
22
  super(config)
23
23
  end
24
-
24
+
25
25
  # override this.
26
26
  def perform(rss_entry)
27
27
  "New Article. - #{rss_entry.date}\n#{rss_entry.title}\n#{rss_entry.link}"
@@ -29,7 +29,33 @@ To post rss updates on AsakusaSatellite.
29
29
  end
30
30
 
31
31
  ## Monitoring RSS
32
- To monitoring rss, you can use this script with cron.
32
+ To monitoring rss, you can use this script with cron or some nice libraries like
33
+ [clockwork](https://github.com/tomykaira/clockwork).
34
+
35
+ ### Using clockwork
36
+
37
+ gem install clockwork
38
+
39
+ Create clock.rb:
40
+
41
+ require 'clockwork'
42
+ require 'asakusa-rss-monitor'
43
+ include Clockwork
44
+
45
+ handler do |job|
46
+ job.call
47
+ end
48
+
49
+ monitor = AsakusaRssMonitor::RssMonitor.new({..})
50
+ another_monitor = AsakusaRssMonitor::RssMonitor.new({..}) # if you want to monitor another RSS.
51
+ every(5.minutes, monitor)
52
+ every(5.minutes, another_monitor)
53
+
54
+ Run it with the clockwork binary:
55
+
56
+ clockwork clock.rb
57
+
58
+ If you want to daemonize it, see [Daemonization](https://github.com/tomykaira/clockwork#daemonization) page on clockwork.
33
59
 
34
60
  ## Milestone
35
61
  * spec..
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- require "asakusa-rss-monitor/as-info"
2
+ require "asakusa-rss-monitor/bot-config"
3
3
  require "asakusa-rss-monitor/date-save"
4
4
  require "asakusa-rss-monitor/date-checker"
5
5
  require "asakusa-rss-monitor/post-bot"
@@ -1,8 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  module AsakusaRssMonitor
4
- class ASInfo
5
- attr_accessor :api_key, :entry_point, :room_id
4
+ class BotConfig
5
+ attr_reader :api_key, :entry_point, :room_id
6
6
  def initialize(config)
7
7
  @api_key = config[:api_key]
8
8
  @entry_point = config[:entry_point]
@@ -8,17 +8,17 @@ module AsakusaRssMonitor
8
8
  @save = DateSave.new(:file_name => config[:file_name])
9
9
  end
10
10
 
11
- def latest
12
- @latest ||= @save.read
11
+ def last_time
12
+ @last_time ||= @save.read
13
13
  end
14
14
 
15
15
  def check(time)
16
- time == @latest
16
+ time == @last_time
17
17
  end
18
18
 
19
19
  def update(time)
20
20
  @save.write time
21
- @latest = time
21
+ @last_time = time
22
22
  end
23
23
  end
24
24
  end
@@ -11,12 +11,16 @@ module AsakusaRssMonitor
11
11
 
12
12
  def read
13
13
  return Time.new(1999, 1, 1, 0, 0, 0) unless File.exist?(@file_name) # 十分古い日付
14
- text = File.read(@file_name, :encoding => Encoding::UTF_8)
14
+ #text = File.read(@file_name, :encoding => Encoding::UTF_8)
15
+ text = File.read(@file_name)
15
16
  Time.parse text
16
17
  end
17
18
 
18
19
  def write(time)
19
- File.write(@file_name, time.to_s)
20
+ #File.write(@file_name, time.to_s)
21
+ open(@file_name, 'w') do |f|
22
+ f.write time.to_s
23
+ end
20
24
  end
21
25
  end
22
26
  end
@@ -5,22 +5,20 @@ module AsakusaRssMonitor
5
5
  require 'net/http'
6
6
 
7
7
  def initialize(config)
8
- @api_key = config[:as_info][:api_key]
9
- @entry_point = config[:as_info][:entry_point]
10
- @room_id = config[:as_info][:room_id]
8
+ @config = config[:bot_config]
11
9
  end
12
10
 
13
11
  def post(message)
14
- uri = URI(@entry_point)
12
+ uri = URI(@config.entry_point)
15
13
  Net::HTTP.version_1_2
16
14
  Net::HTTP.start(uri.host, uri.port) do |http|
17
15
  p http.post(uri.path + "/message.json",
18
- "room_id=#{@room_id}&api_key=#{@api_key}&message=#{message}")
16
+ "room_id=#{@config.room_id}&api_key=#{@config.api_key}&message=#{message}")
19
17
  end
20
18
  end
21
19
 
22
20
  def get_rooms
23
- uri = URI(@entry_point)
21
+ uri = URI(@config.entry_point)
24
22
  Net::HTTP.version_1_2
25
23
  Net::HTTP.start(uri.host, uri.port) do |http|
26
24
  response = http.get(uri.path + "/room/list.json")
@@ -11,26 +11,26 @@ module AsakusaRssMonitor
11
11
  def initialize(config)
12
12
  @check_file = config[:check_file]
13
13
  @rss_url = config[:rss_url]
14
- @as_info = config[:as_info]
14
+ @bot_config = config[:bot_config]
15
15
  end
16
16
 
17
17
  def call
18
18
  checker = DateChecker.new(:file_name => @check_file)
19
- latest_time= checker.latest
19
+ last_time= checker.last_time
20
20
 
21
21
  rss = RssGetter.new(:url => @rss_url)
22
- new_articles = rss.get_new_articles latest_time
22
+ new_articles = rss.get_new_articles last_time
23
23
  return unless new_articles.any?
24
24
 
25
25
  begin
26
- bot = PostBot.new(:as_info => @as_info)
26
+ bot = PostBot.new(:bot_config => @bot_config)
27
27
  new_articles.each do |entry|
28
28
  bot.post perform(entry)
29
29
  end
30
30
  rescue => exception
31
31
  p exception
32
+ return
32
33
  end
33
-
34
34
  # rss.get_new_entries returns articles by ascending order
35
35
  checker.update new_articles.last.date
36
36
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  module AsakusaRssMonitor
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
 
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asakusa-rss-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -22,11 +22,12 @@ extra_rdoc_files: []
22
22
  files:
23
23
  - .gitignore
24
24
  - Gemfile
25
+ - HISTORY.md
25
26
  - README.md
26
27
  - Rakefile
27
28
  - asakusa-rss-monitor.gemspec
28
29
  - lib/asakusa-rss-monitor.rb
29
- - lib/asakusa-rss-monitor/as-info.rb
30
+ - lib/asakusa-rss-monitor/bot-config.rb
30
31
  - lib/asakusa-rss-monitor/date-checker.rb
31
32
  - lib/asakusa-rss-monitor/date-save.rb
32
33
  - lib/asakusa-rss-monitor/post-bot.rb