Sha256: a2a546c0ad45397a8cf4e41a6255f4bcab8d7e8bd7d7dc431f1df993fca968f5

Contents?: true

Size: 1.48 KB

Versions: 8

Compression:

Stored size: 1.48 KB

Contents

require 'link_thumbnailer/scrapers/default/base'
require 'link_thumbnailer/models/image'

module LinkThumbnailer
  module Scrapers
    module Default
      class Images < ::LinkThumbnailer::Scrapers::Default::Base

        def value
          images.map do |image|
            modelize(image.uri, image.size, image.type)
          end
        end

        private

        def images
          ::LinkThumbnailer::ImageParser.new(allowed_urls).images
        end

        def allowed_urls
          abs_urls.shift(config.image_limit)
        end

        def urls
          document.search('//img').map { |i| i['src'] }.compact
        end

        def abs_urls
          urls.map do |url|
            uri = validate_url(url)

            next unless uri

            uri = prefix_uri(uri) if needs_prefix?(uri)
            uri
          end
        end

        def validate_url(url)
          ::URI.parse(url.to_s)
        rescue ::URI::InvalidURIError
          nil
        end

        def needs_prefix?(uri)
          !uri.host
        end

        def prefix_uri(uri)
          ::URI.join(prefix_url, uri)
        end

        def prefix_url
          base_href || website.url
        end

        def base_href
          base = document.at('//head/base')
          base['href'] if base
        end

        def model_class
          ::LinkThumbnailer::Models::Image
        end

        def modelize(uri, size = nil, type = nil)
          model_class.new(uri, size, type)
        end

      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
link_thumbnailer-3.3.1 lib/link_thumbnailer/scrapers/default/images.rb
link_thumbnailer-3.3.0 lib/link_thumbnailer/scrapers/default/images.rb
link_thumbnailer-3.2.1 lib/link_thumbnailer/scrapers/default/images.rb
link_thumbnailer-3.2.0 lib/link_thumbnailer/scrapers/default/images.rb
link_thumbnailer-3.1.2 lib/link_thumbnailer/scrapers/default/images.rb
link_thumbnailer-3.1.1 lib/link_thumbnailer/scrapers/default/images.rb
link_thumbnailer-3.1.0 lib/link_thumbnailer/scrapers/default/images.rb
link_thumbnailer-3.0.3 lib/link_thumbnailer/scrapers/default/images.rb