class Flickrage::Worker::Compose

Public Instance Methods

call(image_list) click to toggle source
# File lib/flickrage/worker/compose.rb, line 5
def call(image_list)
  raise Flickrage::CollageError, 'Not enough images for collage' if image_list.resized&.size < 1

  speaker.add_padding
  logger.debug('Collage building process')

  image_list.collage_path = init_file_name

  @spin = spinner(message: 'Collage making')
  result = service.run(image_list)

  if result.composed?
    spin.success
  else
    spin.error('(failed: Collage was not made)')
    raise Flickrage::CollageError
  end

  result
ensure
  spin&.stop
end

Private Instance Methods

init_file_name() click to toggle source
# File lib/flickrage/worker/compose.rb, line 36
def init_file_name
  return opts['file_name'] if validate_file_name

  output = speaker.ask('Please enter the collage file name:', path: true)

  unless valid_file_name?(output)
    increment_error_counter(Flickrage::FileNameError,
                            "#{output}, must be valid, supported extensions: .png, .jpg or .gif")
    return init_file_name
  end

  reset_error_counter

  opts['file_name'] = output
end
service() click to toggle source
# File lib/flickrage/worker/compose.rb, line 30
def service
  @service ||= Service::Composer.new(opts['file_name'],
                                   Flickrage.config.width,
                                   Flickrage.config.height)
end
valid_file_name?(value) click to toggle source
# File lib/flickrage/worker/compose.rb, line 59
def valid_file_name?(value)
  return false unless value
  value.match(/^([a-zA-Z0-9\-_\.]+)\.(png|jpg|jpeg|gif)$/)
end
validate_file_name() click to toggle source
# File lib/flickrage/worker/compose.rb, line 52
def validate_file_name
  return false unless opts['file_name']
  return true if valid_file_name?(opts['file_name'])
  opts['file_name'] = nil
  false
end