class FakePin::Card

Constants

REQUIRED_ADDRESS_PARAMS
REQUIRED_PARAMS
SCHEMES

Public Class Methods

create(params) click to toggle source
# File lib/fake_pin/card.rb, line 23
def self.create(params)
  new(params).create
end
new(params) click to toggle source
# File lib/fake_pin/card.rb, line 27
def initialize(params)
  @params = params
end

Public Instance Methods

create() click to toggle source
# File lib/fake_pin/card.rb, line 31
def create
  required_params = if FakePin.configuration.require_address
                      [ *REQUIRED_PARAMS, *REQUIRED_ADDRESS_PARAMS ]
                    else
                      REQUIRED_PARAMS
                    end

  @params.require(*required_params)

  number = @params['number'].to_s.gsub(/[^0-9]+/, '')

  {
    "token"            => Token.generate('card'),
    "display_number"   => obfuscate_card_number(number),
    "expiry_month"     => @params['expiry_month'],
    "expiry_year"      => @params['expiry_year'],
    "name"             => @params['name'],
    "address_line1"    => @params['address_line1'],
    "address_line2"    => @params['address_line2'],
    "address_city"     => @params['address_city'],
    "address_postcode" => @params['address_postcode'],
    "address_state"    => @params['address_state'],
    "address_country"  => @params['address_country'],
    "scheme"           => card_scheme(number)
  }
end

Private Instance Methods

card_scheme(number) click to toggle source
# File lib/fake_pin/card.rb, line 60
def card_scheme(number)
  SCHEMES.each_pair { |scheme, regex| return scheme if number =~ regex }

  raise UnrecognisedCardSchemeError
end
obfuscate_card_number(card_number) click to toggle source
# File lib/fake_pin/card.rb, line 66
def obfuscate_card_number(card_number)
  "XXXX-XXXX-XXXX-#{card_number[-4..-1]}"
end