Sha256: f388387285b7cb5820f55b29cb2bae8589654c44dbfc04cd5dec941409fd7e82

Contents?: true

Size: 769 Bytes

Versions: 4

Compression:

Stored size: 769 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
      ADDRESS_PREFIXES.fetch(currency)
    end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
coins_paid_rails-1.1.4 lib/coins_paid/qr_code.rb
coins_paid_rails-1.1.3 lib/coins_paid/qr_code.rb
coins_paid_rails-1.1.2 lib/coins_paid/qr_code.rb
coins_paid_rails-1.1.1 lib/coins_paid/qr_code.rb