moov_ruby 25.1.7 → 25.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/lib/crystalline/metadata_fields.rb +14 -20
  3. data/lib/crystalline/module.rb +10 -96
  4. data/lib/crystalline/types.rb +0 -79
  5. data/lib/moov/models/components/accounttype.rb +2 -0
  6. data/lib/moov/models/components/accountverificationstatus.rb +2 -0
  7. data/lib/moov/models/components/achcreditsamedaypaymentmethod_paymentmethodtype.rb +2 -0
  8. data/lib/moov/models/components/achcreditstandardpaymentmethod_paymentmethodtype.rb +2 -0
  9. data/lib/moov/models/components/achdebitcollectpaymentmethod_paymentmethodtype.rb +2 -0
  10. data/lib/moov/models/components/achdebitfundpaymentmethod_paymentmethodtype.rb +2 -0
  11. data/lib/moov/models/components/achreturncode.rb +2 -0
  12. data/lib/moov/models/components/achtransactionstatus.rb +2 -0
  13. data/lib/moov/models/components/applepaypaymentmethod_paymentmethodtype.rb +2 -0
  14. data/lib/moov/models/components/applicationscope.rb +2 -0
  15. data/lib/moov/models/components/bankaccountholdertype.rb +2 -0
  16. data/lib/moov/models/components/bankaccountstatus.rb +2 -0
  17. data/lib/moov/models/components/bankaccountstatusreason.rb +2 -0
  18. data/lib/moov/models/components/bankaccounttype.rb +2 -0
  19. data/lib/moov/models/components/bankaccountverificationmethod.rb +2 -0
  20. data/lib/moov/models/components/bankaccountverificationstatus.rb +2 -0
  21. data/lib/moov/models/components/bankaccountwaitfor.rb +2 -0
  22. data/lib/moov/models/components/businesstype.rb +2 -0
  23. data/lib/moov/models/components/calltoaction.rb +2 -0
  24. data/lib/moov/models/components/cancellationstatus.rb +2 -0
  25. data/lib/moov/models/components/capabilityid.rb +2 -0
  26. data/lib/moov/models/components/capabilitystatus.rb +2 -0
  27. data/lib/moov/models/components/cardacquiringmodel.rb +2 -0
  28. data/lib/moov/models/components/cardbrand.rb +2 -0
  29. data/lib/moov/models/components/cardissuingnetwork.rb +2 -0
  30. data/lib/moov/models/components/cardpaymentpaymentmethod_paymentmethodtype.rb +2 -0
  31. data/lib/moov/models/components/{moovwallettransferpaymentmethod.rb → cardpresentpaymentpaymentmethod.rb} +9 -9
  32. data/lib/moov/models/components/{applepaytransferpaymentmethod.rbi → cardpresentpaymentpaymentmethod.rbi} +4 -4
  33. data/lib/moov/models/components/{moovwallettransferpaymentmethod_paymentmethodtype.rb → cardpresentpaymentpaymentmethod_paymentmethodtype.rb} +4 -2
  34. data/lib/moov/models/components/{pushtocardtransferpaymentmethod_paymentmethodtype.rbi → cardpresentpaymentpaymentmethod_paymentmethodtype.rbi} +2 -2
  35. data/lib/moov/models/components/cardtransactionfailurecode.rb +2 -0
  36. data/lib/moov/models/components/cardtransactionstatus.rb +2 -0
  37. data/lib/moov/models/components/cardtype.rb +2 -0
  38. data/lib/moov/models/components/cardupdatereason.rb +2 -0
  39. data/lib/moov/models/components/cardverificationresult.rb +2 -0
  40. data/lib/moov/models/components/collectionpaymentmethodtype.rb +2 -0
  41. data/lib/moov/models/components/createpaymentlinklineitem.rb +2 -6
  42. data/lib/moov/models/components/createpaymentlinklineitemoption.rb +1 -4
  43. data/lib/moov/models/components/createscheduledtransferlineitem.rb +1 -2
  44. data/lib/moov/models/components/createtransferlineitem.rb +1 -2
  45. data/lib/moov/models/components/debitholdperiod.rb +2 -0
  46. data/lib/moov/models/components/disbursementpaymentmethodtype.rb +2 -0
  47. data/lib/moov/models/components/disputephase.rb +2 -0
  48. data/lib/moov/models/components/disputestatus.rb +2 -0
  49. data/lib/moov/models/components/documenttype.rb +2 -0
  50. data/lib/moov/models/components/domesticpullfromcard.rb +2 -0
  51. data/lib/moov/models/components/domesticpushtocard.rb +2 -0
  52. data/lib/moov/models/components/{achcreditstandardtransferpaymentmethod_paymentmethodtype.rb → entrymode.rb} +4 -2
  53. data/lib/moov/models/components/entrymode.rbi +11 -0
  54. data/lib/moov/models/components/evidencetype.rb +2 -0
  55. data/lib/moov/models/components/feecategory.rb +2 -0
  56. data/lib/moov/models/components/feemodel.rb +2 -0
  57. data/lib/moov/models/components/feeplanagreementstatus.rb +2 -0
  58. data/lib/moov/models/components/filepurpose.rb +2 -0
  59. data/lib/moov/models/components/filestatus.rb +2 -0
  60. data/lib/moov/models/components/generatedby.rb +2 -6
  61. data/lib/moov/models/components/generatedby.rbi +0 -2
  62. data/lib/moov/models/components/granttype.rb +2 -0
  63. data/lib/moov/models/components/imagemetadata.rb +1 -1
  64. data/lib/moov/models/components/invoicestatus.rb +2 -0
  65. data/lib/moov/models/components/issuedcardauthorizationeventresult.rb +2 -0
  66. data/lib/moov/models/components/issuedcardeventtype.rb +2 -0
  67. data/lib/moov/models/components/issuedcardformfactor.rb +2 -0
  68. data/lib/moov/models/components/issuedcardstate.rb +2 -0
  69. data/lib/moov/models/components/issuingauthorizationstatus.rb +2 -0
  70. data/lib/moov/models/components/issuingintervallimit.rb +2 -0
  71. data/lib/moov/models/components/kind.rb +2 -0
  72. data/lib/moov/models/components/linkcardwaitfor.rb +2 -0
  73. data/lib/moov/models/components/microdepositstatus.rb +2 -0
  74. data/lib/moov/models/components/mode.rb +2 -0
  75. data/lib/moov/models/components/moovwalletpaymentmethod_paymentmethodtype.rb +2 -0
  76. data/lib/moov/models/components/occurrencestatus.rb +2 -0
  77. data/lib/moov/models/components/paymentlinkstatus.rb +2 -0
  78. data/lib/moov/models/components/paymentlinktype.rb +2 -0
  79. data/lib/moov/models/components/paymentmethodtype.rb +3 -0
  80. data/lib/moov/models/components/primaryregulator.rb +2 -0
  81. data/lib/moov/models/components/pullfromcardpaymentmethod_paymentmethodtype.rb +2 -0
  82. data/lib/moov/models/components/pushtocardpaymentmethod_paymentmethodtype.rb +2 -0
  83. data/lib/moov/models/components/receiptkind.rb +2 -0
  84. data/lib/moov/models/components/refundcardstatus.rb +2 -0
  85. data/lib/moov/models/components/refundstatus.rb +2 -0
  86. data/lib/moov/models/components/requirementerrorcode.rb +2 -0
  87. data/lib/moov/models/components/requirementid.rb +2 -0
  88. data/lib/moov/models/components/returnpolicytype.rb +2 -0
  89. data/lib/moov/models/components/rtpcreditpaymentmethod_paymentmethodtype.rb +2 -0
  90. data/lib/moov/models/components/rtpfailurecode.rb +2 -0
  91. data/lib/moov/models/components/rtprejectioncode.rb +2 -0
  92. data/lib/moov/models/components/rtptransactionstatus.rb +2 -0
  93. data/lib/moov/models/components/seccode.rb +2 -0
  94. data/lib/moov/models/components/status.rb +2 -0
  95. data/lib/moov/models/components/sweepconfigstatus.rb +2 -0
  96. data/lib/moov/models/components/sweepstatus.rb +2 -0
  97. data/lib/moov/models/components/terminalapplicationplatform.rb +2 -0
  98. data/lib/moov/models/components/terminalapplicationstatus.rb +2 -0
  99. data/lib/moov/models/components/terminalcard.rb +78 -0
  100. data/lib/moov/models/components/terminalcard.rbi +35 -0
  101. data/lib/moov/models/components/ticketstatus.rb +2 -0
  102. data/lib/moov/models/components/token_type_hint.rb +2 -0
  103. data/lib/moov/models/components/tokentype.rb +2 -0
  104. data/lib/moov/models/components/transactionsource.rb +2 -0
  105. data/lib/moov/models/components/transferdestination.rb +5 -5
  106. data/lib/moov/models/components/transferfailurereason.rb +2 -0
  107. data/lib/moov/models/components/transferoptions.rb +3 -3
  108. data/lib/moov/models/components/transferparty.rb +2 -0
  109. data/lib/moov/models/components/transfersource.rb +11 -7
  110. data/lib/moov/models/components/transfersource.rbi +2 -0
  111. data/lib/moov/models/components/transferstatus.rb +2 -0
  112. data/lib/moov/models/components/transferwaitfor.rb +2 -0
  113. data/lib/moov/models/components/underwritingstatus.rb +2 -0
  114. data/lib/moov/models/components/updateissuedcardstate.rb +2 -0
  115. data/lib/moov/models/components/use.rb +2 -0
  116. data/lib/moov/models/components/verificationstatus.rb +2 -0
  117. data/lib/moov/models/components/verificationstatusdetail.rb +2 -0
  118. data/lib/moov/models/components/walletstatus.rb +2 -0
  119. data/lib/moov/models/components/wallettransactionsourcetype.rb +2 -0
  120. data/lib/moov/models/components/wallettransactionstatus.rb +2 -0
  121. data/lib/moov/models/components/wallettransactiontype.rb +2 -0
  122. data/lib/moov/models/components/wallettype.rb +2 -0
  123. data/lib/moov/models/components/webhookdatatransferstatus.rb +2 -0
  124. data/lib/moov/models/components/webhookeventtype.rb +2 -0
  125. data/lib/moov/models/components/webhookstatus.rb +2 -0
  126. data/lib/moov/models/components.rb +4 -25
  127. data/lib/moov/models/operations/createtransfer_request.rb +2 -2
  128. data/lib/moov/models/operations/getpaymentmethod_response.rb +2 -2
  129. data/lib/moov/models/operations/getscheduledoccurrence_request.rb +4 -4
  130. data/lib/moov/models/operations/hydrate.rb +2 -0
  131. data/lib/moov/models/operations/listpaymentmethods_response.rb +2 -2
  132. data/lib/moov/payment_methods.rb +2 -2
  133. data/lib/moov/sdkconfiguration.rb +4 -4
  134. data/lib/moov/utils/url.rb +1 -1
  135. data/lib/moov/utils/utils.rb +0 -12
  136. metadata +12 -55
  137. data/lib/crystalline/enum.rbi +0 -17
  138. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod.rb +0 -40
  139. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod.rbi +0 -17
  140. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod_paymentmethodtype.rb +0 -18
  141. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod_paymentmethodtype.rbi +0 -11
  142. data/lib/moov/models/components/achcreditstandardtransferpaymentmethod.rb +0 -40
  143. data/lib/moov/models/components/achcreditstandardtransferpaymentmethod.rbi +0 -17
  144. data/lib/moov/models/components/achcreditstandardtransferpaymentmethod_paymentmethodtype.rbi +0 -11
  145. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod.rb +0 -40
  146. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod.rbi +0 -17
  147. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod_paymentmethodtype.rb +0 -18
  148. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod_paymentmethodtype.rbi +0 -11
  149. data/lib/moov/models/components/achdebitfundtransferpaymentmethod.rb +0 -40
  150. data/lib/moov/models/components/achdebitfundtransferpaymentmethod.rbi +0 -17
  151. data/lib/moov/models/components/achdebitfundtransferpaymentmethod_paymentmethodtype.rb +0 -18
  152. data/lib/moov/models/components/achdebitfundtransferpaymentmethod_paymentmethodtype.rbi +0 -11
  153. data/lib/moov/models/components/applepaytransferpaymentmethod.rb +0 -40
  154. data/lib/moov/models/components/applepaytransferpaymentmethod_paymentmethodtype.rb +0 -18
  155. data/lib/moov/models/components/applepaytransferpaymentmethod_paymentmethodtype.rbi +0 -11
  156. data/lib/moov/models/components/cardpaymenttransferpaymentmethod.rb +0 -40
  157. data/lib/moov/models/components/cardpaymenttransferpaymentmethod.rbi +0 -17
  158. data/lib/moov/models/components/cardpaymenttransferpaymentmethod_paymentmethodtype.rb +0 -18
  159. data/lib/moov/models/components/cardpaymenttransferpaymentmethod_paymentmethodtype.rbi +0 -11
  160. data/lib/moov/models/components/moovwallettransferpaymentmethod.rbi +0 -17
  161. data/lib/moov/models/components/moovwallettransferpaymentmethod_paymentmethodtype.rbi +0 -11
  162. data/lib/moov/models/components/pullfromcardtransferpaymentmethod.rb +0 -40
  163. data/lib/moov/models/components/pullfromcardtransferpaymentmethod.rbi +0 -17
  164. data/lib/moov/models/components/pullfromcardtransferpaymentmethod_paymentmethodtype.rb +0 -18
  165. data/lib/moov/models/components/pullfromcardtransferpaymentmethod_paymentmethodtype.rbi +0 -11
  166. data/lib/moov/models/components/pushtocardtransferpaymentmethod.rb +0 -40
  167. data/lib/moov/models/components/pushtocardtransferpaymentmethod.rbi +0 -17
  168. data/lib/moov/models/components/pushtocardtransferpaymentmethod_paymentmethodtype.rb +0 -18
  169. data/lib/moov/models/components/rtpcredittransferpaymentmethod.rb +0 -40
  170. data/lib/moov/models/components/rtpcredittransferpaymentmethod.rbi +0 -17
  171. data/lib/moov/models/components/rtpcredittransferpaymentmethod_paymentmethodtype.rb +0 -18
  172. data/lib/moov/models/components/rtpcredittransferpaymentmethod_paymentmethodtype.rbi +0 -11
  173. data/lib/moov/models/components/transferpaymentmethod.rb +0 -27
  174. data/lib/moov/models/components/transferpaymentmethod.rbi +0 -11
  175. data/lib/moov/models/components/transferpaymentmethodsbankaccount.rb +0 -70
  176. data/lib/moov/models/components/transferpaymentmethodsbankaccount.rbi +0 -31
  177. data/lib/moov/models/components/transferpaymentmethodscard.rb +0 -98
  178. data/lib/moov/models/components/transferpaymentmethodscard.rbi +0 -45
  179. data/lib/moov/models/components/transferpaymentmethodswallet.rb +0 -42
  180. data/lib/moov/models/components/transferpaymentmethodswallet.rbi +0 -17
  181. data/lib/moov/models/components/transferpaymentmethodtype.rb +0 -27
  182. data/lib/moov/models/components/transferpaymentmethodtype.rbi +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7921977142466a09eac3e918914d9cdbbee445764444923cdc38f5454dff338
