Module: RR::CachedHttp
- Defined in:
- lib/refined-refinements/cached_http.rb
Class Method Summary collapse
- .cache_dir ⇒ Object
- .cache_dir=(cache_dir) ⇒ Object
- .cache_path(url) ⇒ Object
- .fetch(url) ⇒ Object
- .get(url) ⇒ Object
- .offline=(boolean) ⇒ Object
- .offline? ⇒ Boolean
- .retrieve_from_cache(url, tried_to_fetch = false) ⇒ Object
Class Method Details
.cache_dir ⇒ Object
10 11 12 |
# File 'lib/refined-refinements/cached_http.rb', line 10 def self.cache_dir @cache_dir || '/tmp' end |
.cache_dir=(cache_dir) ⇒ Object
14 15 16 |
# File 'lib/refined-refinements/cached_http.rb', line 14 def self.cache_dir=(cache_dir) @cache_dir = cache_dir end |
.cache_path(url) ⇒ Object
26 27 28 |
# File 'lib/refined-refinements/cached_http.rb', line 26 def self.cache_path(url) File.join(self.cache_dir, Base64.encode64(url).chomp.split("\n").last) end |
.fetch(url) ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/refined-refinements/cached_http.rb', line 50 def self.fetch(url) open(url).read.tap do |fetched_data| File.open(self.cache_path(url), 'w') do |file| file.write(fetched_data) end end end |
.get(url) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/refined-refinements/cached_http.rb', line 30 def self.get(url) if self.offline? self.retrieve_from_cache(url) else self.fetch(url) end rescue SocketError self.retrieve_from_cache(url, true) rescue Exception => e p [:e, e]; raise e end |
.offline=(boolean) ⇒ Object
22 23 24 |
# File 'lib/refined-refinements/cached_http.rb', line 22 def self.offline=(boolean) @offline = boolean end |
.offline? ⇒ Boolean
18 19 20 |
# File 'lib/refined-refinements/cached_http.rb', line 18 def self.offline? @offline end |
.retrieve_from_cache(url, tried_to_fetch = false) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/refined-refinements/cached_http.rb', line 42 def self.retrieve_from_cache(url, tried_to_fetch = false) if File.exist?(self.cache_path(url)) File.read(self.cache_path(url)) else raise "URL #{url} is not cached#{" and can't be fetched" if tried_to_fetch}." end end |