X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/dcad29dad0d29e22ffa0c34a8d9b43cbf5d64f12..9866a7ec45fdc650a17229aabb8147e430cc5433:/app/models/trace.rb?ds=sidebyside diff --git a/app/models/trace.rb b/app/models/trace.rb index 92cc39678..155e495a3 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -73,7 +73,48 @@ class Trace < ActiveRecord::Base end def mime_type - return `file -bi #{trace_name}`.chomp + filetype = `/usr/bin/file -bz #{trace_name}`.chomp + gzipped = filetype =~ /gzip compressed/ + bzipped = filetype =~ /bzip2 compressed/ + zipped = filetype =~ /Zip archive/ + + if gzipped then + mimetype = "application/x-gzip" + elsif bzipped then + mimetype = "application/x-bzip2" + elsif zipped + mimetype = "application/x-zip" + else + mimetype = "text/xml" + end + + return mimetype + end + + def extension_name + filetype = `/usr/bin/file -bz #{trace_name}`.chomp + gzipped = filetype =~ /gzip compressed/ + bzipped = filetype =~ /bzip2 compressed/ + zipped = filetype =~ /Zip archive/ + tarred = filetype =~ /tar archive/ + + if tarred and gzipped then + extension = ".tar.gz" + elsif tarred and bzipped then + extension = ".tar.bz2" + elsif tarred + extension = ".tar" + elsif gzipped + extension = ".gpx.gz" + elsif bzipped + extension = ".gpx.bz2" + elsif zipped + extension = ".zip" + else + extension = ".gpx" + end + + return extension end def to_xml @@ -100,7 +141,7 @@ class Trace < ActiveRecord::Base logger.info("GPX Import importing #{name} (#{id}) from #{user.email}") # TODO *nix specific, could do to work on windows... would be functionally inferior though - check for '.gz' - filetype = `file -bz #{trace_name}`.chomp + filetype = `/usr/bin/file -bz #{trace_name}`.chomp gzipped = filetype =~ /gzip compressed/ bzipped = filetype =~ /bzip2 compressed/ zipped = filetype =~ /Zip archive/ @@ -147,7 +188,6 @@ class Trace < ActiveRecord::Base tp.lng = point['longitude'].to_f tp.altitude = point['altitude'].to_f tp.timestamp = point['timestamp'] - tp.user_id = user.id tp.gpx_id = id tp.trackid = point['segment'].to_i tp.save!