Commit 6cf1b79c

mo khan <mo@mokhan.ca>
2015-01-21 04:26:54
make the version do the download.
1 parent 204c917
Changed files (3)
app/jobs/re_process_photo_job.rb
@@ -2,10 +2,8 @@ class ReProcessPhotoJob < ActiveJob::Base
   queue_as :default
 
   def perform(photo)
-    key = OriginalVersion.new(photo).create_key
-    blob_storage.download(key) do |file|
-      temp_file = file_storage.store(file)
-      ProcessPhotoJob.perform_later(photo, temp_file)
+    photo.version(:original).download(blob_storage) do |file|
+      ProcessPhotoJob.perform_later(photo, file_storage.store(file))
     end
   end
 
app/models/photo.rb
@@ -3,7 +3,7 @@ class Photo < ActiveRecord::Base
   scope :processed, ->{ where(image_processing: nil) }
 
   def url_for(version_key, asset_host = ENV['ASSET_HOST'])
-    versions.find { |version| version.for?(version_key) }.url_for(asset_host)
+    version(version_key).url_for(asset_host)
   end
 
   def is_processed?
@@ -24,6 +24,10 @@ class Photo < ActiveRecord::Base
     end
   end
 
+  def version(key)
+    versions.find { |version| version.for?(key) }
+  end
+
   private
 
   def versions
app/models/version.rb
@@ -1,29 +1,35 @@
-  class Version
-    attr_reader :key, :prefix, :photo
+class Version
+  attr_reader :key, :prefix, :photo
 
-    def initialize(photo, key, prefix)
-      @key = key
-      @prefix = prefix
-      @photo = photo
-    end
+  def initialize(photo, key, prefix)
+    @key = key
+    @prefix = prefix
+    @photo = photo
+  end
 
-    def adjust(image)
-      fail "Please override with version specific behaviours"
-    end
+  def adjust(image)
+    fail "Please override with version specific behaviours"
+  end
 
-    def for?(other_key)
-      key == other_key
-    end
+  def for?(other_key)
+    key == other_key
+  end
 
-    def url_for(asset_host)
-      if photo.is_processed?
-        "#{asset_host}/#{create_key}"
-      else
-        ActionController::Base.helpers.asset_path("#{key}_default.png")
-      end
+  def url_for(asset_host)
+    if photo.is_processed?
+      "#{asset_host}/#{blob_key}"
+    else
+      ActionController::Base.helpers.asset_path("#{key}_default.png")
     end
+  end
+
+  def blob_key
+    "uploads/photo/image/#{photo.id}/#{prefix}#{photo.image}"
+  end
 
-    def create_key
-      "uploads/photo/image/#{photo.id}/#{prefix}#{photo.image}"
+  def download(blob_storage)
+    blob_storage.download(blob_key) do |file|
+      yield file
     end
   end
+end