master
 1class Version
 2  attr_reader :key, :prefix, :photo
 3
 4  def initialize(photo, key, prefix)
 5    @key = key
 6    @prefix = prefix
 7    @photo = photo
 8  end
 9
10  def adjust(_image)
11    fail "Please override with version specific behaviours"
12  end
13
14  def for?(other_key)
15    key == other_key
16  end
17
18  def url_for(asset_host)
19    if photo.is_processed?
20      "#{asset_host}/#{blob_key}"
21    else
22      ActionController::Base.helpers.asset_path(
23        "#{key}_default.png",
24        skip_pipeline: true
25      )
26    end
27  end
28
29  def blob_key
30    "uploads/photo/image/#{photo.id}/#{prefix}#{photo.image}"
31  end
32
33  def download(blob_storage)
34    blob_storage.download(blob_key) do |file|
35      yield file
36    end
37  end
38end