Commit 05dd5e75
Changed files (2)
app
controllers
services
application
app/controllers/my/avatars_controller.rb
@@ -6,7 +6,7 @@ module My
end
def update
- @avatar.attach(params[:avatar][:avatar])
+ UploadAvatar.new.run(@avatar, params)
redirect_to edit_my_avatar_path(current_user), :notice => t(:avatar_uploaded)
end
app/services/application/upload_avatar.rb
@@ -0,0 +1,33 @@
+class UploadAvatar
+ def initialize(message_bus = Spank::IOC.resolve(:message_bus))
+ @message_bus = message_bus
+ end
+
+ def run(avatar, params)
+ @message_bus.publish(:upload_avatar, create_message_from(avatar, params))
+ end
+
+ private
+
+ def create_message_from(avatar, payload)
+ image = payload[:avatar][:avatar]
+ {
+ cake_id: avatar.id,
+ file_path: move_to_temporary_storage(image),
+ original_filename: image.original_filename,
+ content_type: image.content_type,
+ }
+ end
+
+ def move_to_temporary_storage(image)
+ "#{create_tmp_dir}/#{image.original_filename}".tap do |new_path|
+ FileUtils.mv(image.path, new_path)
+ end
+ end
+
+ def create_tmp_dir
+ Rails.root.join("tmp/uploads/#{SecureRandom.uuid}").tap do |directory|
+ system "mkdir -p #{directory}"
+ end
+ end
+end