class HealthCards::QRCodes

Implements QR Code chunking in ruby

Attributes

chunks[R]

Public Class Methods

from_jws(jws) click to toggle source

Creates a QRCodes from a JWS @param jws [String] the JWS string @return [HealthCards::QRCodes]

# File lib/health_cards/qr_codes.rb, line 13
def self.from_jws(jws)
  QRCodes.new(ChunkingUtils.jws_to_qr_chunks(jws.to_s))
end
new(chunks) click to toggle source

Creates a QRCodes from a set of encoded chunks @param chunks [Array<String>] An array of QR Code chunks as a string

# File lib/health_cards/qr_codes.rb, line 19
def initialize(chunks)
  @chunks = chunks.sort.map.with_index(1) { |ch, i| Chunk.new(ordinal: i, input: ch) }
end

Public Instance Methods

code_by_ordinal(num) click to toggle source

Find a single QR Code chunk from this collection based on its ordinal position @return [HealthCards::Chunk] A single QRCode chunk

# File lib/health_cards/qr_codes.rb, line 25
def code_by_ordinal(num)
  chunks.find { |ch| ch.ordinal == num }
end
to_jws() click to toggle source

Combine all chunks and decodes it into a JWS object @return [HealthCards::JWS] JWS object that the chunks combine to create

# File lib/health_cards/qr_codes.rb, line 31
def to_jws
  jws_string = ChunkingUtils.qr_chunks_to_jws(chunks.map(&:data))
  JWS.from_jws(jws_string)
end