Class: IOStreams::SymmetricEncryption::Writer

Inherits:
Object
  • Object
show all
Defined in:
lib/io_streams/symmetric_encryption/writer.rb

Class Method Summary collapse

Class Method Details

.open(file_name_or_io, compress: nil, **args, &block) ⇒ Object

Write to file/stream using Symmetric Encryption



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/io_streams/symmetric_encryption/writer.rb', line 5

def self.open(file_name_or_io, compress: nil, **args, &block)
  begin
    require 'symmetric-encryption' unless defined?(SymmetricEncryption)
  rescue LoadError => e
    raise(LoadError, "Please install the 'symmetric-encryption' gem for .enc streaming support. #{e.message}")
  end

  if IOStreams.writer_stream?(file_name_or_io)
    compress = true if compress.nil?
    ::SymmetricEncryption::Writer.open(file_name_or_io, compress: compress, **args, &block)
  else
    compress = !IOStreams.compressed?(file_name_or_io) if compress.nil?

    IOStreams::File::Writer.open(file_name_or_io) do |file|
      ::SymmetricEncryption::Writer.open(file, compress: compress, **args, &block)
    end
  end
end