diff options
| author | mo khan <mo@mokhan.ca> | 2014-09-23 22:28:09 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2014-09-23 22:28:09 -0600 |
| commit | 38966481f46ced078c85812bc3faaf44049bea2f (patch) | |
| tree | 806a8905798ad816d6ac41d159fbac510dd18da0 /app/controllers/admin | |
| parent | d513893b6b8549199a71739f1e152496de1ba16a (diff) | |
update admin section to re-process an image.
Diffstat (limited to 'app/controllers/admin')
| -rw-r--r-- | app/controllers/admin/photos_controller.rb | 32 |
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 |
