feedig 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 31913fa7c2372f1d6936dd4bc57996224e01e299
4
+ data.tar.gz: 8d7d262c240a7d0cbe86261a1ef8e34b73f40836
5
+ SHA512:
6
+ metadata.gz: 88ab55f4e038b0c63721a01b0b20737cab80ee0c44c73ab0273a9b59e53047d98df9498510b38eadd449a62abb57dc51a510138b1ad374805f07de8f582b71ea
7
+ data.tar.gz: 870ffaab50dc17e0e5c2afbcc77390f2c82be47a601e163f5521dfc457cb5c57dbbda7bbe1d3db73e1c1088804be9e9c75db7b3ffafccaa937166d1773bf6252
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in feedig.gemspec
4
+ gemspec
@@ -0,0 +1,46 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ feedig (0.0.1)
5
+ faraday
6
+ feedzirra (~> 0.7)
7
+ json
8
+ net-irc
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ coderay (1.1.0)
14
+ curb (0.8.5)
15
+ faraday (0.9.0)
16
+ multipart-post (>= 1.2, < 3)
17
+ feedzirra (0.7.0)
18
+ curb (~> 0.8.1)
19
+ loofah (~> 1.2.1)
20
+ sax-machine (~> 0.2.1)
21
+ json (1.8.1)
22
+ loofah (1.2.1)
23
+ nokogiri (>= 1.4.4)
24
+ method_source (0.8.2)
25
+ mini_portile (0.5.2)
26
+ multipart-post (2.0.0)
27
+ net-irc (0.0.9)
28
+ nokogiri (1.6.1)
29
+ mini_portile (~> 0.5.0)
30
+ pry (0.9.12.4)
31
+ coderay (~> 1.0)
32
+ method_source (~> 0.8)
33
+ slop (~> 3.4)
34
+ rake (10.1.1)
35
+ sax-machine (0.2.1)
36
+ nokogiri (~> 1.6.0)
37
+ slop (3.4.7)
38
+
39
+ PLATFORMS
40
+ ruby
41
+
42
+ DEPENDENCIES
43
+ bundler (~> 1.5)
44
+ feedig!
45
+ pry
46
+ rake
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 taketin
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,34 @@
1
+ # Feedig
2
+
3
+ Feedig is Feed IRC Gateway, forked hsbt's [agig.rb](https://github.com/hsbt/agig)
4
+
5
+ ## Installation
6
+
7
+ `$ gem install feedig`
8
+
9
+ ## Usage
10
+
11
+ ```
12
+ $ cd feedig
13
+
14
+ # Add the feed url to 'resources.yml'
15
+
16
+ $ feedig -d
17
+
18
+ # join '#notification' channel in your IRC client.
19
+ ```
20
+
21
+
22
+ change the interval to fetch
23
+
24
+ ```
25
+ $ feedig -d -i #{second}
26
+ ```
27
+
28
+ ## Contributing
29
+
30
+ 1. Fork it ( http://github.com/<my-github-username>/feedig/fork )
31
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
32
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
33
+ 4. Push to the branch (`git push origin my-new-feature`)
34
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'feedig'
4
+ Feedig::Client.run
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'feedig/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "feedig"
8
+ spec.version = Feedig::VERSION
9
+ spec.authors = ["taketin"]
10
+ spec.email = ["tksthdnr@gmail.com"]
11
+ spec.summary = %q{feedig is Feed IRC Gateway. feedig is forked from agig.rb, and contained net-irc gems.}
12
+ spec.description = %q{Feed IRC Gateway}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "pry"
24
+ spec.add_runtime_dependency 'net-irc'
25
+ spec.add_runtime_dependency 'json'
26
+ spec.add_runtime_dependency 'faraday'
27
+ spec.add_runtime_dependency 'feedzirra', "~> 0.7.1"
28
+ end
@@ -0,0 +1,4 @@
1
+ require "feedig/version"
2
+ require "feedig/client"
3
+ require "feedig/optparse"
4
+ require "feedig/session"
@@ -0,0 +1,13 @@
1
+ require 'net/irc'
2
+ require 'logger'
3
+
4
+ module Feedig::Client
5
+ def self.run
6
+ opts = Feedig::OptParser.parse!(ARGV)
7
+
8
+ opts[:logger] = Logger.new(opts[:log], "daily")
9
+ opts[:logger].level = opts[:debug] ? Logger::DEBUG : Logger::INFO
10
+
11
+ Net::IRC::Server.new(opts[:host], opts[:port], Feedig::Session, opts).start
12
+ end
13
+ end
@@ -0,0 +1,64 @@
1
+ require "optparse"
2
+
3
+ module Feedig::OptParser
4
+ def self.parse!(argv)
5
+ opts = {
6
+ :port => 16705,
7
+ :host => "localhost",
8
+ :interval => 30,
9
+ :log => nil,
10
+ :debug => false,
11
+ :foreground => false,
12
+ }
13
+
14
+ OptionParser.new do |parser|
15
+ parser.instance_eval do
16
+ self.banner = "Usage: #{$0} [opts]"
17
+ separator ""
18
+
19
+ separator "Options:"
20
+ on("-p", "--port [PORT=#{opts[:port]}]", "port number to listen") do |port|
21
+ opts[:port] = port
22
+ end
23
+
24
+ on("-h", "--host [HOST=#{opts[:host]}]", "host name or IP address to listen") do |host|
25
+ opts[:host] = host
26
+ end
27
+
28
+ on("-i", "--interval [INTERVAL=#{opts[:interval]}]", "set a retrieving interval") do |interval|
29
+ opts[:interval] = interval
30
+ end
31
+
32
+ on("-l", "--log LOG", "log file") do |log|
33
+ opts[:log] = log
34
+ end
35
+
36
+ on("-d", "--debug", "Enable debug mode") do |debug|
37
+ opts[:log] = $stdout
38
+ opts[:debug] = true
39
+ end
40
+
41
+ on("-f", "--foreground", "run foreground") do |foreground|
42
+ opts[:log] = $stdout
43
+ opts[:foreground] = true
44
+ end
45
+
46
+ parse!(argv)
47
+ end
48
+ end
49
+
50
+ self.cast opts
51
+ end
52
+
53
+ def self.cast(opts)
54
+ opts.inject({}) {|r, i|
55
+ key, value = i[0], i[1]
56
+ r.update key => case value
57
+ when nil then true
58
+ when /\A\d+\z/ then value.to_i
59
+ when /\A(?:\d+\.\d*|\.\d+)\z/ then value.to_f
60
+ else value
61
+ end
62
+ }
63
+ end
64
+ end
@@ -0,0 +1,5 @@
1
+ Twitter: https://blog.twitter.com/api/blog.rss?name=developer
2
+ Facebook: https://developers.facebook.com/blog/feed
3
+ Instagram: http://developers.instagram.com/rss
4
+ Foursquare: http://engineering.foursquare.com/feed
5
+ Tumblr: http://developers.tumblr.com/rss
@@ -0,0 +1,82 @@
1
+ require 'ostruct'
2
+ require 'net/irc'
3
+ require 'feedzirra'
4
+ require 'yaml'
5
+
6
+ class Feedig::Session < Net::IRC::Server::Session
7
+
8
+ def server_version
9
+ Feedig::VERSION
10
+ end
11
+
12
+ def channels
13
+ ['#notification']
14
+ end
15
+
16
+ def initialize(*args)
17
+ super
18
+ end
19
+
20
+ def client
21
+ @client ||= YAML.load_file('./lib/feedig/resources.yml').inject({}) { |hash, (name, url)|
22
+ hash[name] = Feedzirra::Feed.fetch_and_parse url
23
+ hash
24
+ }
25
+ end
26
+
27
+ def on_disconnected
28
+ @retrieve_thread.kill rescue nil
29
+ end
30
+
31
+ def on_user(m)
32
+ super
33
+
34
+ channels.each { |channel| post @nick, JOIN, channel }
35
+
36
+ client.each_pair do |name, feed|
37
+ post(
38
+ "RECENT",
39
+ PRIVMSG,
40
+ "#notification",
41
+ "\0035#{name}:\017 \00314#{feed.entries[0].title} [ #{feed.entries[0].url} ] #{feed.entries[0].last_modified}\017"
42
+ )
43
+ end
44
+
45
+ @retrieve_thread = Thread.start do
46
+ loop do
47
+ retrieve @opts.interval
48
+ end
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ def retrieve(interval)
55
+ @log.info 'retrieveing feed...'
56
+
57
+ client.each_pair do |name, feed|
58
+ feed = Feedzirra::Feed.update feed
59
+ if feed.has_new_entries?
60
+ feed.new_entries.each do |new_entry|
61
+ post(
62
+ "NEW",
63
+ PRIVMSG,
64
+ "#notification",
65
+ "\0035#{name}:\017 \00314#{new_entry.title} [ #{new_entry.url} ] #{new_entry.last_modified}\017"
66
+ )
67
+ end
68
+ feed.new_entries = []
69
+ end
70
+ end
71
+
72
+ @log.info 'sleep'
73
+ sleep interval
74
+ rescue Exception => e
75
+ @log.error e.inspect
76
+ e.backtrace.each do |l|
77
+ @log.error "\t#{l}"
78
+ end
79
+ sleep 10
80
+ end
81
+
82
+ end
@@ -0,0 +1,3 @@
1
+ module Feedig
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: feedig
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - taketin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: net-irc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: faraday
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: feedzirra
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.7.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.7.1
111
+ description: Feed IRC Gateway
112
+ email:
113
+ - tksthdnr@gmail.com
114
+ executables:
115
+ - feedig
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - bin/feedig
125
+ - feedig.gemspec
126
+ - lib/feedig.rb
127
+ - lib/feedig/client.rb
128
+ - lib/feedig/optparse.rb
129
+ - lib/feedig/resources.yml
130
+ - lib/feedig/session.rb
131
+ - lib/feedig/version.rb
132
+ homepage: ''
133
+ licenses:
134
+ - MIT
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 2.2.0
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: feedig is Feed IRC Gateway. feedig is forked from agig.rb, and contained
156
+ net-irc gems.
157
+ test_files: []