4
- data.tar.gz: f195354329f59c18ae253199fe0432a13e79e83b1de36006b867239f034c5b46
3
+ metadata.gz: 7ba7ee5ed1b8109c5866302683fac128fa73006e9785f17d37b0b78efd9e4cc1
4
+ data.tar.gz: 5895923414db4e3f3be4d654e8b8c1dd76725823f3cc3a8b52c0112926b8618e
5
5
  SHA512:
6
- metadata.gz: 40ba73ba20c847815b8b18eb999f98ed352c5bdeebcefd76e6b1686af4dd5aebb22bb24dd702b385c8b8de48cc4cda3dc17c48dc91c310f3ae69cc477845c75d
7
- data.tar.gz: 7492c65da9701ee97e2e68b5beb4a29c5b1f60d84e2766faa876fd1232964322b851ebaf93572f3cf7d0367735b39e7667b84d9541a400602b07aaf4d7852779
6
+ metadata.gz: 07cbf87b8ef379f72b93da535aced3f5637b4822d6d448c9ae074db4154838648f78e6f0ed6bd81d73f1c50ebb1599cfed56e53535ced8acfebd83a12458dd9c
7
+ data.tar.gz: 862e3fa4c2128bf025b2caf1cb2971254c46b59a197345532b4c371dc9fbcfe5b6055ed1da62ad8fc7bd607379943ca184edc4499a9ad82e1f2087ba1156f53a
@@ -84,9 +84,7 @@ module Crystalline
84
84
  # If field is nilable, and the value is not in the dict, just move to the next field
85
85
  next if value.nil?
86
86
 
87
- if field_type.is_a?(Crystalline::DiscriminatedUnion)
88
- to_build[key] = field_type.parse(value)
89
- elsif Crystalline::Utils.arr? field_type
87
+ if Crystalline::Utils.arr? field_type
90
88
  inner_type = Crystalline::Utils.arr_of(field_type)
91
89
  unmarshalled_array = value.map { |f| unmarshal_single(inner_type, f, format_metadata) }
92
90
  to_build[key] = unmarshalled_array
@@ -114,21 +112,17 @@ module Crystalline
114
112
  union_types = Crystalline::Utils.get_union_types(field_type)
115
113
  union_types = union_types.sort_by { |klass| Crystalline.non_nilable_attr_count(klass) }
116
114
 
117
- if Crystalline.union_strategy == :populated_fields
118
- to_build[key] = Crystalline.unmarshal_union_populated_fields(value, union_types)
119
- else
120
- union_types.each do |union_type|
121
- begin
122
- to_build[key] = Crystalline.unmarshal_json(value, union_type)
123
- rescue TypeError
124
- next
125
- rescue NoMethodError
126
- next
127
- rescue KeyError
128
- next
129
- end
130
- break
115
+ union_types.each do |union_type|
116
+ begin
117
+ to_build[key] = Crystalline.unmarshal_json(value, union_type)
118
+ rescue TypeError
119
+ next
120
+ rescue NoMethodError
121
+ next
122
+ rescue KeyError
123
+ next
131
124
  end
125
+ break
132
126
  end
133
127
  end
134
128
  elsif field_type.instance_of?(Class) && field_type.include?(::Crystalline::MetadataFields)
@@ -188,10 +182,10 @@ module Crystalline
188
182
  next if f.nil? && !required
189
183
  result[key] = nil if f.nil? && required
190
184
 
191
- if f.is_a? ::Array
185
+ if f.is_a? Array
192
186
  result[key] = f.map { |o| marshal_single(o) }
193
- elsif f.is_a? ::Hash
194
- result[key] = f.transform_values { |v| marshal_single(v) }
187
+ elsif f.is_a? Hash
188
+ result[key] = f.map { |k, v| [k, marshal_single(v)] }
195
189
  else
196
190
  result[key] = marshal_single(f)
197
191
  end
@@ -4,11 +4,6 @@
4
4
  # frozen_string_literal: true
5
5
 
6
6
  module Crystalline
7
- @union_strategy = :left_to_right
8
-
9
- class << self
10
- attr_accessor :union_strategy
11
- end
12
7
 
13
8
  def self.to_dict(complex)
14
9
  if complex.is_a? Array
@@ -34,18 +29,21 @@ module Crystalline
34
29
  if Crystalline::Utils.nilable? type
35
30
  type = Crystalline::Utils.nilable_of type
36
31
  end
37
- if type.is_a?(Crystalline::DiscriminatedUnion)
38
- type.parse(data)
39
- elsif type.instance_of?(Class) && type.include?(::Crystalline::MetadataFields)
32
+ if type.instance_of?(Class) && type.include?(::Crystalline::MetadataFields)
40
33
  type.from_dict(data)
41
34
  elsif Crystalline::Utils.union? type
42
35
  union_types = Crystalline::Utils.get_union_types(type)
43
36
  union_types = union_types.sort_by { |klass| Crystalline.non_nilable_attr_count(klass) }
44
37
 
45
- if Crystalline.union_strategy == :populated_fields
46
- Crystalline.unmarshal_union_populated_fields(data, union_types)
47
- else
48
- Crystalline.unmarshal_union_left_to_right(data, union_types)
38
+ union_types.each do |union_type|
39
+ unmarshalled_val = Crystalline.unmarshal_json(data, union_type)
40
+ return unmarshalled_val
41
+ rescue TypeError
42
+ next
43
+ rescue NoMethodError
44
+ next
45
+ rescue KeyError
46
+ next
49
47
  end
50
48
  elsif Crystalline::Utils.arr? type
51
49
  data.map { |v| Crystalline.unmarshal_json(v, Crystalline::Utils.arr_of(type)) }
@@ -57,8 +55,6 @@ module Crystalline
57
55
  Crystalline::Utils.to_boolean(data)
58
56
  elsif type.is_a?(Class) && type < T::Enum
59
57
  type.deserialize(data)
60
- elsif type.is_a?(Class) && type.respond_to?(:enums) && type.respond_to?(:deserialize)
61
- type.deserialize(data)
62
58
  else
63
59
  data
64
60
  end
@@ -78,88 +74,6 @@ module Crystalline
78
74
  end
79
75
  end
80
76
 
81
- def self.unmarshal_union_left_to_right(data, union_types)
82
- union_types.each do |union_type|
83
- return Crystalline.unmarshal_json(data, union_type)
84
- rescue TypeError
85
- next
86
- rescue NoMethodError
87
- next
88
- rescue KeyError
89
- next
90
- end
91
- nil
92
- end
93
-
94
- def self.unmarshal_union_populated_fields(data, union_types)
95
- best_value = nil
96
- best_matched = -1
97
- best_inexact = 0
98
- best_unmatched = 0
99
-
100
- union_types.each do |union_type|
101
- value = Crystalline.unmarshal_json(data, union_type)
102
- matched, inexact, unmatched = count_matched_fields(value, data)
103
-
104
- if best_value.nil? ||
105
- matched > best_matched ||
106
- (matched == best_matched && inexact < best_inexact) ||
107
- (matched == best_matched && inexact == best_inexact && unmatched < best_unmatched)
108
- best_value = value
109
- best_matched = matched
110
- best_inexact = inexact
111
- best_unmatched = unmatched
112
- end
113
- rescue TypeError
114
- next
115
- rescue NoMethodError
116
- next
117
- rescue KeyError
118
- next
119
- end
120
- best_value
121
- end
122
-
123
- def self.count_matched_fields(value, raw_data)
124
- matched = 0
125
- inexact = 0
126
- unmatched = 0
127
-
128
- if value.is_a?(Crystalline::Unknown)
129
- return [0, 0, 0]
130
- elsif value.class.include?(::Crystalline::MetadataFields)
131
- value.fields.each do |field|
132
- format_metadata = field.metadata.fetch(:format_json, {})
133
- lookup = format_metadata.fetch(:letter_case, nil)&.call
134
- field_val = value.send(field.name)
135
-
136
- if raw_data.is_a?(::Hash) && lookup && raw_data.key?(lookup)
137
- if field_val.class.include?(::Crystalline::MetadataFields) && raw_data[lookup].is_a?(::Hash)
138
- nested_matched, nested_inexact, nested_unmatched = count_matched_fields(field_val, raw_data[lookup])
139
- matched += nested_matched
140
- inexact += nested_inexact
141
- unmatched += nested_unmatched
142
- else
143
- matched += 1
144
- if field_val.respond_to?(:known?) && !field_val.known?
145
- inexact += 1
146
- end
147
- end
148
- elsif !::Crystalline::Utils.nilable?(field.type)
149
- unmatched += 1
150
- end
151
- end
152
- elsif value.is_a?(::Array)
153
- matched = value.length
154
- elsif value.is_a?(::Hash)
155
- matched = value.length
156
- else
157
- matched = 1
158
- end
159
-
160
- [matched, inexact, unmatched]
161
- end
162
-
163
77
  def self.non_nilable_attr_count(klass)
164
78
  # somewhat sane sort ordering for Union deserialization.
165
79
  # All Crystalline objects return the number of non-nilable fields
@@ -40,58 +40,6 @@ module Crystalline
40
40
  class Boolean
41
41
  end
42
42
 
43
- # Wraps an unrecognized payload from an open discriminated union.
44
- # Produced when the discriminator value is missing, unknown, or schema validation fails.
45
- class Unknown
46
- attr_reader :raw
47
-
48
- def initialize(raw:)
49
- @raw = raw
50
- end
51
-
52
- def unknown?
53
- true
54
- end
55
- end
56
-
57
- # Forward-compatible discriminated union parser.
58
- # Known discriminator values are deserialized to their mapped types.
59
- # Unknown or invalid payloads are captured as Crystalline::Unknown.
60
- class DiscriminatedUnion
61
- attr_reader :discriminator, :variants
62
-
63
- def initialize(discriminator, variants)
64
- @discriminator = discriminator
65
- @variants = variants
66
- end
67
-
68
- def parse(payload)
69
- unless payload.is_a?(::Hash)
70
- return Unknown.new(raw: payload)
71
- end
72
-
73
- disc_value = payload[@discriminator]
74
- unless disc_value.is_a?(::String)
75
- return Unknown.new(raw: payload)
76
- end
77
-
78
- variant_type = @variants[disc_value]
79
- unless variant_type
80
- return Unknown.new(raw: payload)
81
- end
82
-
83
- begin
84
- Crystalline.unmarshal_json(payload, variant_type)
85
- rescue StandardError
86
- Unknown.new(raw: payload)
87
- end
88
- end
89
- end
90
-
91
- def self.unknown?(value)
92
- value.is_a?(Unknown)
93
- end
94
-
95
43
  module Enum
96
44
  def self.included(base)
97
45
  base.extend(ClassMethods)
@@ -119,19 +67,9 @@ module Crystalline
119
67
  end
120
68
  end
121
69
 
122
- def open!
123
- @open = true
124
- end
125
-
126
- def open?
127
- @open == true
128
- end
129
-
130
70
  def deserialize(val)
131
71
  if @mapping.include? val
132
72
  @mapping[val]
133
- elsif open?
134
- new(val)
135
73
  else
136
74
  raise "Invalid value for enum: #{val}"
137
75
  end
@@ -141,22 +79,5 @@ module Crystalline
141
79
  def serialize
142
80
  @val
143
81
  end
144
-
145
- def known?
146
- self.class.instance_variable_get(:@mapping)&.value?(self) || false
147
- end
148
-
149
- def ==(other)
150
- other = other.serialize if other.is_a?(self.class)
151
- @val == other
152
- end
153
-
154
- def eql?(other)
155
- self == other
156
- end
157
-
158
- def hash
159
- @val.hash
160
- end
161
82
  end
162
83
  end
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # AccountType - The type of entity represented by this account.
11
11
  class AccountType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  INDIVIDUAL = new('individual')
14
16
  BUSINESS = new('business')
@@ -11,6 +11,8 @@ module Moov
11
11
  #
12
12
  # @deprecated class: This will be removed in a future release, please migrate away from it as soon as possible.
13
13
  class AccountVerificationStatus < T::Enum
14
+
15
+
14
16
  enums do
15
17
  UNVERIFIED = new('unverified')
16
18
  PENDING = new('pending')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class AchCreditSameDayPaymentMethodPaymentMethodType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  ACH_CREDIT_SAME_DAY = new('ach-credit-same-day')
14
16
  end
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class AchCreditStandardPaymentMethodPaymentMethodType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  ACH_CREDIT_STANDARD = new('ach-credit-standard')
14
16
  end
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class AchDebitCollectPaymentMethodPaymentMethodType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  ACH_DEBIT_COLLECT = new('ach-debit-collect')
14
16
  end
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class AchDebitFundPaymentMethodPaymentMethodType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  ACH_DEBIT_FUND = new('ach-debit-fund')
14
16
  end
@@ -30,6 +30,8 @@ module Moov
30
30
  # - R38: Stop Payment on Source Document (Adjustment Entry)
31
31
  # - R39: Improper Source Document
32
32
  class ACHReturnCode < T::Enum
33
+
34
+
33
35
  enums do
34
36
  R02 = new('R02')
35
37
  R03 = new('R03')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # ACHTransactionStatus - Status of a transaction within the ACH lifecycle.
11
11
  class ACHTransactionStatus < T::Enum
12
+
13
+
12
14
  enums do
13
15
  UNKNOWN = new('')
14
16
  INITIATED = new('initiated')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class ApplePayPaymentMethodPaymentMethodType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  APPLE_PAY = new('apple-pay')
14
16
  end
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # ApplicationScope - A permission that the application requests on another account.
11
11
  class ApplicationScope < T::Enum
12
+
13
+
12
14
  enums do
13
15
  ACCOUNTS_READ = new('accounts.read')
14
16
  ACCOUNTS_WRITE = new('accounts.write')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # BankAccountHolderType - The type of holder on a funding source.
11
11
  class BankAccountHolderType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  INDIVIDUAL = new('individual')
14
16
  BUSINESS = new('business')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class BankAccountStatus < T::Enum
12
+
13
+
12
14
  enums do
13
15
  NEW = new('new')
14
16
  VERIFIED = new('verified')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # BankAccountStatusReason - The reason the bank account status changed to the current value.
11
11
  class BankAccountStatusReason < T::Enum
12
+
13
+
12
14
  enums do
13
15
  BANK_ACCOUNT_CREATED = new('bank-account-created')
14
16
  VERIFICATION_INITIATED = new('verification-initiated')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # BankAccountType - The bank account type.
11
11
  class BankAccountType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  CHECKING = new('checking')
14
16
  SAVINGS = new('savings')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class BankAccountVerificationMethod < T::Enum
12
+
13
+
12
14
  enums do
13
15
  INSTANT = new('instant')
14
16
  ACH = new('ach')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class BankAccountVerificationStatus < T::Enum
12
+
13
+
12
14
  enums do
13
15
  NEW = new('new')
14
16
  SENT_CREDIT = new('sent-credit')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class BankAccountWaitFor < T::Enum
12
+
13
+
12
14
  enums do
13
15
  PAYMENT_METHOD = new('payment-method')
14
16
  RAIL_RESPONSE = new('rail-response')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # BusinessType - The type of entity represented by this business.
11
11
  class BusinessType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  SOLE_PROPRIETORSHIP = new('soleProprietorship')
14
16
  UNINCORPORATED_ASSOCIATION = new('unincorporatedAssociation')
@@ -12,6 +12,8 @@ module Moov
12
12
  # If set to "auto" the UI will automatically select between
13
13
  # "pay" and "confirm" for payments and payouts respectively.
14
14
  class CallToAction < T::Enum
15
+
16
+
15
17
  enums do
16
18
  PAY = new('pay')
17
19
  BOOK = new('book')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class CancellationStatus < T::Enum
12
+
13
+
12
14
  enums do
13
15
  PENDING = new('pending')
14
16
  COMPLETED = new('completed')
@@ -11,6 +11,8 @@ module Moov
11
11
  #
12
12
  # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
13
13
  class CapabilityID < T::Enum
14
+
15
+
14
16
  enums do
15
17
  TRANSFERS = new('transfers')
16
18
  SEND_FUNDS = new('send-funds')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # CapabilityStatus - The status of the capability requested for an account.
11
11
  class CapabilityStatus < T::Enum
12
+
13
+
12
14
  enums do
13
15
  ENABLED = new('enabled')
14
16
  DISABLED = new('disabled')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # CardAcquiringModel - Specifies the card processing pricing model
11
11
  class CardAcquiringModel < T::Enum
12
+
13
+
12
14
  enums do
13
15
  COST_PLUS = new('cost-plus')
14
16
  FLAT_RATE = new('flat-rate')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # CardBrand - The card brand.
11
11
  class CardBrand < T::Enum
12
+
13
+
12
14
  enums do
13
15
  AMERICAN_EXPRESS = new('American Express')
14
16
  DISCOVER = new('Discover')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
  # CardIssuingNetwork - The name of the network a card transaction is routed through.
11
11
  class CardIssuingNetwork < T::Enum
12
+
13
+
12
14
  enums do
