Module: SpatialFeatures::Download
- Defined in:
- lib/spatial_features/download.rb
Class Method Summary collapse
- .entries(file) ⇒ Object
- .find_in_zip(file, find:, **unzip_options) ⇒ Object
- .normalize_file(file) ⇒ Object
-
.open(file) ⇒ Object
file can be a url, path, or file, any of which can return be a zipped archive.
-
.open_each(path_or_url, unzip: nil, **unzip_options) ⇒ Object
file can be a url, path, or file, any of which can return be a zipped archive.
Class Method Details
.entries(file) ⇒ Object
32 33 34 35 36 |
# File 'lib/spatial_features/download.rb', line 32 def self.entries(file) file = Kernel.open(file) file = normalize_file(file) if file.is_a?(StringIO) Unzip.entries(file) end |
.find_in_zip(file, find:, **unzip_options) ⇒ Object
38 39 40 |
# File 'lib/spatial_features/download.rb', line 38 def self.find_in_zip(file, find:, **) Unzip.paths(file, :find => find, **) end |
.normalize_file(file) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/spatial_features/download.rb', line 24 def self.normalize_file(file) Tempfile.new.tap do |temp| temp.binmode temp.write(file.read) temp.rewind end end |
.open(file) ⇒ Object
file can be a url, path, or file, any of which can return be a zipped archive
6 7 8 9 10 |
# File 'lib/spatial_features/download.rb', line 6 def self.open(file) file = URI.open(file) file = normalize_file(file) if file.is_a?(StringIO) return file end |
.open_each(path_or_url, unzip: nil, **unzip_options) ⇒ Object
file can be a url, path, or file, any of which can return be a zipped archive
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/spatial_features/download.rb', line 13 def self.open_each(path_or_url, unzip: nil, **) file = Download.open(path_or_url) files = if unzip && Unzip.is_zip?(file) find_in_zip(file, find: unzip, **) else [file] end return files.map { |f| File.open(f) } end |