akkounts/app/services/ldap_manager/fetch_avatar.rb
Râu Cao 7b91618ffa
Some checks failed
continuous-integration/drone/push Build is failing
WIP JPEG avatars
2025-05-08 21:16:33 +04:00

43 lines
1.1 KiB
Ruby

module LdapManager
class FetchAvatar < LdapManagerService
def initialize(cn:)
@cn = cn
end
def call
treebase = ldap_config["base"]
attributes = %w{ jpegPhoto }
filter = Net::LDAP::Filter.eq("cn", @cn)
entry = client.search(base: treebase, filter: filter, attributes: attributes).first
if entry&.jpegPhoto
binary_data = entry.jpegPhoto.first # Use first value (binary)
Rails.logger.debug { "Fetched jpegPhoto size: #{binary_data.bytesize}" }
create_tempfile(binary_data)
else
Rails.logger.debug { "No jpegPhoto found for cn=#{@cn}, ou=#{@ou}" }
nil
end
end
def create_tempfile(binary_data)
tempfile = Tempfile.new(['image', '.jpg'])
tempfile.binmode
tempfile.write(binary_data)
tempfile.rewind
Rails.logger.debug { "Storing debug file for cn=#{@cn}, size=#{tempfile.size}" }
data = tempfile.read
debug_file_path = "#{Rails.root}/tmp/avatar-fetched.jpg"
debug_file = File.open(debug_file_path, 'wb')
debug_file.write(data)
debug_file.close
data
end
end
end