Sha256: 24a965a2b9ab2b603c22087ad1fe23219a60244afaf0bb31c8cd781267f07aa8

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

# frozen_string_literal: true

module Peatio
 module Goldcash
  class Wallet < Peatio::Wallet::Abstract

    def initialize(settings = {})
      @settings = settings
    end

    def configure(settings = {})
      # Clean client state during configure.
      @client = nil

      @settings.merge!(settings.slice(*SUPPORTED_SETTINGS))

      @wallet = @settings.fetch(:wallet) do
        raise Peatio::Wallet::MissingSettingError, :wallet
      end.slice(:uri, :address)

      @currency = @settings.fetch(:currency) do
        raise Peatio::Wallet::MissingSettingError, :currency
      end.slice(:id, :base_factor, :options)
    end

    def create_address!(_options = {})
      { address: client.json_rpc(:getnewaddress) }
    rescue Goldcash::Client::Error => e
      raise Peatio::Wallet::ClientError, e
    end

    def create_transaction!(transaction, options = {})
      txid = client.json_rpc(:sendtoaddress,
                             [
                               transaction.to_address,
                               transaction.amount,
                               '',
                               '',
                               options[:subtract_fee].to_s == 'true' # subtract fee from transaction amount.
                             ])
      transaction.hash = txid
      transaction
    rescue Goldcash::Client::Error => e
      raise Peatio::Wallet::ClientError, e
    end

    def load_balance!
      client.json_rpc(:getbalance).to_d

    rescue Goldcash::Client::Error => e
      raise Peatio::Wallet::ClientError, e
    end

    private

    def client
      uri = @wallet.fetch(:uri) { raise Peatio::Wallet::MissingSettingError, :uri }
      @client ||= Client.new(uri, idle_timeout: 1)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
peatio-goldcash-2.6.8 lib/peatio/goldcash/wallet.rb