]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/trace.rb
Merge remote-tracking branch 'upstream/pull/3061'
[rails.git] / app / models / trace.rb
index 93486f9edf989c6f0235c662886f4090ab42340e..0860d2b31954e1a3d255594650b071443399f702 100644 (file)
@@ -125,19 +125,17 @@ class Trace < ApplicationRecord
     zipped = filetype.include?("Zip archive")
     tarred = filetype.include?("tar archive")
 
-    mimetype = if gzipped
-                 "application/x-gzip"
-               elsif bzipped
-                 "application/x-bzip2"
-               elsif zipped
-                 "application/x-zip"
-               elsif tarred
-                 "application/x-tar"
-               else
-                 "application/gpx+xml"
-               end
-
-    mimetype
+    if gzipped
+      "application/x-gzip"
+    elsif bzipped
+      "application/x-bzip2"
+    elsif zipped
+      "application/x-zip"
+    elsif tarred
+      "application/x-tar"
+    else
+      "application/gpx+xml"
+    end
   end
 
   def extension_name
@@ -147,39 +145,38 @@ class Trace < ApplicationRecord
     zipped = filetype.include?("Zip archive")
     tarred = filetype.include?("tar archive")
 
-    extension = if tarred && gzipped
-                  ".tar.gz"
-                elsif tarred && bzipped
-                  ".tar.bz2"
-                elsif tarred
-                  ".tar"
-                elsif gzipped
-                  ".gpx.gz"
-                elsif bzipped
-                  ".gpx.bz2"
-                elsif zipped
-                  ".zip"
-                else
-                  ".gpx"
-                end
-
-    extension
+    if tarred && gzipped
+      ".tar.gz"
+    elsif tarred && bzipped
+      ".tar.bz2"
+    elsif tarred
+      ".tar"
+    elsif gzipped
+      ".gpx.gz"
+    elsif bzipped
+      ".gpx.bz2"
+    elsif zipped
+      ".zip"
+    else
+      ".gpx"
+    end
   end
 
-  def update_from_xml(xml, create = false)
+  def update_from_xml(xml, create: false)
     p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
     doc = p.parse
+    pt = doc.find_first("//osm/gpx_file")
 
-    doc.find("//osm/gpx_file").each do |pt|
-      return update_from_xml_node(pt, create)
+    if pt
+      update_from_xml_node(pt, :create => create)
+    else
+      raise OSM::APIBadXMLError.new("trace", xml, "XML doesn't contain an osm/gpx_file element.")
     end
-
-    raise OSM::APIBadXMLError.new("trace", xml, "XML doesn't contain an osm/gpx_file element.")
   rescue LibXML::XML::Error, ArgumentError => e
     raise OSM::APIBadXMLError.new("trace", xml, e.message)
   end
 
-  def update_from_xml_node(pt, create = false)
+  def update_from_xml_node(pt, create: false)
     raise OSM::APIBadXMLError.new("trace", pt, "visibility missing") if pt["visibility"].nil?
 
     self.visibility = pt["visibility"]