# frozen_string_literal: true

# validates the given card token through the Stripe API
class StripeCardTokenValidator
  def validate(record)
    return unless options[:token]

    res = Stripe::Token.retrieve(options[:token], api_key: Setting.get('stripe_secret_key'))
    if res[:id] != options[:token]
      record.errors.add(:card_token, "A problem occurred while retrieving the card with the specified token: #{res.id}")
    end
  rescue Stripe::InvalidRequestError => e
    record.errors.add(:card_token, e)
  end
end