Initial commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
class Api::Json::UploadsController < Api::ApplicationController
|
||||
|
||||
ssl_required :create
|
||||
|
||||
skip_before_filter :verify_authenticity_token
|
||||
before_filter :api_or_user_authorization_required
|
||||
|
||||
def create
|
||||
@stats_aggregator.timing('uploads.create') do
|
||||
|
||||
begin
|
||||
temp_file = filename = filedata = nil
|
||||
|
||||
case
|
||||
when params[:filename].present? && request.body.present?
|
||||
filename = params[:filename]
|
||||
filedata = request.body.read.force_encoding('utf-8')
|
||||
when params[:file].present?
|
||||
filename = params[:file].original_filename
|
||||
filedata = params[:file].read.force_encoding('utf-8')
|
||||
end
|
||||
|
||||
random_token = Digest::SHA2.hexdigest("#{Time.now.utc}--#{filename.object_id.to_s}").first(20)
|
||||
|
||||
file_upload_helper = CartoDB::FileUpload.new(Cartodb.config[:importer].fetch("uploads_path", nil))
|
||||
file_upload_helper.get_uploads_path
|
||||
|
||||
@stats_aggregator.timing('save') do
|
||||
FileUtils.mkdir_p(file_upload_helper.get_uploads_path.join(random_token))
|
||||
file = File.new(file_upload_helper.get_uploads_path.join(random_token).join(File.basename(filename)), 'w')
|
||||
file.write filedata
|
||||
file.close
|
||||
end
|
||||
|
||||
render :json => {:file_uri => file.path[/(\/uploads\/.*)/, 1], :success => true}
|
||||
rescue => e
|
||||
logger.error e
|
||||
logger.error e.backtrace
|
||||
head(400)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def api_or_user_authorization_required
|
||||
api_authorization_required || login_required
|
||||
end
|
||||
private :api_or_user_authorization_required
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user