class BitsDealer::Config

Attributes

credentials[R]
database[R]

Public Class Methods

create(options) click to toggle source
# File lib/bits_dealer/config.rb, line 14
def self.create(options)
  ensure_config_folder
  create_secrets_file(options)
  new(options[:password])
end
needs_configuration?() click to toggle source
# File lib/bits_dealer/config.rb, line 24
def self.needs_configuration?
  !File.exist?("#{Dir.home}/.bits_dealer/secrets.yml")
end
new(password) click to toggle source
# File lib/bits_dealer/config.rb, line 9
def initialize(password)
  load_configurations(password)
  connect_to_bitso
end
reset() click to toggle source
# File lib/bits_dealer/config.rb, line 20
def self.reset
  FileUtils.remove_dir("#{Dir.home}/.bits_dealer")
end

Private Class Methods

create_database() click to toggle source
# File lib/bits_dealer/config.rb, line 66
def self.create_database
  FileUtils.cp('lib/bits_dealer/templates/database.sqlite3', "#{Dir.home}/.bits_dealer/database.sqlite3")
end
create_secrets_file(values) click to toggle source
# File lib/bits_dealer/config.rb, line 54
def self.create_secrets_file(values)
  File.open("#{Dir.home}/.bits_dealer/secrets.yml", "w") do |file|
      file.write(
        {
          client_id: values[:client_id].encrypt(values[:password]),
          api_key: values[:api_key].encrypt(values[:password]),
          api_secret: values[:api_secret].encrypt(values[:password]),
        }.to_yaml
      )
  end
end
ensure_config_folder() click to toggle source
# File lib/bits_dealer/config.rb, line 70
def self.ensure_config_folder
  unless File.directory?("#{Dir.home}/.bits_dealer")
    FileUtils.mkdir_p("#{Dir.home}/.bits_dealer")
  end
end

Private Instance Methods

connect_to_bitso() click to toggle source
# File lib/bits_dealer/config.rb, line 30
def connect_to_bitso
  Bitsor.configure do |c|
    c.client_id = credentials[:client_id]
    c.api_key = credentials[:api_key]
    c.api_secret = credentials[:api_secret]
  end
end
load_configurations(password) click to toggle source
# File lib/bits_dealer/config.rb, line 38
def load_configurations(password)
  if File.exist?("#{Dir.home}/.bits_dealer/secrets.yml")
    secrets = YAML.load_file("#{Dir.home}/.bits_dealer/secrets.yml")

    @credentials = {
      client_id: secrets[:client_id].decrypt(password),
      api_key: secrets[:api_key].decrypt(password),
      api_secret: secrets[:api_secret].decrypt(password),
    }
  end

  if File.exist?("#{Dir.home}/.bits_dealer/database.sqlite3")
    @database = Sequel.sqlite("#{Dir.home}/.bits_dealer/database.sqlite3")
  end
end