33 lines
1016 B
Ruby
33 lines
1016 B
Ruby
class ImageProcessorService
|
|
ALLOWED_LOGO_TYPES = ['Network', 'Employer'].freeze
|
|
|
|
def initialize(image_path, logo_type, new_filename = nil)
|
|
@image_path = image_path
|
|
@logo_type = logo_type.capitalize
|
|
@new_filename = new_filename
|
|
|
|
unless ALLOWED_LOGO_TYPES.include?(@logo_type)
|
|
raise ArgumentError, "Invalid logo type: #{@logo_type}. Must be one of: #{ALLOWED_LOGO_TYPES.join(', ')}"
|
|
end
|
|
end
|
|
|
|
def call
|
|
|
|
if @new_filename
|
|
filename = @new_filename
|
|
else
|
|
filename = File.basename(@image_path)
|
|
end
|
|
|
|
binary_data = File.binread(@image_path)
|
|
# binary_data = File.open(@image_path, 'rb').read
|
|
meme_type = Marcel::MimeType.for Pathname.new(@image_path)
|
|
|
|
logo_model = "IdCard::#{@logo_type}Logo".constantize
|
|
|
|
logo_model.find_or_create_by(filename: filename) do |logo|
|
|
logo.image_data = binary_data
|
|
logo.content_type = meme_type
|
|
end
|
|
end
|
|
end |