lifestream 0.1.3 → 0.1.4
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/VERSION +1 -1
- data/lib/lifestream/channel/rss2.rb +2 -2
- data/lib/lifestream/channel.rb +21 -5
- data/lib/lifestream.rb +7 -1
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
@@ -9,11 +9,11 @@ module Lifestream
|
|
9
9
|
def parse
|
10
10
|
@feed = RSS::Parser.parse(@raw_data, false)
|
11
11
|
rescue => e
|
12
|
-
raise Lifestream::Channel::Rss2::MalformedFeed.new("The feed from #{@url} could not be parsed") if Lifestream.options[:whiny]
|
12
|
+
raise Lifestream::Channel::Rss2::MalformedFeed.new("The feed from #{@request.url} could not be parsed #{e}") if Lifestream.options[:whiny]
|
13
13
|
end
|
14
14
|
|
15
15
|
def feed_to_a
|
16
|
-
@feed.items
|
16
|
+
@feed.items
|
17
17
|
end
|
18
18
|
|
19
19
|
def to_branch(branch)
|
data/lib/lifestream/channel.rb
CHANGED
@@ -15,11 +15,27 @@ module Lifestream
|
|
15
15
|
protected
|
16
16
|
|
17
17
|
def download
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
response_with_cache do
|
19
|
+
response = @request.get
|
20
|
+
raise unless response.kind_of?(Net::HTTPSuccess)
|
21
|
+
@raw_data = response.body
|
22
|
+
end
|
21
23
|
rescue => e
|
22
|
-
Lifestream::Channel::DownloadError.new("The URL #{@request.url} failed to download") if Lifestream.options[:whiny]
|
24
|
+
raise Lifestream::Channel::DownloadError.new("The URL #{@request.url} failed to download. #{e}") if Lifestream.options[:whiny]
|
25
|
+
end
|
26
|
+
|
27
|
+
def response_with_cache
|
28
|
+
yield and return unless Lifestream.options[:cache]
|
29
|
+
cache_path = File.join(Lifestream.options[:cache], "#{name}.xml")
|
30
|
+
if !File.exist?(cache_path) || File.mtime(cache_path) + Lifesteam.options[:cache_expiration] < Time.now
|
31
|
+
yield
|
32
|
+
cache = File.new(cache_path, 'wb')
|
33
|
+
cache.flock(File::LOCK_EX)
|
34
|
+
cache.write(@raw_data)
|
35
|
+
cache.flock(File::LOCK_UN)
|
36
|
+
else
|
37
|
+
@raw_data = File.read(cache_path)
|
38
|
+
end
|
23
39
|
end
|
24
40
|
|
25
41
|
def create_branches
|
@@ -45,7 +61,7 @@ module Lifestream
|
|
45
61
|
private
|
46
62
|
|
47
63
|
def raise_method_error method
|
48
|
-
raise Lifestream::Channel::MethodError, "Method `#{method}
|
64
|
+
raise Lifestream::Channel::MethodError, "Method `#{method}' must be overriden in the child class"
|
49
65
|
end
|
50
66
|
|
51
67
|
class MethodError < StandardError; end
|
data/lib/lifestream.rb
CHANGED
@@ -8,10 +8,16 @@ module Lifestream
|
|
8
8
|
# Defaults to true
|
9
9
|
# * config: Path to the lifestream.yml file that contains the feeds to download.
|
10
10
|
# Defaults to gem location, you will probably want to set this
|
11
|
+
# * cache: The path that the downloaded feeds should be cached in, defaults to tmp
|
12
|
+
# Set cache to false to disable it
|
13
|
+
# * cache_expiration: The amount of time that the cache is fresh for
|
14
|
+
# Defaults to 1 hour
|
11
15
|
def self.options
|
12
16
|
@options ||= {
|
13
17
|
:config => 'lifestream.yml',
|
14
|
-
:whiny => true
|
18
|
+
:whiny => true,
|
19
|
+
:cache => 'tmp',
|
20
|
+
:cache_expiration => (60 * 60 * 1)
|
15
21
|
}
|
16
22
|
end
|
17
23
|
|