class PgExport::Adapters::FtpAdapter

Constants

CHUNK_SIZE
MEANINGFUL_KEYS

Attributes

host[R]
password[R]
user[R]

Public Class Methods

new(host:, user:, password:) click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 12
def initialize(host:, user:, password:)
  @host, @user, @password, @logger = host, user, password
  ObjectSpace.define_finalizer(self, proc { ftp.close if @ftp })
end

Public Instance Methods

close_ftp() click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 23
def close_ftp
  @ftp&.close
end
delete(name) click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 35
def delete(name)
  ftp.delete(name)
end
ftp() click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 51
def ftp
  @ftp ||= open_ftp
end
get(file, name) click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 43
def get(file, name)
  ftp.getbinaryfile(name, file.path, CHUNK_SIZE)
end
list(regex_string) click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 27
def list(regex_string)
  ftp
    .list(regex_string)
    .map { |row| extracted_meaningful_attributes(row) }
    .sort_by { |item| item[:name] }
    .reverse
end
open_ftp() click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 17
def open_ftp
  @ftp = Net::FTP.new(host, user, password)
  @ftp.passive = true
  @ftp
end
persist(file, name) click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 39
def persist(file, name)
  ftp.putbinaryfile(file.path, name, CHUNK_SIZE)
end
to_s() click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 47
def to_s
  host
end

Private Instance Methods

extracted_meaningful_attributes(item) click to toggle source
# File lib/pg_export/lib/pg_export/adapters/ftp_adapter.rb, line 59
def extracted_meaningful_attributes(item)
  MEANINGFUL_KEYS.zip(item.split(' ').values_at(8, 4)).to_h
end