-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfetcher.rb
33 lines (28 loc) · 816 Bytes
/
fetcher.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
require 'date'
require 'open-uri'
require 'pathname'
module Fetcher
CACHE_DIR = Pathname.new(".cache/#{Date.today.strftime('%y%m%d')}")
def _get_cache_file_and_data(url, cache_dir)
cache_dir.mkdir unless cache_dir.exist?
cache_file = cache_dir.join(url.split('/')[-1])
data = if cache_file.exist?
STDERR.puts "Reading data from #{cache_file} ..."
cache_file.read
else
cache_file.open('w') { |f|
data = open(URI.escape(url)).read
STDERR.puts "Caching data to #{cache_file} ..."
f.write(data)
data
}
end
[cache_file, data]
end
def get_cache_file(url, cache_dir=CACHE_DIR)
_get_cache_file_and_data(url, cache_dir)[0]
end
def get_data(url, cache_dir=CACHE_DIR)
_get_cache_file_and_data(url, cache_dir)[1]
end
end