livedoor-feeddiscover 1.0.0
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.
- data/History.txt +3 -0
- data/License.txt +20 -0
- data/Manifest.txt +23 -0
- data/README.txt +112 -0
- data/Rakefile +202 -0
- data/examples/benchmark.rb +64 -0
- data/examples/mkopml.rb +48 -0
- data/helper/helper.rb +3 -0
- data/helper/rake.rb +58 -0
- data/helper/rake_sh_filter.rb +23 -0
- data/helper/util.rb +19 -0
- data/lib/livedoor/api/feed_discover/client.rb +77 -0
- data/lib/livedoor/api/feed_discover/feed.rb +66 -0
- data/lib/livedoor/api/feed_discover/feed_list.rb +70 -0
- data/lib/livedoor/api/feed_discover/version.rb +13 -0
- data/lib/livedoor/api/feed_discover.rb +12 -0
- data/setup.rb +1585 -0
- data/spec/livedoor/api/feed_discover/client_spec.rb +37 -0
- data/spec/livedoor/api/feed_discover/feed_list_spec.rb +114 -0
- data/spec/livedoor/api/feed_discover/feed_spec.rb +114 -0
- data/spec/livedoor/api/feed_discover/version_spec.rb +21 -0
- data/spec/spec.opts +0 -0
- data/spec/spec_helper.rb +28 -0
- metadata +83 -0
@@ -0,0 +1,66 @@
|
|
1
|
+
require "uri"
|
2
|
+
|
3
|
+
module Livedoor::API::FeedDiscover
|
4
|
+
class Feed
|
5
|
+
|
6
|
+
def initialize(json)
|
7
|
+
@json = json.dup
|
8
|
+
@json.each_value{|e| e.freeze }
|
9
|
+
end
|
10
|
+
|
11
|
+
def source
|
12
|
+
@json["source"]
|
13
|
+
end
|
14
|
+
|
15
|
+
def link
|
16
|
+
@json["link"]
|
17
|
+
end
|
18
|
+
|
19
|
+
def feedlink
|
20
|
+
@json["feedlink"]
|
21
|
+
end
|
22
|
+
|
23
|
+
def icon
|
24
|
+
@json["icon"]
|
25
|
+
end
|
26
|
+
|
27
|
+
def image
|
28
|
+
@json["image"]
|
29
|
+
end
|
30
|
+
|
31
|
+
def title
|
32
|
+
@json["title"]
|
33
|
+
end
|
34
|
+
|
35
|
+
def description
|
36
|
+
@json["description"]
|
37
|
+
end
|
38
|
+
|
39
|
+
def avg_rate
|
40
|
+
@json["avg_rate"]
|
41
|
+
end
|
42
|
+
|
43
|
+
def subscribers_count
|
44
|
+
@json["subscribers_count"]
|
45
|
+
end
|
46
|
+
|
47
|
+
def modified_on
|
48
|
+
v = @json["modified_on"]
|
49
|
+
Time.at(v) if v and Integer === v
|
50
|
+
end
|
51
|
+
|
52
|
+
def official?
|
53
|
+
v = @json["official"]
|
54
|
+
if v and Integer === v and v == 1
|
55
|
+
true
|
56
|
+
else
|
57
|
+
false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def thirdparty?
|
62
|
+
not official? and URI(link).host != URI(feedlink).host
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'livedoor/api/feed_discover/feed'
|
2
|
+
|
3
|
+
module Livedoor::API::FeedDiscover
|
4
|
+
class FeedList
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
def initialize(fetcher)
|
8
|
+
@fetcher = fetcher
|
9
|
+
@feeds = nil
|
10
|
+
@opml = nil
|
11
|
+
feeds0 # fetch feed information
|
12
|
+
end
|
13
|
+
|
14
|
+
def size
|
15
|
+
feeds0.size
|
16
|
+
end
|
17
|
+
alias length size
|
18
|
+
|
19
|
+
def feeds?
|
20
|
+
not feeds0.empty?
|
21
|
+
end
|
22
|
+
|
23
|
+
def feed
|
24
|
+
feeds0.first
|
25
|
+
end
|
26
|
+
|
27
|
+
def feeds
|
28
|
+
feeds0.dup
|
29
|
+
end
|
30
|
+
|
31
|
+
def feedlink
|
32
|
+
if r = feeds0.first
|
33
|
+
r.feedlink
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def feedlinks
|
38
|
+
feeds0.map{|e| e.feedlink }
|
39
|
+
end
|
40
|
+
|
41
|
+
def each(&block)
|
42
|
+
feeds0.each(&block)
|
43
|
+
end
|
44
|
+
|
45
|
+
def each_feedlink(&block)
|
46
|
+
feedlinks.each(&block)
|
47
|
+
end
|
48
|
+
|
49
|
+
def opml
|
50
|
+
if r = opml0
|
51
|
+
r.dup
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def opml0
|
58
|
+
@opml ||= fetch(:opml)
|
59
|
+
end
|
60
|
+
|
61
|
+
def feeds0
|
62
|
+
@feeds ||= (fetch(:json) || []).map{|e| Feed.new(e) }
|
63
|
+
end
|
64
|
+
|
65
|
+
def fetch(format)
|
66
|
+
@fetcher[format].call
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'livedoor/api/feed_discover/version'
|
2
|
+
require 'livedoor/api/feed_discover/client'
|
3
|
+
|
4
|
+
module Livedoor::API::FeedDiscover
|
5
|
+
def self.find(*args)
|
6
|
+
Livedoor::API::FeedDiscover::Client.new.find(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.find_from(*args)
|
10
|
+
Livedoor::API::FeedDiscover::Client.new.find_from(*args)
|
11
|
+
end
|
12
|
+
end
|