class RocketJob::Jobs::CopyFileJob

Public Instance Methods

perform() click to toggle source
# File lib/rocket_job/jobs/copy_file_job.rb, line 57
def perform
  if source_data
    target_path.write(source_data)
  elsif target_url
    target_path.copy_from(source_path)
  end

  self.percent_complete = 100
end
source_path() click to toggle source
# File lib/rocket_job/jobs/copy_file_job.rb, line 67
def source_path
  source = IOStreams.path(source_url, **decode_args(source_args))
  apply_streams(source, source_streams)
  source
end
target_path() click to toggle source
# File lib/rocket_job/jobs/copy_file_job.rb, line 73
def target_path
  target = IOStreams.path(target_url, **decode_args(target_args))
  apply_streams(target, target_streams)
  target
end

Private Instance Methods

apply_streams(path, streams) click to toggle source
# File lib/rocket_job/jobs/copy_file_job.rb, line 85
def apply_streams(path, streams)
  streams.each_pair do |stream, args|
    stream_args = args.nil? ? {} : decode_args(args)
    path.stream(stream.to_sym, **stream_args)
  end
end
decode_args(args) click to toggle source
# File lib/rocket_job/jobs/copy_file_job.rb, line 92
def decode_args(args)
  return args.symbolize_keys unless defined?(SymmetricEncryption)

  decoded_args = {}
  args.each_pair do |key, value|
    if key.to_s.start_with?("encrypted_") && defined?(SymmetricEncryption)
      original_key               = key.to_s.sub("encrypted_", "").to_sym
      decoded_args[original_key] = SymmetricEncryption.decrypt(value)
    elsif key.to_s.start_with?("secret_config_") && defined?(SecretConfig)
      original_key               = key.to_s.sub("secret_config_", "").to_sym
      decoded_args[original_key] = SecretConfig.fetch(value)
    else
      decoded_args[key.to_sym] = value
    end
  end
  decoded_args
end
set_description() click to toggle source
# File lib/rocket_job/jobs/copy_file_job.rb, line 81
def set_description
  self.description ||= "Copying to #{target_url}"
end