automatic 13.5.0 → 13.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/Gemfile +11 -5
  2. data/README.md +4 -6
  3. data/VERSION +1 -1
  4. data/automatic.gemspec +61 -18
  5. data/doc/ChangeLog +25 -0
  6. data/doc/PLUGINS +202 -12
  7. data/doc/PLUGINS.ja +221 -30
  8. data/doc/README +1 -1
  9. data/doc/README.ja +1 -1
  10. data/lib/automatic.rb +3 -3
  11. data/lib/automatic/feed_parser.rb +2 -2
  12. data/lib/automatic/log.rb +12 -2
  13. data/lib/automatic/pipeline.rb +1 -1
  14. data/lib/automatic/recipe.rb +5 -2
  15. data/plugins/custom_feed/svn_log.rb +3 -3
  16. data/plugins/filter/absolute_uri.rb +8 -4
  17. data/plugins/filter/accept.rb +61 -0
  18. data/plugins/filter/full_feed.rb +4 -5
  19. data/plugins/filter/github_feed.rb +36 -0
  20. data/plugins/filter/ignore.rb +1 -1
  21. data/plugins/filter/image.rb +1 -1
  22. data/plugins/filter/image_source.rb +34 -10
  23. data/plugins/filter/one.rb +1 -1
  24. data/plugins/filter/rand.rb +1 -1
  25. data/plugins/filter/sanitize.rb +50 -0
  26. data/plugins/filter/sort.rb +1 -1
  27. data/plugins/filter/tumblr_resize.rb +1 -1
  28. data/plugins/publish/console.rb +3 -3
  29. data/plugins/publish/console_link.rb +30 -0
  30. data/plugins/publish/eject.rb +42 -0
  31. data/plugins/publish/fluentd.rb +42 -0
  32. data/plugins/publish/google_calendar.rb +3 -3
  33. data/plugins/publish/hatena_bookmark.rb +1 -1
  34. data/plugins/publish/hipchat.rb +45 -0
  35. data/plugins/publish/instapaper.rb +2 -1
  36. data/plugins/publish/memcached.rb +44 -0
  37. data/plugins/publish/pocket.rb +1 -1
  38. data/plugins/publish/twitter.rb +1 -1
  39. data/plugins/store/database.rb +3 -3
  40. data/plugins/store/full_text.rb +2 -2
  41. data/plugins/store/permalink.rb +1 -1
  42. data/plugins/store/target_link.rb +3 -2
  43. data/plugins/subscription/chan_toru.rb +56 -0
  44. data/plugins/subscription/feed.rb +1 -1
  45. data/plugins/subscription/g_guide.rb +48 -0
  46. data/plugins/subscription/google_reader_star.rb +3 -3
  47. data/plugins/subscription/link.rb +2 -2
  48. data/plugins/subscription/pocket.rb +49 -0
  49. data/plugins/subscription/text.rb +3 -12
  50. data/plugins/subscription/tumblr.rb +7 -1
  51. data/plugins/subscription/twitter.rb +1 -1
  52. data/plugins/subscription/twitter_search.rb +50 -0
  53. data/plugins/subscription/weather.rb +7 -41
  54. data/script/build +3 -0
  55. data/spec/fixtures/sampleRecipe.yml +1 -1
  56. data/spec/lib/automatic/log_spec.rb +31 -0
  57. data/spec/lib/automatic/pipeline_spec.rb +1 -1
  58. data/spec/lib/automatic/recipe_spec.rb +1 -1
  59. data/spec/lib/automatic_spec.rb +3 -3
  60. data/spec/plugins/custom_feed/svn_log_spec.rb +1 -1
  61. data/spec/plugins/filter/absolute_uri_spec.rb +1 -1
  62. data/spec/plugins/filter/accept_spec.rb +331 -0
  63. data/spec/plugins/filter/full_feed_spec.rb +4 -6
  64. data/spec/plugins/filter/github_feed_spec.rb +54 -0
  65. data/spec/plugins/filter/ignore_spec.rb +1 -1
  66. data/spec/plugins/filter/image_source_spec.rb +17 -3
  67. data/spec/plugins/filter/image_spec.rb +1 -1
  68. data/spec/plugins/filter/one_spec.rb +1 -1
  69. data/spec/plugins/filter/rand_spec.rb +1 -1
  70. data/spec/plugins/filter/sanitize_spec.rb +153 -0
  71. data/spec/plugins/filter/sort_spec.rb +1 -1
  72. data/spec/plugins/filter/tumblr_resize_spec.rb +1 -1
  73. data/spec/plugins/notify/ikachan_spec.rb +1 -1
  74. data/spec/plugins/publish/console_spec.rb +1 -1
  75. data/spec/plugins/publish/eject_spec.rb +40 -0
  76. data/spec/plugins/publish/fluentd_spec.rb +39 -0
  77. data/spec/plugins/publish/google_calendar_spec.rb +1 -1
  78. data/spec/plugins/publish/hatena_bookmark_spec.rb +1 -1
  79. data/spec/plugins/publish/hipchat_spec.rb +69 -0
  80. data/spec/plugins/publish/instapaper_spec.rb +42 -28
  81. data/spec/plugins/publish/memcached_spec.rb +63 -0
  82. data/spec/plugins/publish/pocket_spec.rb +33 -33
  83. data/spec/plugins/publish/twitter_spec.rb +57 -19
  84. data/spec/plugins/store/full_text_spec.rb +6 -1
  85. data/spec/plugins/store/permalink_spec.rb +18 -19
  86. data/spec/plugins/store/target_link_spec.rb +1 -1
  87. data/spec/plugins/subscription/chan_toru_spec.rb +56 -0
  88. data/spec/plugins/subscription/feed_spec.rb +1 -1
  89. data/spec/plugins/subscription/g_guide_spec.rb +76 -0
  90. data/spec/plugins/subscription/google_reader_star_spec.rb +1 -1
  91. data/spec/plugins/subscription/link_spec.rb +1 -1
  92. data/spec/plugins/subscription/pocket_spec.rb +57 -0
  93. data/spec/plugins/subscription/text_spec.rb +1 -14
  94. data/spec/plugins/subscription/tumblr_spec.rb +3 -2
  95. data/spec/plugins/subscription/twitter_search_spec.rb +57 -0
  96. data/spec/plugins/subscription/twitter_spec.rb +3 -2
  97. data/spec/plugins/subscription/weather_spec.rb +2 -15
  98. data/spec/spec_helper.rb +1 -0
  99. data/test/integration/test_chan_toru.yml +19 -0
  100. data/test/integration/test_fluentd.yml +20 -0
  101. data/test/integration/test_pocket.yml +21 -0
  102. data/test/integration/test_sanitize.yml +22 -0
  103. data/test/integration/test_twitter_search.yml +21 -0
  104. metadata +145 -24
  105. data/plugins/publish/mail.rb +0 -64
  106. data/plugins/publish/smtp.rb +0 -48
  107. data/spec/plugins/publish/mail_spec.rb +0 -53
  108. data/spec/plugins/publish/smtp_spec.rb +0 -49
