28 lines
		
	
	
		
			515 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			515 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
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
 |