Sha256: 4367573cd53a52fdf58de75be8a9bb10d2960ac5bfcfed95efee1ad9fd46ba65

Contents?: true

Size: 965 Bytes

Versions: 2

Compression:

Stored size: 965 Bytes

Contents

# frozen_string_literal: true
require 'dry-struct'
require 'dry-initializer'
require_relative 'coins_paid/address'
require_relative 'coins_paid/coins_paid_address'
require_relative 'coins_paid/qr_code'

module CoinsPaid
  module_function

  UnknownCurrency = Class.new RuntimeError

  DEFAULT_CONVERT_TO = ENV['COINS_PAID_CURRENCY']

  ADDRESS_PREFIXES = {
    'BTC' => 'bitcoin',
    'BCH' => 'bitcoincash',
    'ETH' => 'ethereum',
    'EURTE' => 'ethereum',
    'LTC' => 'litecoin',
    'USDT' => 'bitcoin',
    'USDTE' => 'ethereum'
  }.freeze

  def address(foreign_id, currency:)
    Address.new(foreign_id: foreign_id, currency: currency, convert_to: DEFAULT_CONVERT_TO).call
  end

  def qr_code(player_id, currency:, label:, message:)
    QrCode.new(player_id, currency: currency, label: label, message: message)
  end

  def currency(name)
    CoinsPaid::API.currencies_list.find { |item| item.currency == name } || raise(UnknownCurrency, name)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
coins_paid_rails-1.1.2 lib/coins_paid.rb
coins_paid_rails-1.1.1 lib/coins_paid.rb