diff --git a/lib/roo/excel.rb b/lib/roo/excel.rb index 92a1e357..97e30bb9 100644 --- a/lib/roo/excel.rb +++ b/lib/roo/excel.rb @@ -19,7 +19,7 @@ class Roo::Excel < Roo::GenericSpreadsheet def initialize(filename, packed = nil, file_warning = :error) file_type_check(filename,'.xls','an Excel', file_warning, packed) make_tmpdir do |tmpdir| - filename = open_from_uri(filename, tmpdir) if filename[0,7] == "http://" + filename = open_from_uri(filename, tmpdir) if uri?(filename) filename = open_from_stream(filename[7..-1], tmpdir) if filename[0,7] == "stream:" filename = unzip(filename, tmpdir) if packed == :zip diff --git a/lib/roo/excel2003xml.rb b/lib/roo/excel2003xml.rb index b35cdb7b..c2b9dbd6 100644 --- a/lib/roo/excel2003xml.rb +++ b/lib/roo/excel2003xml.rb @@ -10,7 +10,7 @@ class Roo::Excel2003XML < Roo::GenericSpreadsheet # values for packed: :zip def initialize(filename, packed=nil, file_warning=:error) make_tmpdir do |tmpdir| - filename = open_from_uri(filename, tmpdir) if filename[0,7] == "http://" + filename = open_from_uri(filename, tmpdir) if uri?(filename) filename = unzip(filename, tmpdir) if packed == :zip file_type_check(filename,'.xml','an Excel 2003 XML', file_warning) diff --git a/lib/roo/excelx.rb b/lib/roo/excelx.rb index 94404ac0..34bd4beb 100644 --- a/lib/roo/excelx.rb +++ b/lib/roo/excelx.rb @@ -87,7 +87,7 @@ class Roo::Excelx < Roo::GenericSpreadsheet def initialize(filename, packed=nil, file_warning = :error) #, create = false) file_type_check(filename,'.xlsx','an Excel-xlsx', file_warning, packed) make_tmpdir do |tmpdir| - filename = open_from_uri(filename, tmpdir) if filename[0,7] == "http://" + filename = open_from_uri(filename, tmpdir) if uri?(filename) filename = unzip(filename, tmpdir) if packed == :zip @cells_read = Hash.new @filename = filename diff --git a/lib/roo/generic_spreadsheet.rb b/lib/roo/generic_spreadsheet.rb index 2ed5c8f3..d42d288c 100644 --- a/lib/roo/generic_spreadsheet.rb +++ b/lib/roo/generic_spreadsheet.rb @@ -626,6 +626,10 @@ def normalize(row,col) return row,col end + def uri?(filename) + filename.start_with?("http://", "https://") + end + def open_from_uri(uri, tmpdir) require 'open-uri' response = '' diff --git a/lib/roo/openoffice.rb b/lib/roo/openoffice.rb index b890395f..2f7fbc12 100644 --- a/lib/roo/openoffice.rb +++ b/lib/roo/openoffice.rb @@ -37,7 +37,7 @@ def process_zipfile(tmpdir, zip, path='') def initialize(filename, packed=nil, file_warning=:error, tmpdir_root=nil) file_type_check(filename,'.ods','an Roo::Openoffice', file_warning, packed) make_tmpdir(tmpdir_root) do |tmpdir| - filename = open_from_uri(filename, tmpdir) if filename[0,7] == "http://" + filename = open_from_uri(filename, tmpdir) if uri?(filename) filename = unzip(filename, tmpdir) if packed == :zip @cells_read = Hash.new #TODO: @cells_read[:default] = false