Files
adamantium/app/commands/media/upload.rb
2023-01-31 19:20:25 +11:00

40 lines
1.0 KiB
Ruby

# frozen_string_literal: true
require "securerandom"
module Adamantium
module Commands
module Media
class Upload < Command
include Deps["settings", "logger"]
def call(file:)
pathname = Time.now.strftime("%m-%Y")
filename = "#{SecureRandom.uuid}#{File.extname(file[:filename])}"
dirname = File.join("public", "media", pathname)
logger.info(dirname)
logger.info(File.directory?(dirname))
unless File.directory?(dirname)
FileUtils.mkdir_p(dirname)
end
begin
File.write(File.join(dirname, filename), file[:tempfile].read)
logger.info("I WROTE")
rescue Errno::ENOENT, NoMethodError => e
logger.info("I FAILED to write - #{e}")
return Failure(e.message)
end
upload_path = File.join(settings.micropub_site_url, "/media/", "/#{pathname}/", filename).to_s
logger.info(upload_path)
Success(upload_path)
end
end
end
end
end