Sha256: 1a0c4f99a875fb9626079897110b61d9cbb7439ff340f6cbdf66c76ff5239843

Contents?: true

Size: 716 Bytes

Versions: 4

Compression:

Stored size: 716 Bytes

Contents

require 'uri'
require 'dimscan/http_byte_enumerator'
require 'mini_magick'
require 'abstractize'

module Dimscan
  # The abstract base class
  class BaseScanner
    include Abstractize

    def initialize(url)
      @bytes = HTTPByteEnumerator.new(url)
      @fallback_file = `mktemp`.chomp
    end

    def scan_dimensions
      dimensions = nil
      File.open(@fallback_file, 'wb') do |file|
        dimensions = scan(@bytes.each) { |b| file.write(b) }
      end
      width, height = (
        dimensions || MiniMagick::Image.new(@fallback_file).dimensions
      )

      { width: width, height: height }
    end

    protected

    def scan(_bytes)
      fail AbstractError, 'not implemented'
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dimscan-0.2.1 lib/dimscan/base_scanner.rb
dimscan-0.2.0 lib/dimscan/base_scanner.rb
dimscan-0.1.1 lib/dimscan/base_scanner.rb
dimscan-0.1.0 lib/dimscan/base_scanner.rb