gem "logstasher"
# Used to generate images for traces
+gem "mimemagic"
+gem "ffi-libarchive"
+gem "bzip2-ffi"
gem "gd2-ffij", ">= 0.4.0"
# Used for browser detection
def import
logger.info("GPX Import importing #{name} (#{id}) from #{user.email}")
- gpx = ::GPX::File.new(xml_file)
+ gpx = ::GPX::File.new(trace_name)
f_lat = 0
f_lon = 0
@file = file
end
- def points
- return enum_for(:points) unless block_given?
-
- @possible_points = 0
- @actual_points = 0
- @tracksegs = 0
-
- @file.rewind
-
- reader = XML::Reader.io(@file)
-
+ def parse_file(reader)
point = nil
while reader.read
end
end
+ def points(&block)
+ return enum_for(:points) unless block_given?
+
+ @possible_points = 0
+ @actual_points = 0
+ @tracksegs = 0
+
+ begin
+ Archive::Reader.open_filename(@file).each_entry_with_data do |_entry, data|
+ parse_file(XML::Reader.string(data), &block)
+ end
+ rescue Archive::Error
+ io = ::File.open(@file)
+
+ case MimeMagic.by_magic(io).type
+ when "application/gzip" then io = Zlib::GzipReader.open(@file)
+ when "application/x-bzip" then io = Bzip2::FFI::Reader.open(@file)
+ end
+
+ parse_file(XML::Reader.io(io), &block)
+ end
+ end
+
def picture(min_lat, min_lon, max_lat, max_lon, num_points)
nframes = 10
width = 250