Files
old-holivud2/app/controllers/api/direct_uploads_controller.rb

51 lines
1.2 KiB
Ruby
Raw Normal View History

2020-06-16 17:11:04 +02:00
# Duplicated from ActiveStorage::DirectUploadsController
# https://github.com/rails/rails/blob/v6.0.0/activestorage/app/controllers/active_storage/direct_uploads_controller.rb
class Api::DirectUploadsController < Api::ApiController
include ActiveStorage::SetCurrent
2020-06-17 14:39:10 +02:00
deserializable_resource :direct_upload, only: [:create]
2020-06-16 17:11:04 +02:00
def create
2020-06-17 14:39:10 +02:00
blob = ActiveStorage::Blob.create_before_direct_upload!(blob_params)
2020-06-16 17:11:04 +02:00
render jsonapi: DirectUpload.new(blob)
end
private
2020-06-17 14:39:10 +02:00
def blob_params
params.
require(:direct_upload).
permit(:type, :filename, :byte_size, :checksum, :content_type, :metadata).
except(:type).
to_h.symbolize_keys
end
class DeserializableDirectUpload < JSONAPI::Deserializable::Resource
attributes :filename, :byte_size, :checksum, :content_type, :metadata
2020-06-16 17:11:04 +02:00
end
class SerializableDirectUpload < JSONAPI::Serializable::Resource
type 'direct_upload'
attributes :id, :key, :signed_id, :url, :headers
end
class DirectUpload
delegate :id, :key, :signed_id, to: :blob
attr_reader :blob
def initialize(blob)
@blob = blob
end
def url
blob.service_url_for_direct_upload
end
def headers
blob.service_headers_for_direct_upload
end
end
end