Files
docuseal/app/controllers/templates_uploads_controller.rb
T

58 lines
1.4 KiB
Ruby
Raw Normal View History

2023-09-14 01:43:08 +03:00
# frozen_string_literal: true
class TemplatesUploadsController < ApplicationController
2023-09-17 00:45:57 +03:00
load_and_authorize_resource :template, parent: false
2023-10-28 23:07:18 +03:00
layout 'plain'
def show; end
2023-09-14 01:43:08 +03:00
def create
2023-10-28 23:07:18 +03:00
url_params = create_file_params_from_url if params[:url].present?
2023-09-19 19:33:34 +03:00
@template.account = current_account
2023-09-17 00:45:57 +03:00
@template.author = current_user
2023-09-22 02:20:38 +03:00
@template.folder = TemplateFolders.find_or_create_by_name(current_user, params[:folder_name])
2023-10-28 23:07:18 +03:00
@template.name = File.basename((url_params || params)[:files].first.original_filename, '.*')
2023-09-14 01:43:08 +03:00
2023-09-17 00:45:57 +03:00
@template.save!
2023-09-14 01:43:08 +03:00
2023-10-28 23:07:18 +03:00
documents = Templates::CreateAttachments.call(@template, url_params || params)
2023-09-14 01:43:08 +03:00
schema = documents.map { |doc| { attachment_uuid: doc.uuid, name: doc.filename.base } }
2023-09-17 00:45:57 +03:00
@template.update!(schema:)
2023-09-14 01:43:08 +03:00
2023-09-17 00:45:57 +03:00
redirect_to edit_template_path(@template)
2023-10-28 23:07:18 +03:00
rescue StandardError => e
Rollbar.error(e) if defined?(Rollbar)
redirect_to root_path, alert: 'Unable to upload file'
end
private
def create_file_params_from_url
tempfile = Tempfile.new
tempfile.binmode
tempfile.write(conn.get(params[:url]).body)
tempfile.rewind
file = ActionDispatch::Http::UploadedFile.new(
tempfile:,
filename: File.basename(
URI.decode_www_form_component(params[:filename].presence || params[:url])
),
type: Marcel::MimeType.for(tempfile)
)
{ files: [file] }
end
def conn
Faraday.new do |faraday|
faraday.response :follow_redirects
end
2023-09-14 01:43:08 +03:00
end
end