このコミットが含まれているのは:
@@ -1,6 +1,29 @@
|
||||
class CountsExportsController < ApplicationController
|
||||
wrap_parameters false
|
||||
|
||||
def prepare
|
||||
locale = resolve_locale!
|
||||
payload = request.request_parameters.merge(request.query_parameters)
|
||||
exporter = CountsExporter.new(payload, language_code: locale.language_code)
|
||||
session[:counts_export_owner] ||= SecureRandom.hex(32)
|
||||
token = CountsExportDownload.prepare(exporter, session[:counts_export_owner])
|
||||
response.headers['Cache-Control'] = 'private, no-store'
|
||||
render json: { token: }
|
||||
rescue ArgumentError, TypeError, KeyError, JSON::ParserError
|
||||
head :bad_request
|
||||
end
|
||||
|
||||
def download
|
||||
file = CountsExportDownload.find(params[:token], session[:counts_export_owner])
|
||||
return head :not_found unless file
|
||||
|
||||
response.headers['Cache-Control'] = 'private, no-store'
|
||||
send_file file.fetch('path'),
|
||||
filename: "counts-#{ file.fetch('resource') }.#{ file.fetch('format') }",
|
||||
type: file['format'] == 'json' ? 'application/json' : 'text/csv',
|
||||
disposition: 'attachment'
|
||||
end
|
||||
|
||||
def index
|
||||
locale = resolve_locale!
|
||||
payload = request.request_parameters.except('authenticity_token')
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする