Create trace data resource
This commit is contained in:
parent
e310767dcd
commit
b77c9f863d
5 changed files with 167 additions and 118 deletions
41
app/controllers/traces/data_controller.rb
Normal file
41
app/controllers/traces/data_controller.rb
Normal file
|
@ -0,0 +1,41 @@
|
|||
module Traces
|
||||
class DataController < ApplicationController
|
||||
layout "site"
|
||||
|
||||
before_action :authorize_web
|
||||
before_action :set_locale
|
||||
before_action :check_database_readable
|
||||
|
||||
authorize_resource :class => Trace
|
||||
|
||||
before_action :offline_redirect
|
||||
|
||||
def show
|
||||
trace = Trace.visible.find(params[:trace_id])
|
||||
|
||||
if trace.public? || (current_user && current_user == trace.user)
|
||||
if Acl.no_trace_download(request.remote_ip)
|
||||
head :forbidden
|
||||
elsif 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 :not_found
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
head :not_found
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def offline_redirect
|
||||
render :template => "traces/offline" if Settings.status == "gpx_offline"
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue