"/home/osm/gpx/#{id}.gpx"
end
+ def mime_type
+ return `file -bi #{trace_name}`.chomp
+ end
+
+ def to_xml
+ doc = OSM::API.new.get_xml_doc
+ doc.root << to_xml_node()
+ return doc
+ end
+
def to_xml_node
el1 = XML::Node.new 'gpx_file'
el1['id'] = self.id.to_s
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 -b #{trace_name}`.chomp
- gzipped = filetype =~ /^gzip/
- zipped = filetype =~ /^Zip/
+ filetype = `file -bz #{trace_name}`.chomp
+ gzipped = filetype =~ /gzip compressed/
+ bzipped = filetype =~ /bzip2 compressed/
+ zipped = filetype =~ /Zip archive/
+ tarred = filetype =~ /tar archive/
- if gzipped
+ if tarred and gzipped then
+ filename = tempfile = "/tmp/#{rand}"
+ system("tar -zxOf #{trace_name} > #{filename}")
+ elsif tarred and bzipped then
+ filename = tempfile = "/tmp/#{rand}"
+ system("tar -jxOf #{trace_name} > #{filename}")
+ elsif tarred
+ filename = tempfile = "/tmp/#{rand}"
+ system("tar -xOf #{trace_name} > #{filename}")
+ elsif gzipped
filename = tempfile = "/tmp/#{rand}"
system("gunzip -c #{trace_name} > #{filename}")
+ elsif bzipped
+ filename = tempfile = "/tmp/#{rand}"
+ system("bunzip2 -c #{trace_name} > #{filename}")
elsif zipped
filename = tempfile = "/tmp/#{rand}"
system("unzip -p #{trace_name} > #{filename}")