Sha256: 50b325d98582e55bc1d84194465146c5fca9d6cbadf0b9e345c3fce88096287b

Contents?: true

Size: 1.9 KB

Versions: 6

Compression:

Stored size: 1.9 KB

Contents

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

      DEFAULT_FEATURES = { skip_deposit_collection: false }.freeze

      def initialize(custom_features = {})
        @features = DEFAULT_FEATURES.merge(custom_features).slice(*SUPPORTED_FEATURES)
        @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)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
peatio-goldcash-2.6.6 lib/peatio/goldcash/wallet.rb
peatio-goldcash-2.6.5 lib/peatio/goldcash/wallet.rb
peatio-goldcash-2.6.4 lib/peatio/goldcash/wallet.rb
peatio-goldcash-2.6.3 lib/peatio/goldcash/wallet.rb
peatio-goldcash-2.6.2 lib/peatio/goldcash/wallet.rb
peatio-goldcash-2.6.1 lib/peatio/goldcash/wallet.rb