109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/arvados.rb', line 109
def discovery_document(api, version)
api = api.to_s
discovery_uri = self.discovery_uri(api, version)
discovery_uri_hash = Digest::MD5.hexdigest(discovery_uri)
return @discovery_documents[discovery_uri_hash] ||=
begin
cached_doc = File.expand_path "~/.cache/arvados/discovery-#{discovery_uri_hash}.json" rescue nil
if cached_doc.nil? or not File.exist?(cached_doc) or (Time.now - File.mtime(cached_doc)) > 86400
response = self.execute!(:http_method => :get,
:uri => discovery_uri,
:authenticated => false)
begin
FileUtils.makedirs(File.dirname cached_doc)
File.open(cached_doc, 'w') do |f|
f.puts response.body
end
rescue
return JSON.load response.body
end
end
File.open(cached_doc) { |f| JSON.load f }
end
end
|