23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/httparty/httpcache.rb', line 23
def perform_with_caching
if cacheable?
if response_in_cache?
log_message("Retrieving response from cache")
response_from(response_body_from_cache)
else
validate
begin
httparty_response = timeout(timeout_length) do
perform_without_caching
end
if httparty_response.response.is_a?(Net::HTTPSuccess)
log_message("Storing good response in cache")
store_in_cache(httparty_response.body)
store_backup(httparty_response.body)
httparty_response
else
retrieve_and_store_backup(httparty_response)
end
rescue *exceptions
retrieve_and_store_backup
end
end
else
log_message("Caching off")
perform_without_caching
end
end
|