Sha256: 39fbd09809b9f730251f4fb87ae9ec4b1aa97d14b0808e5e74e85cf6b27284c3

Contents?: true

Size: 770 Bytes

Versions: 2

Compression:

Stored size: 770 Bytes

Contents

# frozen_string_literal: true

module CoinsPaid
  class QrCode
    include Dry::Initializer.define -> do
      param :player_id
      option :currency
      option :label
      option :message
    end

    def url
      "#{token_type}:#{address}?label=#{encode(label)}&message=#{encode(message)}"
    end

    def address
      @address ||= CoinsPaid.address(player_id, currency: currency).address
    end

    def svg
      RQRCode::QRCode.new(url).as_svg(
        offset: 0,
        color: '000',
        shape_rendering: 'crispEdges',
        module_size: 3,
        standalone: true
      )
    end

    private

    def token_type
      CRYPTO_CURRENCIES.fetch(currency)
    end

    def encode(string)
      URI.encode_www_form_component(string)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
coins_paid_rails-1.0.1 lib/coins_paid/qr_code.rb
coins_paid_rails-1.0.0 lib/coins_paid/qr_code.rb