Module: Cinnabar::Downloader
- Defined in:
- lib/cinnabar/net.rb,
lib/cinnabar/net.rb
Defined Under Namespace
Modules: StrExt, StrMixin, StrRefin
Constant Summary
collapse
- DEFAULT_DL_OPTS =
{
out_dir: 'tmp', file_name: nil,
}.freeze
Class Method Summary
collapse
Class Method Details
48
49
50
51
52
53
|
# File 'lib/cinnabar/net.rb', line 48
def ()
= {
'User-Agent' => 'Mozilla/5.0 (Linux; aarch64 Wayland; rv:138.0) Gecko/20100101 Firefox/138.0',
}
.merge( || {}).transform_keys(&:to_s)
end
|
.determine_filename(file_name, parsed_url) ⇒ String
56
57
58
59
60
61
62
|
# File 'lib/cinnabar/net.rb', line 56
def determine_filename(file_name, parsed_url)
filename = file_name || File.basename(parsed_url.path || '')
case filename.strip
when '', '/' then 'index.html'
else filename
end
end
|
.download(url, opts = {}) ⇒ Integer
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/cinnabar/net.rb', line 31
def download(url, opts = {})
opts = DEFAULT_DL_OPTS.merge(opts)
out_dir, file_name, = opts.values_at(:out_dir, :file_name, :headers)
out_dir = '.' if out_dir.nil?
= ()
parsed_url = Kernel.URI(url)
final_file_name = determine_filename(file_name, parsed_url)
file_path = setup_file_path(out_dir, final_file_name)
Kernel.p file_path
parsed_url
.open()
.then { IO.copy_stream(_1, file_path.to_s) }
end
|
.setup_file_path(out_dir, file_name) ⇒ Pathname
65
66
67
68
69
|
# File 'lib/cinnabar/net.rb', line 65
def setup_file_path(out_dir, file_name)
Kernel.Pathname(out_dir)
.tap(&:mkpath)
.join(file_name)
end
|