Method: PorkyLib::FileService#write_data

Defined in:
lib/porky_lib/file_service.rb

#write_data(data, bucket_name, key_id, options = {}) ⇒ Object

Raises:



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/porky_lib/file_service.rb', line 76

def write_data(data, bucket_name, key_id, options = {})
  raise FileServiceError, 'Invalid input. One or more input values is nil' if input_invalid?(data, bucket_name, key_id)
  raise FileSizeTooLargeError, "Data size is larger than maximum allowed size of #{max_file_size}" if data_size_invalid?(data)

  file_key = if options.key?(:file_name)
               options[:file_name]
             else
               generate_file_key(options)
             end
  tempfile = encrypt_file_contents(data, key_id, file_key, options)

  begin
    perform_upload(bucket_name, file_key, tempfile, options)
  rescue Aws::Errors::ServiceError => e
    raise FileServiceError, "Attempt to upload a file to S3 failed.\n#{e.message}"
  end

  # Remove tempfile from disk
  tempfile.unlink
  file_key
end