Sha256: 17cd4d4e05cbbb378c6cebd6251d5866b223eb0bbf879cce42d5d6144d8673bd

Contents?: true

Size: 995 Bytes

Versions: 63

Compression:

Stored size: 995 Bytes

Contents

# frozen_string_literal: true

module Alchemy
  class Picture < BaseRecord
    class Url
      attr_reader :variant

      # @param [Alchemy::PictureVariant]
      #
      def initialize(variant)
        raise ArgumentError, "Variant missing!" if variant.nil?

        @variant = variant
      end

      # The URL to a variant of a picture
      #
      # @return [String]
      #
      def call(params = {})
        return variant.image.url(params) unless processible_image?

        "/#{uid}"
      end

      private

      def processible_image?
        variant.image.is_a?(::Dragonfly::Job)
      end

      def uid
        signature = PictureThumb::Signature.call(variant)
        thumb = variant.picture.thumbs.detect { |t| t.signature == signature }
        if thumb
          uid = thumb.uid
        else
          uid = PictureThumb::Uid.call(signature, variant)
          PictureThumb.generator_class.call(variant, signature, uid)
        end
        uid
      end
    end
  end
end

Version data entries

63 entries across 63 versions & 1 rubygems

Version Path
alchemy_cms-6.0.14 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.13 app/models/alchemy/picture/url.rb
alchemy_cms-6.1.1 app/models/alchemy/picture/url.rb
alchemy_cms-6.1.0 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.12 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.11 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.10 app/models/alchemy/picture/url.rb
alchemy_cms-5.3.8 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.9 app/models/alchemy/picture/url.rb
alchemy_cms-5.3.7 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.8 app/models/alchemy/picture/url.rb
alchemy_cms-5.3.6 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.7 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.6 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.5 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.4 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.3 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.2 app/models/alchemy/picture/url.rb
alchemy_cms-6.0.1 app/models/alchemy/picture/url.rb
alchemy_cms-5.3.5 app/models/alchemy/picture/url.rb