class TokenChain::Emitter

Public Class Methods

new(anchor: nil, passphrase: nil) click to toggle source
# File lib/token_chain/emitter.rb, line 6
def initialize(anchor: nil, passphrase: nil)
  @emitter = weigh_anchor(anchor, passphrase)
end

Public Instance Methods

next_token!() click to toggle source
# File lib/token_chain/emitter.rb, line 10
def next_token!
  anchor         = @emitter.anchor
  previous_token = @emitter.last_consumed_token
  generator      = Generator.new(anchor, previous_token)

  generator.generate.tap do |token|
    @emitter.last_consumed_token = token
    @emitter.save
  end
end

Private Instance Methods

weigh_anchor(anchor, passphrase) click to toggle source
# File lib/token_chain/emitter.rb, line 23
def weigh_anchor(anchor, passphrase)
  unless anchor || passphrase
    raise ArgumentError.new("You must provide an anchor or a passphrase.")
  end
  anchor = anchor || Anchor.from(passphrase)
  EmittableToken.find(anchor) || EmittableToken.create(anchor)
end