64: def Distribution.download_md_contents(url, md)
65:
66: data_file = nil
67: journal_file = nil
68:
69: md['Contents'].each do |file|
70: UI.start_finish("Downloading #{file['Name']}") do
71: data = nil
72: if File.exists? file['Name']
73: UI.event :info, "Already exists, will just digest and use the existing one"
74: data = File.read file['Name']
75: else
76: open(URI.parse(url + "/" + file['Name'])) { |f| data = f.read }
77: end
78:
79: digest = Digest::MD5.hexdigest(data)
80: if digest == file['Digest']
81:
82: File.open(file['Name'], "wb") {|f| f.write(data) }
83: else
84: UI.failure :security, "Digest of downloaded file #{file['Name']} failed, digests do not match"
85: end
86: end
87:
88: if file['Purpose'] == 'data'
89: data_file = file['Name']
90: elsif file['Purpose'] == 'journal'
91: journal_file = file['Name']
92: else
93: UI.event :warn, "Ignoring file #{file['Name']} since not needed"
94: end
95: end
96:
97: return [data_file, journal_file]
98: end