class Rubyqrpay::Parser

Constants

NESTED_DATA_IDS

Public Class Methods

parse_payload(payload) click to toggle source
# File lib/rubyqrpay/parser.rb, line 9
def parse_payload(payload)
  parse_to_params(URI.unescape payload)
end

Private Class Methods

parse_to_params(payload) click to toggle source
# File lib/rubyqrpay/parser.rb, line 15
def parse_to_params(payload)
  {}.tap do |params|
    index = 0

    until payload[index + 4].nil?
      key = payload[index, 2]
      size = payload[index + 2, 2].to_i
      value = payload[index + 4, size]

      params[key] = if NESTED_DATA_IDS.include? key
                      parse_to_params value
                    else
                      value
                    end

      index += 4 + size
    end
  end
end