Sha256: b83853c86a4b856a9d7585e0da294fc74159d18b8495d8778d265516dea21202

Contents?: true

Size: 973 Bytes

Versions: 2

Compression:

Stored size: 973 Bytes

Contents

# frozen_string_literal: true

require 'image_info'

module LinkThumbnailer
  class ImageParser

    attr_reader :images

    def initialize(urls)
      @images = perform? ? image_info(urls) : default_images(urls)
    end

    def size
      images.first.size
    end

    def type
      images.first.type
    end

    private

    def default_images(urls)
      Array(urls).compact.map(&method(:build_default_image))
    end

    def build_default_image(uri)
      NullImage.new(uri)
    end

    def perform?
      ::LinkThumbnailer.page.config.image_stats
    end

    def max_concurrency
      ::LinkThumbnailer.page.config.max_concurrency
    end

    def image_info(urls)
      ::ImageInfo.from(urls, max_concurrency: max_concurrency)
    rescue
      default_images(urls)
    end

    class NullImage
      attr_reader :uri

      def initialize(uri)
        @uri = uri
      end

      def size
        [0, 0]
      end

      def type
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
link_thumbnailer-3.4.0 lib/link_thumbnailer/image_parser.rb
link_thumbnailer-3.3.2 lib/link_thumbnailer/image_parser.rb