@@ -3,7 +3,7 @@
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Jun 20, 2012
5
5
  # Updated:: Apr 5, 2013
6
- # Copyright:: 774 Copyright (c) 2012-2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -17,7 +17,6 @@ module Automatic::Plugin
17
17
  def run
18
18
  @return_feeds = []
19
19
  @pipeline.each {|feeds|
20
- return_feed_items = []
21
20
  unless feeds.nil?
22
21
  feeds.items.each {|feed|
23
22
  feed.link = rewrite(feed.link) unless feed.link.nil?
@@ -32,9 +31,14 @@ module Automatic::Plugin
32
31
  def rewrite(string)
33
32
  if /^http:\/\/.*$/ =~ string
34
33
  return string
35
- else
36
- return @config['url'] + string
37
34
  end
35
+
36
+ if /[^\/]$/ =~ @config['url']
37
+ @config['url'] = @config['url'] + '/'
38
+ end
39
+ string = @config['url'] + string.sub(/^\./,'').sub(/^\//,'')
40
+ string = URI.encode(string)
41
+ return string
38
42
  end
39
43
  end
40
44
  end
@@ -0,0 +1,61 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Filter::Accept
3
+ # Author:: soramugi <http://soramugi.net>
4
+ # Created:: Jun 4, 2013
5
+ # Updated:: Jun 4, 2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ module Automatic::Plugin
10
+ class FilterAccept
11
+ def initialize(config, pipeline=[])
12
+ @config = config
13
+ @pipeline = pipeline
14
+ end
15
+
16
+ def run
17
+ @return_feeds = []
18
+ @pipeline.each {|feeds|
19
+ new_feeds = []
20
+ unless feeds.nil?
21
+ feeds.items.each {|items|
22
+ new_feeds << items if contain(items) == true
23
+ }
24
+ end
25
+ @return_feeds << Automatic::FeedParser.create(new_feeds) if new_feeds.length > 0
26
+ }
27
+ @return_feeds
28
+ end
29
+
30
+ private
31
+
32
+ def contain(items)
33
+ detection = false
34
+ unless @config['title'].nil?
35
+ @config['title'].each {|e|
36
+ if items.title.include?(e.chomp)
37
+ detection = true
38
+ Automatic::Log.puts("info", "Contain by title: #{items.link}")
39
+ end
40
+ }
41
+ end
42
+ unless @config['link'].nil?
43
+ @config['link'].each {|e|
44
+ if items.link.include?(e.chomp)
45
+ detection = true
46
+ Automatic::Log.puts("info", "Contain by link: #{items.link}")
47
+ end
48
+ }
49
+ end
50
+ unless @config['description'].nil?
51
+ @config['description'].each {|e|
52
+ if items.description.include?(e.chomp)
53
+ detection = true
54
+ Automatic::Log.puts("info", "Contain by description: #{items.link}")
55
+ end
56
+ }
57
+ end
58
+ detection
59
+ end
60
+ end
61
+ end
@@ -3,9 +3,8 @@
3
3
  # Author:: progd <http://d.hatena.ne.jp/progd/20120429/automatic_ruby_filter_full_feed>
4
4
  # 774 <http://id774.net>
5
5
  # Created:: Apr 29, 2012
6
- # Updated:: Apr 5, 2013
7
- # Copyright:: progd
8
- # 774 Copyright (c) 2012-2013
6
+ # Updated:: Jun 23, 2013
7
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
9
8
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
10
9
 
11
10
  module Automatic::Plugin
@@ -38,7 +37,7 @@ module Automatic::Plugin
38
37
 
39
38
  def get_siteinfo
40
39
  Automatic::Log.puts(:info, "Loading siteinfo from #{@config['siteinfo']}")
41
- siteinfo = JSON.load(open(File.join(assets_dir, @config['siteinfo'])).read)
40
+ siteinfo = JSON.load(open(File.join(assets_dir, @config['siteinfo'])).read.force_encoding("UTF-8"))
42
41
  siteinfo.select! { |info| SITEINFO_TYPES.include? (info['data']['type']) }
43
42
  siteinfo.sort! { |a, b|
44
43
  atype, btype = a['data']['type'], b['data']['type']
@@ -58,7 +57,7 @@ module Automatic::Plugin
58
57
 
59
58
  def fulltext(feed)
60
59
  return feed unless feed.link
61
- @siteinfo.each { |info|
60
+ @siteinfo.each {|info|
62
61
  begin
63
62
  if feed.link.match(info['data']['url'])
64
63
  Automatic::Log.puts(:info, "Siteinfo matched: #{info['data']['url']}")
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Filter::GithubFeed
3
+ # Author:: Kohei Hasegawa <http://github.com/banyan>
4
+ # Created:: Jun 6, 2013
5
+ # Updated:: Jun 6, 2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ module Automatic::Plugin
10
+ class FilterGithubFeed
11
+
12
+ def initialize(config, pipeline=[])
13
+ @config = config
14
+ @pipeline = pipeline
15
+ end
16
+
17
+ def run
18
+ @return_feeds = []
19
+ @pipeline.each {|feeds|
20
+ dummyFeeds = []
21
+ unless feeds.nil?
22
+ feeds.items.each {|feed|
23
+ Automatic::Log.puts("info", "Invoked: FilterGithubFeed")
24
+ dummy = Hashie::Mash.new
25
+ dummy.title = feed.title.content
26
+ dummy.link = feed.id.content
27
+ dummy.description = feed.content.content
28
+ dummyFeeds << dummy
29
+ }
30
+ end
31
+ @return_feeds << Automatic::FeedParser.create(dummyFeeds)
32
+ }
33
+ @pipeline = @return_feeds
34
+ end
35
+ end
36
+ end
@@ -3,7 +3,7 @@
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Feb 22, 2012
5
5
  # Updated:: Apr 5, 2013
6
- # Copyright:: 774 Copyright (c) 2012-2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -3,7 +3,7 @@
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Sep 18, 2012
5
5
  # Updated:: Apr 5, 2013
6
- # Copyright:: 774 Copyright (c) 2012-2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -3,7 +3,7 @@
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Feb 28, 2012
5
5
  # Updated:: Apr 5, 2013
6
- # Copyright:: 774 Copyright (c) 2012-2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -19,29 +19,53 @@ module Automatic::Plugin
19
19
  def run
20
20
  @return_feeds = []
21
21
  @pipeline.each {|feeds|
22
- img_url = ""
22
+ dummyFeeds = Array.new
23
23
  unless feeds.nil?
24
24
  feeds.items.each {|feed|
25
- arr = rewrite_link(feed.description)
25
+ arr = rewrite_link(feed)
26
26
  if arr.length > 0
27
- feed.link = arr[0]
28
- else
29
- feed.link = nil
27
+ arr.each {|link|
28
+ Automatic::Log.puts("info", "Parsing: #{link}")
29
+ dummy = Hashie::Mash.new
30
+ dummy.title = 'FilterImageSource'
31
+ dummy.link = link
32
+ dummyFeeds << dummy
33
+ }
30
34
  end
31
35
  }
32
36
  end
33
- @return_feeds << feeds
37
+ @return_feeds << Automatic::FeedParser.create(dummyFeeds)
34
38
  }
35
- @return_feeds
39
+ @pipeline = @return_feeds
36
40
  end
37
41
 
38
42
  private
39
- def rewrite_link(string)
43
+
44
+ def rewrite_link(feed)
40
45
  array = Array.new
41
- string.scan(/<img src="(.*?)"/) { |matched|
46
+ feed.description.scan(/<img src="(.*?)"/) {|matched|
42
47
  array = array | matched
43
48
  }
49
+ if array.length === 0 && feed.link != nil
50
+ array = imgs(feed.link)
51
+ end
44
52
  array
45
53
  end
54
+
55
+ def imgs(link)
56
+ images = Array.new
57
+ html = open(link).read
58
+ unless html.nil?
59
+ doc = Nokogiri::HTML(html)
60
+ (doc/:img).each {|img|
61
+ image = img[:src]
62
+ unless /^http/ =~ image
63
+ image = link.sub(/\/([^\/]+)$/, image.sub(/^\./,''))
64
+ end
65
+ images << image
66
+ }
67
+ end
68
+ images
69
+ end
46
70
  end
47
71
  end
@@ -3,7 +3,7 @@
3
3
  # Author:: soramugi <http://soramugi.net>
4
4
  # Created:: May 8, 2013
5
5
  # Updated:: May 8, 2013
6
- # Copyright:: soramugi Copyright (c) 2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -4,7 +4,7 @@
4
4
  # 774 <http://id774.net>
5
5
  # Created:: Mar 6, 2013
6
6
  # Updated:: Mar 7, 2013
7
- # Copyright:: soramugi Copyright (c) 2013
7
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
8
8
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
9
9
 
10
10
  module Automatic::Plugin
@@ -0,0 +1,50 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Filter::Sanitize
3
+ # Author:: 774 <http://id774.net>
4
+ # Created:: Jun 20, 2013
5
+ # Updated:: Jun 24, 2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ module Automatic::Plugin
10
+ class FilterSanitize
11
+ require 'sanitize'
12
+
13
+ def initialize(config, pipeline=[])
14
+ @config = config
15
+ @pipeline = pipeline
16
+ case @config['mode']
17
+ when "basic"
18
+ @mode = Sanitize::Config::BASIC
19
+ when "relaxed"
20
+ @mode = Sanitize::Config::RELAXED
21
+ else
22
+ @mode = Sanitize::Config::RESTRICTED
23
+ end
24
+ end
25
+
26
+ def run
27
+ @return_feeds = []
28
+ @pipeline.each {|feeds|
29
+ return_feed_items = []
30
+ unless feeds.nil?
31
+ feeds.items.each {|feed|
32
+ feed = sanitize(feed)
33
+ }
34
+ @return_feeds << feeds
35
+ end
36
+ }
37
+ @return_feeds
38
+ end
39
+
40
+ private
41
+ def sanitize(feed)
42
+ begin
43
+ feed.description = Sanitize.clean(feed.description, @mode) unless feed.description.nil?
44
+ rescue
45
+ Automatic::Log.puts("warn", "Undefined field detected in feed.")
46
+ end
47
+ feed
48
+ end
49
+ end
50
+ end
@@ -3,7 +3,7 @@
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Mar 23, 2012
5
5
  # Updated:: Jan 23, 2013
6
- # Copyright:: 774 Copyright (c) 2012
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -3,7 +3,7 @@
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Feb 28, 2012
5
5
  # Updated:: Apr 5, 2013
6
- # Copyright:: 774 Copyright (c) 2012-2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -3,7 +3,7 @@
3
3
  # Author:: 774 <http://id774.net>
4
4
  # Created:: Feb 23, 2012
5
5
  # Updated:: Feb 24, 2012
6
- # Copyright:: 774 Copyright (c) 2012
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
7
  # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
8
 
9
9
  module Automatic::Plugin
@@ -17,9 +17,9 @@ module Automatic::Plugin
17
17
  end
18
18
 
19
19
  def run
20
- @pipeline.each { |feeds|
20
+ @pipeline.each {|feeds|
21
21
  unless feeds.nil?
22
- feeds.items.each { |feed|
22
+ feeds.items.each {|feed|
23
23
  @output.puts("info", feed.pretty_inspect)
24
24
  }
25
25
  end
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Publish::ConsoleLink
3
+ # Author:: soramugi <http://soramugi.net>
4
+ # Created:: Jun 02, 2013
5
+ # Updated:: Jun 02, 2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ module Automatic::Plugin
10
+ class PublishConsoleLink
11
+ require 'pp'
12
+
13
+ def initialize(config, pipeline=[])
14
+ @config = config
15
+ @pipeline = pipeline
16
+ @output = STDOUT
17
+ end
18
+
19
+ def run
20
+ @pipeline.each {|feeds|
21
+ unless feeds.nil?
22
+ feeds.items.each {|feed|
23
+ @output.puts("info", feed.link)
24
+ }
25
+ end
26
+ }
27
+ @pipeline
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Publish::Eject
3
+ # Author:: soramugi <http://soramugi.net>
4
+ # Created:: Jun 9, 2013
5
+ # Updated:: Jun 9, 2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ module Automatic::Plugin
10
+ class PublishEject
11
+
12
+ def initialize(config, pipeline=[])
13
+ @config = config
14
+ @pipeline = pipeline
15
+ end
16
+
17
+ def run
18
+ @pipeline.each {|feeds|
19
+ unless feeds.nil?
20
+ feeds.items.each {|feed|
21
+ unless feed.link.nil?
22
+ `#{eject_cmd}`
23
+ Automatic::Log.puts('info', "Eject: #{feed.link}")
24
+
25
+ interval = @config['interval'].to_i unless @config['interval'].nil? unless @config.nil?
26
+ sleep 3 if interval.nil?
27
+ end
28
+ }
29
+ end
30
+ }
31
+ @pipeline
32
+ end
33
+
34
+ def eject_cmd
35
+ if `type -P eject` != '' # linux
36
+ 'eject ; eject -t'
37
+ elsif `type -P drutil` != '' # mac
38
+ 'drutil tray eject ; drutil tray close'
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Name:: Automatic::Plugin::Publish::Fluentd
3
+ # Author:: 774 <http://id774.net>
4
+ # Created:: Jun 21, 2013
5
+ # Updated:: Jun 25, 2013
6
+ # Copyright:: Copyright (c) 2012-2013 Automatic Ruby Developers.
7
+ # License:: Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0.
8
+
9
+ module Automatic::Plugin
10
+ class PublishFluentd
11
+ require 'fluent-logger'
12
+
13
+ def initialize(config, pipeline=[])
14
+ @config = config
15
+ @pipeline = pipeline
16
+ @fluentd = Fluent::Logger::FluentLogger.open(nil,
17
+ host = @config['host'],
18
+ port = @config['port'])
19
+ end
20
+
21
+ def run
22
+ @pipeline.each {|feeds|
23
+ unless feeds.nil?
24
+ feeds.items.each {|feed|
25
+ begin
26
+ @fluentd.post(@config['tag'], {
27
+ :title => feed.title,
28
+ :link => feed.link,
29
+ :description => feed.description,
30
+ :content => feed.content_encoded,
31
+ :created_at => Time.now.strftime("%Y/%m/%d %X")
32
+ })
33
+ rescue
34
+ Automatic::Log.puts("warn", "Skip feed due to fault in forward.")
35
+ end
36
+ }
37
+ end
38
+ }
39
+ @pipeline
40
+ end
41
+ end
42
+ end