summaryrefslogtreecommitdiff
path: root/app/controllers/admin
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2014-09-23 22:28:09 -0600
committermo khan <mo@mokhan.ca>2014-09-23 22:28:09 -0600
commit38966481f46ced078c85812bc3faaf44049bea2f (patch)
tree806a8905798ad816d6ac41d159fbac510dd18da0 /app/controllers/admin
parentd513893b6b8549199a71739f1e152496de1ba16a (diff)
update admin section to re-process an image.
Diffstat (limited to 'app/controllers/admin')
-rw-r--r--app/controllers/admin/photos_controller.rb32
1 files changed, 31 insertions, 1 deletions
diff --git a/app/controllers/admin/photos_controller.rb b/app/controllers/admin/photos_controller.rb
index 6af6ac0f..0fedcc79 100644
--- a/app/controllers/admin/photos_controller.rb
+++ b/app/controllers/admin/photos_controller.rb
@@ -1,7 +1,9 @@
module Admin
class PhotosController < AdminController
- def initialize(photo_repository = Photo)
+ def initialize(photo_repository = Photo, message_bus = Spank::IOC.resolve(:message_bus), storage = Spank::IOC.resolve(:blob_storage))
@photo_repository = photo_repository
+ @bus = message_bus
+ @storage = storage
super()
end
@@ -12,5 +14,33 @@ module Admin
def show
@photo = @photo_repository.find(params[:id])
end
+
+ def update
+ photo = @photo_repository.find(params[:id])
+ original = OriginalVersion.new(photo)
+ key = original.create_key
+ @storage.download(key) do |file|
+ @bus.publish(:upload_photo, {
+ photo_id: photo.id,
+ file_path: move_to_temporary_storage(file.path, File.basename(key))
+ })
+ end
+
+ redirect_to admin_photos_path
+ end
+
+ private
+
+ def move_to_temporary_storage(temp_file_path, original_filename)
+ "#{create_tmp_dir}/#{original_filename}".tap do |new_path|
+ FileUtils.mv(temp_file_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
end