class Tanker::CTanker::CVerification

Constants

TYPE_EMAIL
TYPE_OIDC_ID_TOKEN
TYPE_PASSPHRASE
TYPE_PHONE_NUMBER
TYPE_VERIFICATION_KEY

Public Class Methods

new(verification) click to toggle source
Calls superclass method
# File lib/tanker/c_tanker/c_verification.rb, line 60
def initialize(verification)
  super()

  unless verification.is_a? Tanker::Verification
    raise TypeError, 'Verification argument is not a Tanker::Verification'
  end

  # NOTE: Instance variables are required to keep the CStrings alive
  case verification
  when Tanker::EmailVerification
    self[:type] = TYPE_EMAIL
    self[:email_verification] = CEmailVerification.new verification.email, verification.verification_code
  when Tanker::PassphraseVerification
    @passphrase = CTanker.new_cstring verification.passphrase
    self[:type] = TYPE_PASSPHRASE
    self[:passphrase] = @passphrase
  when Tanker::VerificationKeyVerification
    @verification_key = CTanker.new_cstring verification.verification_key
    self[:type] = TYPE_VERIFICATION_KEY
    self[:verification_key] = @verification_key
  when Tanker::OIDCIDTokenVerification
    @oidc_id_token = CTanker.new_cstring verification.oidc_id_token
    self[:type] = TYPE_OIDC_ID_TOKEN
    self[:oidc_id_token] = @oidc_id_token
  when Tanker::PhoneNumberVerification
    self[:type] = TYPE_PHONE_NUMBER
    self[:phone_number_verification] =
      CPhoneNumberVerification.new verification.phone_number, verification.verification_code
  else
    raise ArgumentError, 'Unknown Tanker::Verification type!'
  end

  self[:version] = 4
end