Refactor micropub specific things out to a slice
This commit is contained in:
29
slices/micropub/actions/media/create.rb
Normal file
29
slices/micropub/actions/media/create.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
module Micropub
|
||||
module Actions
|
||||
module Media
|
||||
class Create < Action
|
||||
include Deps["commands.media.upload"]
|
||||
before :authenticate!
|
||||
|
||||
def handle(req, res)
|
||||
data = req.params[:file]
|
||||
|
||||
halt 401 unless verify_scope(req: req, scope: :create) || verify_scope(req: req, scope: :media)
|
||||
|
||||
upload_result = upload.call(file: data)
|
||||
|
||||
res.status = 422 if upload_result.failure?
|
||||
|
||||
if upload_result.success?
|
||||
res.status = 201
|
||||
res.headers["Location"] = upload_result.value!
|
||||
res.headers["HX-Refresh"] = true
|
||||
res.body = {
|
||||
url: upload_result.value!
|
||||
}.to_json
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
29
slices/micropub/actions/media/show.rb
Normal file
29
slices/micropub/actions/media/show.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
module Micropub
|
||||
module Actions
|
||||
module Media
|
||||
class Show < Action
|
||||
include Deps["settings"]
|
||||
|
||||
def handle(req, res)
|
||||
res.body = if req.params[:q] == "source"
|
||||
{
|
||||
items: media_url(req.params[:file])
|
||||
}.to_json
|
||||
else
|
||||
"Micropub media endpoint"
|
||||
end
|
||||
|
||||
res.status = 200
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def media_url(filename)
|
||||
pathname = Time.now.strftime("%m-%Y")
|
||||
|
||||
File.join(settings.micropub_site_url, "/media/", "/#{pathname}/", filename).to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user