Class: Geoblacklight::Download
- Inherits:
-
Object
- Object
- Geoblacklight::Download
show all
- Defined in:
- lib/geoblacklight/download.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(document, options = {}) ⇒ Download
Returns a new instance of Download.
5
6
7
8
|
# File 'lib/geoblacklight/download.rb', line 5
def initialize(document, options = {})
@document = document
@options = options
end
|
Class Method Details
.file_path ⇒ Object
18
19
20
|
# File 'lib/geoblacklight/download.rb', line 18
def self.file_path
Settings.DOWNLOAD_PATH || Rails.root.join("tmp", "cache", "downloads")
end
|
Instance Method Details
#create_download_file ⇒ String
Creates temporary file on file system and renames it if download completes successfully. Will raise and rescue if the wrong file format is downloaded
#download_exists? ⇒ Boolean
26
27
28
|
# File 'lib/geoblacklight/download.rb', line 26
def download_exists?
File.file?(file_path_and_name)
end
|
#downloadable? ⇒ Boolean
10
11
12
|
# File 'lib/geoblacklight/download.rb', line 10
def downloadable?
@document.downloadable?
end
|
#file_name ⇒ Object
14
15
16
|
# File 'lib/geoblacklight/download.rb', line 14
def file_name
"#{@document.id}-#{@options[:type]}.#{@options[:extension]}"
end
|
#file_path_and_name ⇒ Object
22
23
24
|
# File 'lib/geoblacklight/download.rb', line 22
def file_path_and_name
"#{self.class.file_path}/#{file_name}"
end
|
#get ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/geoblacklight/download.rb', line 30
def get
if download_exists?
file_name
else
create_download_file
end
end
|
#initiate_download ⇒ Faraday::Request
Initiates download from a remote source url using the ‘request_params`. Will catch Faraday::ConnectionFailed and Faraday::TimeoutError
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/geoblacklight/download.rb', line 63
def initiate_download
conn = Faraday.new(url: url)
conn.get do |request|
request.params = @options[:request_params]
request.options.timeout = timeout
request.options.open_timeout = timeout
end
rescue Faraday::ConnectionFailed
raise Geoblacklight::Exceptions::ExternalDownloadFailed,
message: "Download connection failed",
url: conn.url_prefix.to_s
rescue Faraday::TimeoutError
raise Geoblacklight::Exceptions::ExternalDownloadFailed,
message: "Download timed out",
url: conn.url_prefix.to_s
end
|
#url_with_params ⇒ String
Creates a download url for the object
83
84
85
|
# File 'lib/geoblacklight/download.rb', line 83
def url_with_params
url + "/?" + URI.encode_www_form(@options[:request_params])
end
|