Class: DPay::CardRecurringRegistration

Inherits:
Object
  • Object
show all
Defined in:
lib/dpay/card/card_recurring_registration.rb,
sig/dpay/card/card_recurring_registration.rbs

Constant Summary collapse

DATE =

Returns:

  • (Regexp)
/\A\d{4}-\d{2}-\d{2}\z/

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(label) ⇒ CardRecurringRegistration

Returns a new instance of CardRecurringRegistration.

Parameters:

  • label (String)


11
12
13
14
15
16
17
18
# File 'lib/dpay/card/card_recurring_registration.rb', line 11

def initialize(label)
  unless label.is_a?(String) && !label.empty? && label.length <= 50
    raise InvalidArgumentError, "Mandate label must be 1-50 characters"
  end

  @label = label
  @optional = {}
end

Class Method Details

.create(label) ⇒ CardRecurringRegistration

Parameters:

  • label (String)

Returns:



7
8
9
# File 'lib/dpay/card/card_recurring_registration.rb', line 7

def self.create(label)
  new(label)
end

Instance Method Details

#assert_date(date) ⇒ String

Parameters:

  • date (Object)

Returns:

  • (String)

Raises:



63
64
65
66
67
# File 'lib/dpay/card/card_recurring_registration.rb', line 63

def assert_date(date)
  raise InvalidArgumentError, %(Date "#{date}" must be in YYYY-MM-DD format) unless DATE.match?(date.to_s)

  date
end

#to_hHash[String, untyped]

Returns:

  • (Hash[String, untyped])


51
52
53
54
55
56
57
58
59
# File 'lib/dpay/card/card_recurring_registration.rb', line 51

def to_h
  base = { "label" => @label }

  %w[frequency limit_amt tot_limit_amt is_limit_amt_fixed expiration_date init_date].each do |key|
    base[key] = @optional[key] if @optional.key?(key)
  end

  base
end

#with_expiration_date(expiration_date) ⇒ self

Parameters:

  • expiration_date (String)

Returns:

  • (self)


41
42
43
44
# File 'lib/dpay/card/card_recurring_registration.rb', line 41

def with_expiration_date(expiration_date)
  @optional["expiration_date"] = assert_date(expiration_date)
  self
end

#with_frequency(frequency) ⇒ self

Parameters:

  • frequency (String)

Returns:

  • (self)


20
21
22
23
24
# File 'lib/dpay/card/card_recurring_registration.rb', line 20

def with_frequency(frequency)
  CardRecurringFrequency.assert_valid(frequency)
  @optional["frequency"] = frequency
  self
end

#with_init_date(init_date) ⇒ self

Parameters:

  • init_date (String)

Returns:

  • (self)


46
47
48
49
# File 'lib/dpay/card/card_recurring_registration.rb', line 46

def with_init_date(init_date)
  @optional["init_date"] = assert_date(init_date)
  self
end

#with_limit_amt(limit_amt) ⇒ self

Parameters:

Returns:

  • (self)


26
27
28
29
# File 'lib/dpay/card/card_recurring_registration.rb', line 26

def with_limit_amt(limit_amt)
  @optional["limit_amt"] = limit_amt.minor
  self
end

#with_limit_amt_fixed(fixed) ⇒ self

Parameters:

  • fixed (Boolean)

Returns:

  • (self)


36
37
38
39
# File 'lib/dpay/card/card_recurring_registration.rb', line 36

def with_limit_amt_fixed(fixed)
  @optional["is_limit_amt_fixed"] = fixed
  self
end

#with_tot_limit_amt(tot_limit_amt) ⇒ self

Parameters:

Returns:

  • (self)


31
32
33
34
# File 'lib/dpay/card/card_recurring_registration.rb', line 31

def with_tot_limit_amt(tot_limit_amt)
  @optional["tot_limit_amt"] = tot_limit_amt.minor
  self
end