class TinOpener::DataFileProcessor
Public Class Methods
new(args = {})
click to toggle source
# File lib/tin_opener/data_file_processor.rb, line 5 def initialize(args = {}) @file = args.fetch(:file) end
Private Instance Methods
file_type_processor()
click to toggle source
# File lib/tin_opener/data_file_processor.rb, line 13 def file_type_processor @file_type_processor ||= case mime_type when 'text/csv', 'text/comma-separated-values', 'text/plain' DataFileProcessors::CsvProcessor.new(file: @file) when 'application/excel' DataFileProcessors::XlsProcessor.new(file: @file) else fail UnsupportedDataFileError end end
mime_type()
click to toggle source
TODO: Current implementation extracts MIME from file extension.
This will fail for files with bad extensions (a CSV renamed as a XLS), or with files with no extension Options to consider: - Use ruby-filemagic gem - Use or compare with output from (*nix only) `file #{@file.path} --mime-type`.gsub("\n", '').split(':')[1].split('/')[1].gsub('x-', '').gsub(/jpeg/, 'jpg').gsub(/text/, 'txt').gsub(/x-/, '')
# File lib/tin_opener/data_file_processor.rb, line 32 def mime_type @mime_type ||= MIME::Types.type_for(@file.path).first.try(:simplified) end