]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/api/traces_controller.rb
Merge remote-tracking branch 'upstream/pull/5937'
[rails.git] / app / controllers / api / traces_controller.rb
index 956bcde6e82dccabb23e022919d0d87673e74ec3..00540a120e4da0c3c014befdfa5ffaf75098141b 100644 (file)
@@ -1,21 +1,24 @@
 module Api
   class TracesController < ApiController
-    before_action :check_database_readable, :except => [:show, :data]
-    before_action :check_database_writable, :only => [:create, :update, :destroy]
+    before_action :check_api_writable, :only => [:create, :update, :destroy]
+    before_action :set_request_formats, :only => [:show]
     before_action :set_locale
     before_action :authorize
 
     authorize_resource
 
-    before_action :check_api_readable, :only => [:show, :data]
-    before_action :check_api_writable, :only => [:create, :update, :destroy]
-    before_action :offline_error, :only => [:create, :destroy, :data]
-    around_action :api_call_handle_error
+    before_action :offline_error, :only => [:create, :destroy]
+    skip_around_action :api_call_timeout, :only => :create
 
     def show
       @trace = Trace.visible.find(params[:id])
 
-      head :forbidden unless @trace.public? || @trace.user == current_user
+      return head :forbidden unless @trace.public? || @trace.user == current_user
+
+      respond_to do |format|
+        format.xml
+        format.json
+      end
     end
 
     def create
@@ -74,24 +77,6 @@ module Api
       end
     end
 
-    def data
-      trace = Trace.visible.find(params[:id])
-
-      if trace.public? || trace.user == current_user
-        if request.format == Mime[:xml]
-          send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
-        elsif request.format == Mime[:gpx]
-          send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
-        elsif trace.file.attached?
-          redirect_to rails_blob_path(trace.file, :disposition => "attachment")
-        else
-          send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
-        end
-      else
-        head :forbidden
-      end
-    end
-
     private
 
     def do_create(file, tags, description, visibility)