require "image_processing/vips"

module LdapManager
  class UpdateAvatar < LdapManagerService
    def initialize(dn:, file:)
      @dn = dn
      @img_data = process(file)
    end

    def call
      replace_attribute @dn, :jpegPhoto, @img_data
    end

    private

    def process(file)
      processed = ImageProcessing::Vips
        .resize_to_fill(512, 512)
        .source(file)
        .convert("jpeg")
        .saver(strip: true)
        .call

      Base64.strict_encode64 processed.read
    end
  end
end
