Class: DPay::BlikRecurringRegistration

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

Constant Summary collapse

MODELS =

Returns:

  • (Array[String])
%w[A M O].freeze
FREQUENCY =

Returns:

  • (Regexp)
/\A[1-9][0-9]{0,2}[DWMQY]\z/
DATE =

Returns:

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(label, model, frequency) ⇒ BlikRecurringRegistration

Returns a new instance of BlikRecurringRegistration.

Parameters:

  • label (String)
  • model (String)
  • frequency (String)

Raises:



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 13

def initialize(label, model, frequency)
  unless label.is_a?(String) && !label.empty? && label.length <= 50
    raise InvalidArgumentError, "Alias label must be 1-50 characters"
  end
  raise InvalidArgumentError, %(Invalid recurring model "#{model}") unless MODELS.include?(model)
  raise InvalidArgumentError, %(Invalid recurring frequency "#{frequency}") unless FREQUENCY.match?(frequency.to_s)

  @label = label
  @model = model
  @frequency = frequency
  @optional = {}
end

Class Method Details

.create(label, model, frequency) ⇒ BlikRecurringRegistration

Parameters:

  • label (String)
  • model (String)
  • frequency (String)

Returns:



9
10
11
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 9

def self.create(label, model, frequency)
  new(label, model, frequency)
end

Instance Method Details

#assert_date(date) ⇒ String

Parameters:

  • date (Object)

Returns:

  • (String)

Raises:



68
69
70
71
72
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 68

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])


56
57
58
59
60
61
62
63
64
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 56

def to_h
  base = { "label" => @label, "type" => BlikAliasType::PAYID, "model" => @model, "frequency" => @frequency }

  %w[value 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)


46
47
48
49
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 46

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

#with_init_date(init_date) ⇒ self

Parameters:

  • init_date (String)

Returns:

  • (self)


51
52
53
54
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 51

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

#with_limit_amt(limit_amt) ⇒ self

Parameters:

  • limit_amt (Integer)

Returns:

  • (self)


31
32
33
34
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 31

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

#with_limit_amt_fixed(fixed) ⇒ self

Parameters:

  • fixed (Boolean)

Returns:

  • (self)


41
42
43
44
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 41

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

#with_tot_limit_amt(tot_limit_amt) ⇒ self

Parameters:

  • tot_limit_amt (Integer)

Returns:

  • (self)


36
37
38
39
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 36

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

#with_value(value) ⇒ self

Parameters:

Returns:

  • (self)


26
27
28
29
# File 'lib/dpay/blik/blik_recurring_registration.rb', line 26

def with_value(value)
  @optional["value"] = value.to_decimal
  self
end