Module: Airwallex::Util

Defined in:
lib/airwallex/util.rb

Class Method Summary collapse

Class Method Details

.deep_symbolize_keys(hash) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/airwallex/util.rb', line 43

def deep_symbolize_keys(hash)
  return hash unless hash.is_a?(Hash)

  hash.each_with_object({}) do |(key, value), result|
    result[key.to_sym] = value.is_a?(Hash) ? deep_symbolize_keys(value) : value
  end
end

.format_date_time(value) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/airwallex/util.rb', line 15

def format_date_time(value)
  case value
  when Time, DateTime
    value.utc.iso8601
  when Date
    value.to_time.utc.iso8601
  when String
    value
  else
    raise ArgumentError, "Cannot format #{value.class} as ISO 8601"
  end
end

.generate_idempotency_keyObject



11
12
13
# File 'lib/airwallex/util.rb', line 11

def generate_idempotency_key
  SecureRandom.uuid
end

.parse_date_time(value) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/airwallex/util.rb', line 28

def parse_date_time(value)
  return nil if value.nil?
  return value if value.is_a?(Time)

  Time.iso8601(value)
rescue ArgumentError
  Time.parse(value)
end

.symbolize_keys(hash) ⇒ Object



37
38
39
40
41
# File 'lib/airwallex/util.rb', line 37

def symbolize_keys(hash)
  return hash unless hash.is_a?(Hash)

  hash.transform_keys(&:to_sym)
end

.to_money(value) ⇒ Object



51
52
53
54
55
56
# File 'lib/airwallex/util.rb', line 51

def to_money(value)
  return value if value.is_a?(BigDecimal)
  return BigDecimal("0") if value.nil?

  BigDecimal(value.to_s)
end