require 'rmagick'

module MediaWrapper

  class Image

    attr_accessor :file, :width, :height

    def width
      @file.columns
    end

    def height
      @file.rows
    end

    def initialize(path)
      @file = Magick::Image.read(path).first
    end

    def read_iptc(mapping)
      val_utf = @file.get_iptc_dataset("1:90")
      current_meta = {}
      mapping.each do |key, val|
        extracted_val = @file.get_iptc_dataset(key)
        if extracted_val.blank? and key[0..1]=='2:'
          current_meta[val.to_sym] = extracted_val
        elsif !extracted_val.to_s.blank?
          extracted_val.gsub!(/\s*;\s*/, ' ') if val == 'subject'
          if val_utf.blank?
            current_meta[val.to_sym] = extracted_val.encode('utf-8', 'iso-8859-15').strip
          else
            current_meta[val.to_sym] = extracted_val.force_encoding("UTF-8").strip
          end
        end
      end
      current_meta
    end

    def fit_square(side)
      ffile = @file
      ffile.resize_to_fit!(side, side)
      #ToDo : this update below create errors, see how to correct to avoid them
=begin
      unless ffile.resize_to_fit!(side, side)
        LOG.error("PpException::ImageMagick error #{File.basename(@path)}")
        err_folder = "#{PROCESSOR_CONFIG[:paths][:err]}/ImageMagick/#{File.ctime(@path).utc.strftime("%Y%m%d")}/"
        FileUtils::makedirs(err_folder)
        FileUtils.mv(@path, err_folder)
      end
=end
    end

  end

end
