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.
@@ -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,13 @@
1
+ module Livedoor
2
+ module API
3
+ module FeedDiscover
4
+ module VERSION
5
+ MAJOR = 1
6
+ MINOR = 0
7
+ TINY = 0
8
+
9
+ STRING = [MAJOR, MINOR, TINY].join('.')
10
+ end
11
+ end
12
+ end
13
+ 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