13
15
  DISCOVER = new('discover')
14
16
  SHAZAM = new('shazam')
@@ -9,6 +9,8 @@ module Moov
9
9
  module Components
10
10
 
11
11
  class CardPaymentPaymentMethodPaymentMethodType < T::Enum
12
+
13
+
12
14
  enums do
13
15
  CARD_PAYMENT = new('card-payment')
14
16
  end
@@ -7,23 +7,23 @@
7
7
  module Moov
8
8
  module Models
9
9
  module Components
10
-
11
- class MoovWalletTransferPaymentMethod
10
+ # A card used at point of sale terminal for a card present transaction as contained within a payment method.
11
+ class CardPresentPaymentPaymentMethod
12
12
  extend T::Sig
13
13
  include Crystalline::MetadataFields
14
14
 
15
15
  # ID of the payment method.
16
16
  field :payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodID'), required: true } }
17
17
 
18
- field :payment_method_type, Models::Components::MoovWalletTransferPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': Utils.enum_from_string(Models::Components::MoovWalletTransferPaymentMethodPaymentMethodType, false) } }
19
-
20
- field :wallet, Models::Components::TransferPaymentMethodsWallet, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('wallet'), required: true } }
18
+ field :payment_method_type, Models::Components::CardPresentPaymentPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': Utils.enum_from_string(Models::Components::CardPresentPaymentPaymentMethodPaymentMethodType, false) } }
19
+ # Describes payment card details captured with tap or in-person payment.
20
+ field :terminal_card, Crystalline::Nilable.new(Models::Components::TerminalCard), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('terminalCard') } }
21
21
 
22
- sig { params(payment_method_id: ::String, payment_method_type: Models::Components::MoovWalletTransferPaymentMethodPaymentMethodType, wallet: Models::Components::TransferPaymentMethodsWallet).void }
23
- def initialize(payment_method_id:, payment_method_type:, wallet:)
22
+ sig { params(payment_method_id: ::String, payment_method_type: Models::Components::CardPresentPaymentPaymentMethodPaymentMethodType, terminal_card: T.nilable(Models::Components::TerminalCard)).void }
23
+ def initialize(payment_method_id:, payment_method_type:, terminal_card: nil)
24
24
  @payment_method_id = payment_method_id
25
25
  @payment_method_type = payment_method_type
26
- @wallet = wallet
26
+ @terminal_card = terminal_card
27
27
  end
28
28
 
29
29
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -31,7 +31,7 @@ module Moov
31
31
  return false unless other.is_a? self.class
32
32
  return false unless @payment_method_id == other.payment_method_id
33
33
  return false unless @payment_method_type == other.payment_method_type
34
- return false unless @wallet == other.wallet
34
+ return false unless @terminal_card == other.terminal_card
35
35
  true
36
36
  end
37
37
  end
@@ -2,16 +2,16 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
 
5
- class Moov::Models::Components::ApplePayTransferPaymentMethod
5
+ class Moov::Models::Components::CardPresentPaymentPaymentMethod
6
6
  extend ::Crystalline::MetadataFields::ClassMethods
7
7
  end
8
8
 
9
9
 
10
- class Moov::Models::Components::ApplePayTransferPaymentMethod
10
+ class Moov::Models::Components::CardPresentPaymentPaymentMethod
11
11
  def payment_method_id(); end
12
12
  def payment_method_id=(str_); end
13
13
  def payment_method_type(); end
14
14
  def payment_method_type=(str_); end
15
- def apple_pay(); end
16
- def apple_pay=(str_); end
15
+ def terminal_card(); end
16
+ def terminal_card=(str_); end
17
17
  end
@@ -8,9 +8,11 @@ module Moov
8
8
  module Models
9
9
  module Components
10
10
 
11
- class MoovWalletTransferPaymentMethodPaymentMethodType < T::Enum
11
+ class CardPresentPaymentPaymentMethodPaymentMethodType < T::Enum
12
+
13
+
12
14
  enums do
13
- MOOV_WALLET = new('moov-wallet')
15
+ CARD_PRESENT_PAYMENT = new('card-present-payment')
14
16
  end
15
17
  end
16
18
  end
@@ -2,10 +2,10 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
 
5
- class Moov::Models::Components::PushToCardTransferPaymentMethodPaymentMethodType
5
+ class Moov::Models::Components::CardPresentPaymentPaymentMethodPaymentMethodType
6
6
  extend ::Crystalline::MetadataFields::ClassMethods
7
7
  end
8
8
 
9
9
 
10
- class Moov::Models::Components::PushToCardTransferPaymentMethodPaymentMethodType
10
+ class Moov::Models::Components::CardPresentPaymentPaymentMethodPaymentMethodType
11
11
  end