lithic 0.1.0.pre.alpha.17 → 0.1.0.pre.alpha.19

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 (427) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -0
  3. data/README.md +7 -7
  4. data/lib/lithic/file_part.rb +55 -0
  5. data/lib/lithic/internal/cursor_page.rb +1 -1
  6. data/lib/lithic/internal/single_page.rb +1 -1
  7. data/lib/lithic/internal/transport/base_client.rb +7 -7
  8. data/lib/lithic/internal/transport/pooled_net_requester.rb +1 -1
  9. data/lib/lithic/internal/type/array_of.rb +2 -0
  10. data/lib/lithic/internal/type/base_model.rb +1 -1
  11. data/lib/lithic/internal/type/base_page.rb +1 -1
  12. data/lib/lithic/internal/type/converter.rb +4 -1
  13. data/lib/lithic/internal/type/{io_like.rb → file_input.rb} +30 -15
  14. data/lib/lithic/internal/type/hash_of.rb +2 -0
  15. data/lib/lithic/internal/util.rb +69 -61
  16. data/lib/lithic/models/account.rb +50 -19
  17. data/lib/lithic/models/account_holder.rb +139 -59
  18. data/lib/lithic/models/account_holder_create_params.rb +144 -52
  19. data/lib/lithic/models/account_holder_create_response.rb +18 -7
  20. data/lib/lithic/models/account_holder_list_params.rb +33 -11
  21. data/lib/lithic/models/account_holder_simulate_enrollment_document_review_params.rb +13 -4
  22. data/lib/lithic/models/account_holder_simulate_enrollment_review_params.rb +10 -3
  23. data/lib/lithic/models/account_holder_simulate_enrollment_review_response.rb +169 -60
  24. data/lib/lithic/models/account_holder_update_params.rb +147 -53
  25. data/lib/lithic/models/account_holder_update_response.rb +202 -74
  26. data/lib/lithic/models/account_holder_upload_document_params.rb +4 -2
  27. data/lib/lithic/models/account_list_params.rb +17 -5
  28. data/lib/lithic/models/account_spend_limits.rb +27 -9
  29. data/lib/lithic/models/account_update_params.rb +17 -5
  30. data/lib/lithic/models/address.rb +17 -6
  31. data/lib/lithic/models/address_update.rb +17 -6
  32. data/lib/lithic/models/aggregate_balance.rb +26 -10
  33. data/lib/lithic/models/aggregate_balance_list_params.rb +2 -1
  34. data/lib/lithic/models/auth_rules/auth_rule.rb +24 -9
  35. data/lib/lithic/models/auth_rules/auth_rule_condition.rb +8 -3
  36. data/lib/lithic/models/auth_rules/v2/backtest_create_params.rb +4 -2
  37. data/lib/lithic/models/auth_rules/v2/backtest_create_response.rb +1 -1
  38. data/lib/lithic/models/auth_rules/v2/backtest_results.rb +46 -18
  39. data/lib/lithic/models/auth_rules/v2_apply_params.rb +8 -4
  40. data/lib/lithic/models/auth_rules/v2_apply_response.rb +31 -12
  41. data/lib/lithic/models/auth_rules/v2_create_params.rb +14 -7
  42. data/lib/lithic/models/auth_rules/v2_create_response.rb +31 -12
  43. data/lib/lithic/models/auth_rules/v2_draft_params.rb +2 -1
  44. data/lib/lithic/models/auth_rules/v2_draft_response.rb +31 -12
  45. data/lib/lithic/models/auth_rules/v2_list_params.rb +15 -5
  46. data/lib/lithic/models/auth_rules/v2_list_response.rb +31 -12
  47. data/lib/lithic/models/auth_rules/v2_promote_response.rb +31 -12
  48. data/lib/lithic/models/auth_rules/v2_retrieve_response.rb +32 -12
  49. data/lib/lithic/models/auth_rules/v2_update_params.rb +15 -6
  50. data/lib/lithic/models/auth_rules/v2_update_response.rb +31 -12
  51. data/lib/lithic/models/auth_rules/velocity_limit_params.rb +27 -7
  52. data/lib/lithic/models/auth_stream_secret.rb +1 -1
  53. data/lib/lithic/models/balance.rb +26 -10
  54. data/lib/lithic/models/balance_list_params.rb +12 -4
  55. data/lib/lithic/models/book_transfer_create_params.rb +23 -8
  56. data/lib/lithic/models/book_transfer_list_params.rb +28 -9
  57. data/lib/lithic/models/book_transfer_response.rb +54 -20
  58. data/lib/lithic/models/book_transfer_reverse_params.rb +2 -1
  59. data/lib/lithic/models/card.rb +7 -2
  60. data/lib/lithic/models/card_convert_physical_params.rb +12 -4
  61. data/lib/lithic/models/card_create_params.rb +45 -15
  62. data/lib/lithic/models/card_embed_params.rb +4 -2
  63. data/lib/lithic/models/card_list_params.rb +21 -7
  64. data/lib/lithic/models/card_program.rb +17 -7
  65. data/lib/lithic/models/card_program_list_params.rb +11 -3
  66. data/lib/lithic/models/card_provision_params.rb +20 -6
  67. data/lib/lithic/models/card_reissue_params.rb +12 -4
  68. data/lib/lithic/models/card_renew_params.rb +18 -6
  69. data/lib/lithic/models/card_search_by_pan_params.rb +2 -1
  70. data/lib/lithic/models/card_spend_limits.rb +27 -9
  71. data/lib/lithic/models/card_update_params.rb +21 -7
  72. data/lib/lithic/models/cards/aggregate_balance_list_params.rb +4 -2
  73. data/lib/lithic/models/cards/aggregate_balance_list_response.rb +24 -9
  74. data/lib/lithic/models/cards/balance_list_params.rb +7 -2
  75. data/lib/lithic/models/cards/balance_list_response.rb +26 -10
  76. data/lib/lithic/models/cards/financial_transaction_list_params.rb +21 -7
  77. data/lib/lithic/models/carrier.rb +1 -1
  78. data/lib/lithic/models/credit_products/prime_rate_create_params.rb +4 -2
  79. data/lib/lithic/models/credit_products/prime_rate_retrieve_params.rb +4 -2
  80. data/lib/lithic/models/credit_products/prime_rate_retrieve_response.rb +6 -4
  81. data/lib/lithic/models/digital_card_art.rb +13 -7
  82. data/lib/lithic/models/digital_card_art_list_params.rb +11 -3
  83. data/lib/lithic/models/dispute.rb +40 -18
  84. data/lib/lithic/models/dispute_create_params.rb +10 -5
  85. data/lib/lithic/models/dispute_evidence.rb +17 -7
  86. data/lib/lithic/models/dispute_initiate_evidence_upload_params.rb +2 -1
  87. data/lib/lithic/models/dispute_list_evidences_params.rb +17 -5
  88. data/lib/lithic/models/dispute_list_params.rb +21 -7
  89. data/lib/lithic/models/dispute_update_params.rb +8 -4
  90. data/lib/lithic/models/document.rb +31 -14
  91. data/lib/lithic/models/event.rb +9 -3
  92. data/lib/lithic/models/event_list_attempts_params.rb +18 -5
  93. data/lib/lithic/models/event_list_params.rb +21 -7
  94. data/lib/lithic/models/event_subscription.rb +7 -3
  95. data/lib/lithic/models/events/subscription_create_params.rb +12 -4
  96. data/lib/lithic/models/events/subscription_list_attempts_params.rb +18 -5
  97. data/lib/lithic/models/events/subscription_list_params.rb +11 -3
  98. data/lib/lithic/models/events/subscription_recover_params.rb +9 -2
  99. data/lib/lithic/models/events/subscription_replay_missing_params.rb +9 -2
  100. data/lib/lithic/models/events/subscription_retrieve_secret_response.rb +1 -1
  101. data/lib/lithic/models/events/subscription_send_simulated_example_params.rb +2 -1
  102. data/lib/lithic/models/events/subscription_update_params.rb +12 -4
  103. data/lib/lithic/models/external_bank_account_create_params.rb +40 -16
  104. data/lib/lithic/models/external_bank_account_create_response.rb +53 -22
  105. data/lib/lithic/models/external_bank_account_list_params.rb +17 -3
  106. data/lib/lithic/models/external_bank_account_list_response.rb +53 -22
  107. data/lib/lithic/models/external_bank_account_retrieve_response.rb +53 -22
  108. data/lib/lithic/models/external_bank_account_retry_micro_deposits_response.rb +54 -22
  109. data/lib/lithic/models/external_bank_account_retry_prenote_response.rb +53 -22
  110. data/lib/lithic/models/external_bank_account_update_params.rb +21 -8
  111. data/lib/lithic/models/external_bank_account_update_response.rb +53 -22
  112. data/lib/lithic/models/external_bank_accounts/micro_deposit_create_response.rb +54 -22
  113. data/lib/lithic/models/external_payment_list_params.rb +27 -9
  114. data/lib/lithic/models/financial_account.rb +25 -8
  115. data/lib/lithic/models/financial_account_list_params.rb +6 -3
  116. data/lib/lithic/models/financial_account_update_status_params.rb +4 -2
  117. data/lib/lithic/models/financial_accounts/balance_list_params.rb +7 -2
  118. data/lib/lithic/models/financial_accounts/balance_list_response.rb +26 -10
  119. data/lib/lithic/models/financial_accounts/credit_configuration_update_params.rb +6 -2
  120. data/lib/lithic/models/financial_accounts/financial_account_credit_config.rb +12 -5
  121. data/lib/lithic/models/financial_accounts/financial_transaction_list_params.rb +22 -7
  122. data/lib/lithic/models/financial_accounts/loan_tape.rb +119 -47
  123. data/lib/lithic/models/financial_accounts/loan_tape_list_params.rb +17 -5
  124. data/lib/lithic/models/financial_accounts/loan_tape_retrieve_params.rb +2 -1
  125. data/lib/lithic/models/financial_accounts/statement.rb +97 -40
  126. data/lib/lithic/models/financial_accounts/statement_list_params.rb +19 -6
  127. data/lib/lithic/models/financial_accounts/statement_retrieve_params.rb +2 -1
  128. data/lib/lithic/models/financial_accounts/statements/line_item_list_params.rb +14 -4
  129. data/lib/lithic/models/financial_accounts/statements/statement_line_items.rb +25 -9
  130. data/lib/lithic/models/financial_transaction.rb +42 -15
  131. data/lib/lithic/models/kyb.rb +101 -36
  132. data/lib/lithic/models/kyb_business_entity.rb +35 -12
  133. data/lib/lithic/models/kyc.rb +34 -12
  134. data/lib/lithic/models/kyc_exempt.rb +23 -9
  135. data/lib/lithic/models/management_operation_list_params.rb +25 -8
  136. data/lib/lithic/models/message_attempt.rb +17 -7
  137. data/lib/lithic/models/non_pci_card.rb +73 -28
  138. data/lib/lithic/models/payment.rb +52 -18
  139. data/lib/lithic/models/payment_create_params.rb +14 -1
  140. data/lib/lithic/models/payment_create_response.rb +1 -1
  141. data/lib/lithic/models/payment_list_params.rb +23 -5
  142. data/lib/lithic/models/payment_retry_response.rb +1 -1
  143. data/lib/lithic/models/payment_simulate_action_params.rb +6 -3
  144. data/lib/lithic/models/payment_simulate_action_response.rb +5 -3
  145. data/lib/lithic/models/payment_simulate_receipt_params.rb +14 -5
  146. data/lib/lithic/models/payment_simulate_receipt_response.rb +5 -3
  147. data/lib/lithic/models/payment_simulate_release_params.rb +2 -1
  148. data/lib/lithic/models/payment_simulate_release_response.rb +5 -3
  149. data/lib/lithic/models/payment_simulate_return_params.rb +4 -2
  150. data/lib/lithic/models/payment_simulate_return_response.rb +5 -3
  151. data/lib/lithic/models/reports/settlement/network_total_list_params.rb +30 -11
  152. data/lib/lithic/models/reports/settlement/network_total_list_response.rb +39 -14
  153. data/lib/lithic/models/reports/settlement/network_total_retrieve_response.rb +39 -14
  154. data/lib/lithic/models/reports/settlement_list_details_params.rb +11 -3
  155. data/lib/lithic/models/required_document.rb +10 -3
  156. data/lib/lithic/models/responder_endpoint_check_status_params.rb +2 -1
  157. data/lib/lithic/models/responder_endpoint_create_params.rb +4 -2
  158. data/lib/lithic/models/responder_endpoint_create_response.rb +1 -1
  159. data/lib/lithic/models/responder_endpoint_delete_params.rb +2 -1
  160. data/lib/lithic/models/responder_endpoint_status.rb +3 -2
  161. data/lib/lithic/models/settlement_detail.rb +50 -21
  162. data/lib/lithic/models/settlement_report.rb +29 -10
  163. data/lib/lithic/models/settlement_summary_details.rb +21 -8
  164. data/lib/lithic/models/shipping_address.rb +31 -11
  165. data/lib/lithic/models/three_ds/authentication_retrieve_response.rb +215 -71
  166. data/lib/lithic/models/three_ds/authentication_simulate_otp_entry_params.rb +9 -2
  167. data/lib/lithic/models/three_ds/authentication_simulate_params.rb +28 -8
  168. data/lib/lithic/models/three_ds/authentication_simulate_response.rb +5 -1
  169. data/lib/lithic/models/three_ds/challenge_response.rb +7 -2
  170. data/lib/lithic/models/three_ds/decisioning_retrieve_secret_response.rb +1 -1
  171. data/lib/lithic/models/tokenization.rb +37 -17
  172. data/lib/lithic/models/tokenization_decisioning_rotate_secret_response.rb +1 -1
  173. data/lib/lithic/models/tokenization_list_params.rb +22 -8
  174. data/lib/lithic/models/tokenization_resend_activation_code_params.rb +6 -1
  175. data/lib/lithic/models/tokenization_secret.rb +1 -1
  176. data/lib/lithic/models/tokenization_simulate_params.rb +22 -8
  177. data/lib/lithic/models/tokenization_update_digital_card_art_params.rb +6 -1
  178. data/lib/lithic/models/transaction.rb +248 -89
  179. data/lib/lithic/models/transaction_list_params.rb +26 -9
  180. data/lib/lithic/models/transaction_simulate_authorization_advice_params.rb +8 -2
  181. data/lib/lithic/models/transaction_simulate_authorization_advice_response.rb +3 -2
  182. data/lib/lithic/models/transaction_simulate_authorization_params.rb +27 -10
  183. data/lib/lithic/models/transaction_simulate_authorization_response.rb +7 -2
  184. data/lib/lithic/models/transaction_simulate_clearing_params.rb +8 -2
  185. data/lib/lithic/models/transaction_simulate_clearing_response.rb +1 -1
  186. data/lib/lithic/models/transaction_simulate_credit_authorization_params.rb +15 -5
  187. data/lib/lithic/models/transaction_simulate_credit_authorization_response.rb +3 -2
  188. data/lib/lithic/models/transaction_simulate_return_params.rb +6 -3
  189. data/lib/lithic/models/transaction_simulate_return_response.rb +3 -2
  190. data/lib/lithic/models/transaction_simulate_return_reversal_params.rb +2 -1
  191. data/lib/lithic/models/transaction_simulate_return_reversal_response.rb +1 -1
  192. data/lib/lithic/models/transaction_simulate_void_params.rb +10 -3
  193. data/lib/lithic/models/transaction_simulate_void_response.rb +1 -1
  194. data/lib/lithic/models/transactions/events/enhanced_data.rb +52 -24
  195. data/lib/lithic/models/transfer.rb +46 -17
  196. data/lib/lithic/models/transfer_create_params.rb +17 -5
  197. data/lib/lithic/resources/account_holders.rb +166 -60
  198. data/lib/lithic/resources/accounts.rb +40 -13
  199. data/lib/lithic/resources/aggregate_balances.rb +2 -1
  200. data/lib/lithic/resources/auth_rules/v2/backtests.rb +10 -5
  201. data/lib/lithic/resources/auth_rules/v2.rb +68 -30
  202. data/lib/lithic/resources/balances.rb +12 -4
  203. data/lib/lithic/resources/book_transfers.rb +57 -20
  204. data/lib/lithic/resources/card_programs.rb +13 -4
  205. data/lib/lithic/resources/cards/aggregate_balances.rb +4 -2
  206. data/lib/lithic/resources/cards/balances.rb +8 -2
  207. data/lib/lithic/resources/cards/financial_transactions.rb +25 -8
  208. data/lib/lithic/resources/cards.rb +161 -53
  209. data/lib/lithic/resources/credit_products/extended_credit.rb +2 -1
  210. data/lib/lithic/resources/credit_products/prime_rates.rb +12 -6
  211. data/lib/lithic/resources/digital_card_art.rb +17 -4
  212. data/lib/lithic/resources/disputes.rb +61 -22
  213. data/lib/lithic/resources/events/subscriptions.rb +78 -21
  214. data/lib/lithic/resources/events.rb +40 -12
  215. data/lib/lithic/resources/external_bank_accounts.rb +79 -27
  216. data/lib/lithic/resources/external_payments.rb +46 -14
  217. data/lib/lithic/resources/financial_accounts/balances.rb +9 -3
  218. data/lib/lithic/resources/financial_accounts/credit_configuration.rb +10 -4
  219. data/lib/lithic/resources/financial_accounts/financial_transactions.rb +28 -10
  220. data/lib/lithic/resources/financial_accounts/loan_tapes.rb +23 -8
  221. data/lib/lithic/resources/financial_accounts/statements/line_items.rb +16 -5
  222. data/lib/lithic/resources/financial_accounts/statements.rb +25 -9
  223. data/lib/lithic/resources/financial_accounts.rb +22 -11
  224. data/lib/lithic/resources/management_operations.rb +31 -10
  225. data/lib/lithic/resources/payments.rb +64 -17
  226. data/lib/lithic/resources/reports/settlement/network_totals.rb +32 -12
  227. data/lib/lithic/resources/reports/settlement.rb +15 -5
  228. data/lib/lithic/resources/responder_endpoints.rb +8 -4
  229. data/lib/lithic/resources/three_ds/authentication.rb +21 -5
  230. data/lib/lithic/resources/three_ds/decisioning.rb +8 -2
  231. data/lib/lithic/resources/tokenizations.rb +70 -25
  232. data/lib/lithic/resources/transactions/enhanced_commercial_data.rb +2 -1
  233. data/lib/lithic/resources/transactions/events/enhanced_commercial_data.rb +2 -1
  234. data/lib/lithic/resources/transactions.rb +106 -37
  235. data/lib/lithic/resources/transfers.rb +17 -5
  236. data/lib/lithic/version.rb +1 -1
  237. data/lib/lithic.rb +2 -1
  238. data/rbi/lib/lithic/file_part.rbi +34 -0
  239. data/rbi/lib/lithic/internal/transport/base_client.rbi +17 -3
  240. data/rbi/lib/lithic/internal/type/{io_like.rbi → file_input.rbi} +6 -2
  241. data/rbi/lib/lithic/internal/util.rbi +24 -19
  242. data/rbi/lib/lithic/models/account.rbi +62 -6
  243. data/rbi/lib/lithic/models/account_holder.rbi +139 -8
  244. data/rbi/lib/lithic/models/account_holder_create_params.rbi +131 -6
  245. data/rbi/lib/lithic/models/account_holder_create_response.rbi +14 -3
  246. data/rbi/lib/lithic/models/account_holder_list_params.rbi +19 -0
  247. data/rbi/lib/lithic/models/account_holder_simulate_enrollment_document_review_params.rbi +5 -0
  248. data/rbi/lib/lithic/models/account_holder_simulate_enrollment_review_params.rbi +10 -2
  249. data/rbi/lib/lithic/models/account_holder_simulate_enrollment_review_response.rbi +172 -17
  250. data/rbi/lib/lithic/models/account_holder_update_params.rbi +99 -0
  251. data/rbi/lib/lithic/models/account_holder_update_response.rbi +176 -19
  252. data/rbi/lib/lithic/models/account_holder_upload_document_params.rbi +7 -2
  253. data/rbi/lib/lithic/models/account_list_params.rbi +10 -3
  254. data/rbi/lib/lithic/models/account_spend_limits.rbi +30 -6
  255. data/rbi/lib/lithic/models/account_update_params.rbi +16 -0
  256. data/rbi/lib/lithic/models/address.rbi +19 -2
  257. data/rbi/lib/lithic/models/address_update.rbi +17 -2
  258. data/rbi/lib/lithic/models/aggregate_balance.rbi +14 -0
  259. data/rbi/lib/lithic/models/aggregate_balance_list_params.rbi +5 -2
  260. data/rbi/lib/lithic/models/auth_rules/auth_rule.rbi +15 -0
  261. data/rbi/lib/lithic/models/auth_rules/auth_rule_condition.rbi +54 -2
  262. data/rbi/lib/lithic/models/auth_rules/v2/backtest_create_params.rbi +7 -2
  263. data/rbi/lib/lithic/models/auth_rules/v2/backtest_create_response.rbi +4 -2
  264. data/rbi/lib/lithic/models/auth_rules/v2/backtest_results.rbi +60 -12
  265. data/rbi/lib/lithic/models/auth_rules/v2_apply_params.rbi +5 -3
  266. data/rbi/lib/lithic/models/auth_rules/v2_apply_response.rbi +22 -4
  267. data/rbi/lib/lithic/models/auth_rules/v2_create_params.rbi +7 -0
  268. data/rbi/lib/lithic/models/auth_rules/v2_create_response.rbi +22 -4
  269. data/rbi/lib/lithic/models/auth_rules/v2_draft_params.rbi +5 -2
  270. data/rbi/lib/lithic/models/auth_rules/v2_draft_response.rbi +22 -4
  271. data/rbi/lib/lithic/models/auth_rules/v2_list_params.rbi +7 -0
  272. data/rbi/lib/lithic/models/auth_rules/v2_list_response.rbi +22 -4
  273. data/rbi/lib/lithic/models/auth_rules/v2_promote_response.rbi +22 -4
  274. data/rbi/lib/lithic/models/auth_rules/v2_retrieve_response.rbi +22 -4
  275. data/rbi/lib/lithic/models/auth_rules/v2_update_params.rbi +10 -0
  276. data/rbi/lib/lithic/models/auth_rules/v2_update_response.rbi +22 -4
  277. data/rbi/lib/lithic/models/auth_rules/velocity_limit_params.rbi +33 -5
  278. data/rbi/lib/lithic/models/auth_stream_secret.rbi +4 -2
  279. data/rbi/lib/lithic/models/balance.rbi +14 -0
  280. data/rbi/lib/lithic/models/balance_list_params.rbi +5 -0
  281. data/rbi/lib/lithic/models/book_transfer_create_params.rbi +12 -0
  282. data/rbi/lib/lithic/models/book_transfer_list_params.rbi +14 -0
  283. data/rbi/lib/lithic/models/book_transfer_response.rbi +41 -2
  284. data/rbi/lib/lithic/models/book_transfer_reverse_params.rbi +5 -2
  285. data/rbi/lib/lithic/models/card.rbi +8 -2
  286. data/rbi/lib/lithic/models/card_convert_physical_params.rbi +18 -3
  287. data/rbi/lib/lithic/models/card_create_params.rbi +84 -0
  288. data/rbi/lib/lithic/models/card_embed_params.rbi +7 -2
  289. data/rbi/lib/lithic/models/card_list_params.rbi +11 -0
  290. data/rbi/lib/lithic/models/card_program.rbi +8 -0
  291. data/rbi/lib/lithic/models/card_program_list_params.rbi +11 -2
  292. data/rbi/lib/lithic/models/card_provision_params.rbi +17 -0
  293. data/rbi/lib/lithic/models/card_reissue_params.rbi +18 -3
  294. data/rbi/lib/lithic/models/card_renew_params.rbi +21 -0
  295. data/rbi/lib/lithic/models/card_search_by_pan_params.rbi +5 -2
  296. data/rbi/lib/lithic/models/card_spend_limits.rbi +30 -6
  297. data/rbi/lib/lithic/models/card_update_params.rbi +35 -0
  298. data/rbi/lib/lithic/models/cards/aggregate_balance_list_params.rbi +7 -2
  299. data/rbi/lib/lithic/models/cards/aggregate_balance_list_response.rbi +13 -0
  300. data/rbi/lib/lithic/models/cards/balance_list_params.rbi +9 -2
  301. data/rbi/lib/lithic/models/cards/balance_list_response.rbi +14 -0
  302. data/rbi/lib/lithic/models/cards/financial_transaction_list_params.rbi +11 -0
  303. data/rbi/lib/lithic/models/carrier.rbi +4 -2
  304. data/rbi/lib/lithic/models/credit_products/prime_rate_create_params.rbi +7 -2
  305. data/rbi/lib/lithic/models/credit_products/prime_rate_retrieve_params.rbi +7 -2
  306. data/rbi/lib/lithic/models/credit_products/prime_rate_retrieve_response.rbi +12 -4
  307. data/rbi/lib/lithic/models/digital_card_art.rbi +8 -3
  308. data/rbi/lib/lithic/models/digital_card_art_list_params.rbi +11 -2
  309. data/rbi/lib/lithic/models/dispute.rbi +66 -0
  310. data/rbi/lib/lithic/models/dispute_create_params.rbi +6 -3
  311. data/rbi/lib/lithic/models/dispute_evidence.rbi +15 -3
  312. data/rbi/lib/lithic/models/dispute_initiate_evidence_upload_params.rbi +5 -2
  313. data/rbi/lib/lithic/models/dispute_list_evidences_params.rbi +10 -3
  314. data/rbi/lib/lithic/models/dispute_list_params.rbi +11 -0
  315. data/rbi/lib/lithic/models/dispute_update_params.rbi +5 -3
  316. data/rbi/lib/lithic/models/document.rbi +27 -3
  317. data/rbi/lib/lithic/models/event.rbi +39 -2
  318. data/rbi/lib/lithic/models/event_list_attempts_params.rbi +9 -0
  319. data/rbi/lib/lithic/models/event_list_params.rbi +11 -0
  320. data/rbi/lib/lithic/models/event_subscription.rbi +10 -2
  321. data/rbi/lib/lithic/models/events/subscription_create_params.rbi +12 -2
  322. data/rbi/lib/lithic/models/events/subscription_list_attempts_params.rbi +9 -0
  323. data/rbi/lib/lithic/models/events/subscription_list_params.rbi +11 -2
  324. data/rbi/lib/lithic/models/events/subscription_recover_params.rbi +9 -2
  325. data/rbi/lib/lithic/models/events/subscription_replay_missing_params.rbi +9 -2
  326. data/rbi/lib/lithic/models/events/subscription_retrieve_secret_response.rbi +4 -2
  327. data/rbi/lib/lithic/models/events/subscription_send_simulated_example_params.rbi +5 -2
  328. data/rbi/lib/lithic/models/events/subscription_update_params.rbi +12 -2
  329. data/rbi/lib/lithic/models/external_bank_account_create_params.rbi +20 -0
  330. data/rbi/lib/lithic/models/external_bank_account_create_response.rbi +33 -0
  331. data/rbi/lib/lithic/models/external_bank_account_list_params.rbi +5 -0
  332. data/rbi/lib/lithic/models/external_bank_account_list_response.rbi +33 -0
  333. data/rbi/lib/lithic/models/external_bank_account_retrieve_response.rbi +33 -0
  334. data/rbi/lib/lithic/models/external_bank_account_retry_micro_deposits_response.rbi +33 -0
  335. data/rbi/lib/lithic/models/external_bank_account_retry_prenote_response.rbi +33 -0
  336. data/rbi/lib/lithic/models/external_bank_account_update_params.rbi +9 -0
  337. data/rbi/lib/lithic/models/external_bank_account_update_response.rbi +33 -0
  338. data/rbi/lib/lithic/models/external_bank_accounts/micro_deposit_create_response.rbi +33 -0
  339. data/rbi/lib/lithic/models/external_payment_list_params.rbi +14 -0
  340. data/rbi/lib/lithic/models/financial_account.rbi +8 -0
  341. data/rbi/lib/lithic/models/financial_account_list_params.rbi +9 -2
  342. data/rbi/lib/lithic/models/financial_account_update_status_params.rbi +7 -2
  343. data/rbi/lib/lithic/models/financial_accounts/balance_list_params.rbi +9 -2
  344. data/rbi/lib/lithic/models/financial_accounts/balance_list_response.rbi +14 -0
  345. data/rbi/lib/lithic/models/financial_accounts/credit_configuration_update_params.rbi +2 -0
  346. data/rbi/lib/lithic/models/financial_accounts/financial_account_credit_config.rbi +5 -0
  347. data/rbi/lib/lithic/models/financial_accounts/financial_transaction_list_params.rbi +11 -0
  348. data/rbi/lib/lithic/models/financial_accounts/loan_tape.rbi +94 -13
  349. data/rbi/lib/lithic/models/financial_accounts/loan_tape_list_params.rbi +10 -3
  350. data/rbi/lib/lithic/models/financial_accounts/loan_tape_retrieve_params.rbi +5 -2
  351. data/rbi/lib/lithic/models/financial_accounts/statement.rbi +72 -10
  352. data/rbi/lib/lithic/models/financial_accounts/statement_list_params.rbi +10 -0
  353. data/rbi/lib/lithic/models/financial_accounts/statement_retrieve_params.rbi +5 -2
  354. data/rbi/lib/lithic/models/financial_accounts/statements/line_item_list_params.rbi +7 -3
  355. data/rbi/lib/lithic/models/financial_accounts/statements/statement_line_items.rbi +10 -0
  356. data/rbi/lib/lithic/models/financial_transaction.rbi +44 -2
  357. data/rbi/lib/lithic/models/kyb.rbi +94 -4
  358. data/rbi/lib/lithic/models/kyb_business_entity.rbi +28 -2
  359. data/rbi/lib/lithic/models/kyc.rbi +40 -4
  360. data/rbi/lib/lithic/models/kyc_exempt.rbi +13 -0
  361. data/rbi/lib/lithic/models/management_operation_list_params.rbi +13 -0
  362. data/rbi/lib/lithic/models/message_attempt.rbi +10 -3
  363. data/rbi/lib/lithic/models/non_pci_card.rbi +78 -2
  364. data/rbi/lib/lithic/models/payment.rbi +57 -2
  365. data/rbi/lib/lithic/models/payment_create_params.rbi +2 -0
  366. data/rbi/lib/lithic/models/payment_create_response.rbi +4 -2
  367. data/rbi/lib/lithic/models/payment_list_params.rbi +9 -0
  368. data/rbi/lib/lithic/models/payment_retry_response.rbi +4 -2
  369. data/rbi/lib/lithic/models/payment_simulate_action_params.rbi +9 -2
  370. data/rbi/lib/lithic/models/payment_simulate_action_response.rbi +8 -2
  371. data/rbi/lib/lithic/models/payment_simulate_receipt_params.rbi +13 -3
  372. data/rbi/lib/lithic/models/payment_simulate_receipt_response.rbi +8 -2
  373. data/rbi/lib/lithic/models/payment_simulate_release_params.rbi +5 -2
  374. data/rbi/lib/lithic/models/payment_simulate_release_response.rbi +8 -2
  375. data/rbi/lib/lithic/models/payment_simulate_return_params.rbi +7 -2
  376. data/rbi/lib/lithic/models/payment_simulate_return_response.rbi +8 -2
  377. data/rbi/lib/lithic/models/reports/settlement/network_total_list_params.rbi +16 -0
  378. data/rbi/lib/lithic/models/reports/settlement/network_total_list_response.rbi +26 -2
  379. data/rbi/lib/lithic/models/reports/settlement/network_total_retrieve_response.rbi +26 -2
  380. data/rbi/lib/lithic/models/reports/settlement_list_details_params.rbi +11 -2
  381. data/rbi/lib/lithic/models/required_document.rbi +10 -2
  382. data/rbi/lib/lithic/models/responder_endpoint_check_status_params.rbi +5 -2
  383. data/rbi/lib/lithic/models/responder_endpoint_create_params.rbi +7 -2
  384. data/rbi/lib/lithic/models/responder_endpoint_create_response.rbi +4 -2
  385. data/rbi/lib/lithic/models/responder_endpoint_delete_params.rbi +5 -2
  386. data/rbi/lib/lithic/models/responder_endpoint_status.rbi +6 -2
  387. data/rbi/lib/lithic/models/settlement_detail.rbi +26 -0
  388. data/rbi/lib/lithic/models/settlement_report.rbi +25 -0
  389. data/rbi/lib/lithic/models/settlement_summary_details.rbi +11 -0
  390. data/rbi/lib/lithic/models/shipping_address.rbi +20 -0
  391. data/rbi/lib/lithic/models/three_ds/authentication_retrieve_response.rbi +165 -19
  392. data/rbi/lib/lithic/models/three_ds/authentication_simulate_otp_entry_params.rbi +8 -2
  393. data/rbi/lib/lithic/models/three_ds/authentication_simulate_params.rbi +31 -6
  394. data/rbi/lib/lithic/models/three_ds/authentication_simulate_response.rbi +5 -2
  395. data/rbi/lib/lithic/models/three_ds/challenge_response.rbi +9 -2
  396. data/rbi/lib/lithic/models/three_ds/decisioning_retrieve_secret_response.rbi +4 -2
  397. data/rbi/lib/lithic/models/tokenization.rbi +27 -2
  398. data/rbi/lib/lithic/models/tokenization_decisioning_rotate_secret_response.rbi +4 -2
  399. data/rbi/lib/lithic/models/tokenization_list_params.rbi +11 -0
  400. data/rbi/lib/lithic/models/tokenization_resend_activation_code_params.rbi +7 -2
  401. data/rbi/lib/lithic/models/tokenization_secret.rbi +4 -2
  402. data/rbi/lib/lithic/models/tokenization_simulate_params.rbi +11 -0
  403. data/rbi/lib/lithic/models/tokenization_update_digital_card_art_params.rbi +8 -2
  404. data/rbi/lib/lithic/models/transaction.rbi +246 -35
  405. data/rbi/lib/lithic/models/transaction_list_params.rbi +14 -0
  406. data/rbi/lib/lithic/models/transaction_simulate_authorization_advice_params.rbi +8 -2
  407. data/rbi/lib/lithic/models/transaction_simulate_authorization_advice_response.rbi +6 -2
  408. data/rbi/lib/lithic/models/transaction_simulate_authorization_params.rbi +35 -0
  409. data/rbi/lib/lithic/models/transaction_simulate_authorization_response.rbi +7 -2
  410. data/rbi/lib/lithic/models/transaction_simulate_clearing_params.rbi +15 -2
  411. data/rbi/lib/lithic/models/transaction_simulate_clearing_response.rbi +4 -2
  412. data/rbi/lib/lithic/models/transaction_simulate_credit_authorization_params.rbi +17 -2
  413. data/rbi/lib/lithic/models/transaction_simulate_credit_authorization_response.rbi +6 -2
  414. data/rbi/lib/lithic/models/transaction_simulate_return_params.rbi +9 -2
  415. data/rbi/lib/lithic/models/transaction_simulate_return_response.rbi +6 -2
  416. data/rbi/lib/lithic/models/transaction_simulate_return_reversal_params.rbi +5 -2
  417. data/rbi/lib/lithic/models/transaction_simulate_return_reversal_response.rbi +4 -2
  418. data/rbi/lib/lithic/models/transaction_simulate_void_params.rbi +14 -2
  419. data/rbi/lib/lithic/models/transaction_simulate_void_response.rbi +4 -2
  420. data/rbi/lib/lithic/models/transactions/events/enhanced_data.rbi +57 -16
  421. data/rbi/lib/lithic/models/transfer.rbi +41 -2
  422. data/rbi/lib/lithic/models/transfer_create_params.rbi +17 -2
  423. data/sig/lithic/file_part.rbs +21 -0
  424. data/sig/lithic/internal/transport/base_client.rbs +9 -3
  425. data/sig/lithic/internal/type/{io_like.rbs → file_input.rbs} +1 -1
  426. data/sig/lithic/internal/util.rbs +14 -12
  427. metadata +8 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d994bf8972c5500b7885b05e3d656c7dda04419796c1abb50218bbe4144e6a1a
4
- data.tar.gz: 2f12393da601f3a7877b0b648bf6ff8bbe294cf690889934e9a9883c0ec9bc50
3
+ metadata.gz: 05aee8aa5e025c482dcce7eda27b3c395985006317087846d579d0ad8d7991e7
4
+ data.tar.gz: cd3fc85b83558917f6c34dce35268e67593914dc57ef1de4148984cfe9921cd8
5
5
  SHA512:
6
- metadata.gz: 033661aaae27e014d00dc52cbb53c631ba2bfb5e604cc7a73d3a0a9e8fa9f00c9f88f34f288275fb548fac171de6c3920a6e88f76be0ba350f8312037a68b157
7
- data.tar.gz: 6da37fe057e86fde01f7bbdaec2bbec7c36d9d474dc2c6cdc15cc093bedebe7a161cc222686d6fe53011a2077c8aa77109a8e28931a0087be936ed7ba55b51ae
6
+ metadata.gz: be54eb3eb00a6277372c104183d09f3d6bb7f4b8e771aaa5061084d9c06722b48eb2452e773176d1ea9ccc53584e9bce4585734d2fb80f5be7832a54909ef474
7
+ data.tar.gz: 1f5aed27dd5929a0a3066f073d5c544c0844c7ecb17bfb4e9f46c76693fecd7b0deeb3abb8dab3175d574afadc5c14ebf958fc81bede86b2ef69d325dc549fa3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.19 (2025-04-25)
4
+
5
+ Full Changelog: [v0.1.0-alpha.18...v0.1.0-alpha.19](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.18...v0.1.0-alpha.19)
6
+
7
+ ### Bug Fixes
8
+
9
+ * make a typo for `FilePart.content` ([4eb5bee](https://github.com/lithic-com/lithic-ruby/commit/4eb5bee30c1bfbc394092b72b338908643010f5a))
10
+
11
+ ## 0.1.0-alpha.18 (2025-04-25)
12
+
13
+ Full Changelog: [v0.1.0-alpha.17...v0.1.0-alpha.18](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.17...v0.1.0-alpha.18)
14
+
15
+ ### Features
16
+
17
+ * support specifying content-type with FilePart class ([0cf245e](https://github.com/lithic-com/lithic-ruby/commit/0cf245eaa7321b8ae3ee08a9c585403cf654f9ca))
18
+ * support webmock for testing ([56900e6](https://github.com/lithic-com/lithic-ruby/commit/56900e694ecd63ff000e880f2cd6add9e5548e86))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * ensure gem release is unaffected by renaming ([84a2f71](https://github.com/lithic-com/lithic-ruby/commit/84a2f7191fa58067637c050575de5552aec2cf09))
24
+
25
+
26
+ ### Chores
27
+
28
+ * broadly detect json family of content-type headers ([2b4f4bc](https://github.com/lithic-com/lithic-ruby/commit/2b4f4bca7f025906e369ed32f4cd71e357cd79a8))
29
+ * **ci:** add timeout thresholds for CI jobs ([2f4319b](https://github.com/lithic-com/lithic-ruby/commit/2f4319b37459d2899350a1d05aec39a8134ac3e1))
30
+ * **ci:** only use depot for staging repos ([99e9f7d](https://github.com/lithic-com/lithic-ruby/commit/99e9f7d78c04ab805321dabe41d5431717fc5eb4))
31
+ * **ci:** run on more branches and use depot runners ([84743d4](https://github.com/lithic-com/lithic-ruby/commit/84743d4c86aeeadc23ef0cb025f77944e9822a4e))
32
+ * consistently use string in examples, even for enums ([c35c6f4](https://github.com/lithic-com/lithic-ruby/commit/c35c6f45e00d6eed30d43f8b4335c6761f3fe2f5))
33
+ * **internal:** improve response envelope unwrap functionality ([d2c37aa](https://github.com/lithic-com/lithic-ruby/commit/d2c37aa27246c9379a2400020047cd1c7761f03d))
34
+ * **internal:** minor type annotation improvements ([964cec1](https://github.com/lithic-com/lithic-ruby/commit/964cec1b7eb9904a6f643dcbcaaff3ae64276032))
35
+ * show truncated parameter docs in yard ([3d5f4b7](https://github.com/lithic-com/lithic-ruby/commit/3d5f4b7b7fc6d780cb19fe3cddac32306de1aaf2))
36
+
3
37
  ## 0.1.0-alpha.17 (2025-04-21)
4
38
 
5
39
  Full Changelog: [v0.1.0-alpha.16...v0.1.0-alpha.17](https://github.com/lithic-com/lithic-ruby/compare/v0.1.0-alpha.16...v0.1.0-alpha.17)
data/README.md CHANGED
@@ -15,7 +15,7 @@ To use this gem, install via Bundler by adding the following to your application
15
15
  <!-- x-release-please-start-version -->
16
16
 
17
17
  ```ruby
18
- gem "lithic", "~> 0.1.0.pre.alpha.17"
18
+ gem "lithic", "~> 0.1.0.pre.alpha.19"
19
19
  ```
20
20
 
21
21
  <!-- x-release-please-end -->
@@ -31,7 +31,7 @@ lithic = Lithic::Client.new(
31
31
  environment: "sandbox" # defaults to "production"
32
32
  )
33
33
 
34
- card = lithic.cards.create(type: :SINGLE_USE)
34
+ card = lithic.cards.create(type: "SINGLE_USE")
35
35
 
36
36
  puts(card.token)
37
37
  ```
@@ -43,7 +43,7 @@ This library is written with [Sorbet type definitions](https://sorbet.org/docs/r
43
43
  When using sorbet, it is recommended to use model classes as below. This provides stronger type checking and tooling integration.
44
44
 
45
45
  ```ruby
46
- lithic.cards.create(type: :SINGLE_USE)
46
+ lithic.cards.create(type: "SINGLE_USE")
47
47
  ```
48
48
 
49
49
  ### Pagination
@@ -71,7 +71,7 @@ When the library is unable to connect to the API, or if the API returns a non-su
71
71
 
72
72
  ```ruby
73
73
  begin
74
- card = lithic.cards.create(type: :an_incorrect_type)
74
+ card = lithic.cards.create(type: "an_incorrect_type")
75
75
  rescue Lithic::Errors::APIError => e
76
76
  puts(e.status) # 400
77
77
  end
@@ -139,11 +139,11 @@ In all places where a `BaseModel` type is specified, vanilla Ruby `Hash` can als
139
139
 
140
140
  ```ruby
141
141
  # This has tooling readability, for auto-completion, static analysis, and goto definition with supported language services
142
- params = Lithic::Models::CardCreateParams.new(type: :SINGLE_USE)
142
+ params = Lithic::Models::CardCreateParams.new(type: "SINGLE_USE")
143
143
 
144
144
  # This also works
145
145
  params = {
146
- type: :SINGLE_USE
146
+ type: "SINGLE_USE"
147
147
  }
148
148
  ```
149
149
 
@@ -203,7 +203,7 @@ end
203
203
  It is possible to pass a compatible model / parameter class to a method that expects keyword arguments by using the `**` splat operator.
204
204
 
205
205
  ```ruby
206
- params = Lithic::Models::CardCreateParams.new(type: :SINGLE_USE)
206
+ params = Lithic::Models::CardCreateParams.new(type: "SINGLE_USE")
207
207
  lithic.cards.create(**params)
208
208
  ```
209
209
 
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lithic
4
+ class FilePart
5
+ # @return [Pathname, StringIO, IO, String]
6
+ attr_reader :content
7
+
8
+ # @return [String, nil]
9
+ attr_reader :content_type
10
+
11
+ # @return [String, nil]
12
+ attr_reader :filename
13
+
14
+ # @api private
15
+ #
16
+ # @return [String]
17
+ private def read
18
+ case content
19
+ in Pathname
20
+ content.read(binmode: true)
21
+ in StringIO
22
+ content.string
23
+ in IO
24
+ content.read
25
+ in String
26
+ content
27
+ end
28
+ end
29
+
30
+ # @param a [Object]
31
+ #
32
+ # @return [String]
33
+ def to_json(*a) = read.to_json(*a)
34
+
35
+ # @param a [Object]
36
+ #
37
+ # @return [String]
38
+ def to_yaml(*a) = read.to_yaml(*a)
39
+
40
+ # @param content [Pathname, StringIO, IO, String]
41
+ # @param filename [String, nil]
42
+ # @param content_type [String, nil]
43
+ def initialize(content, filename: nil, content_type: nil)
44
+ @content = content
45
+ @filename =
46
+ case content
47
+ in Pathname
48
+ filename.nil? ? content.basename.to_path : File.basename(filename)
49
+ else
50
+ filename.nil? ? nil : File.basename(filename)
51
+ end
52
+ @content_type = content_type
53
+ end
54
+ end
55
+ end
@@ -28,7 +28,7 @@ module Lithic
28
28
  end
29
29
 
30
30
  # @raise [Lithic::HTTP::Error]
31
- # @return [Lithic::Internal::CursorPage]
31
+ # @return [self]
32
32
  def next_page
33
33
  unless next_page?
34
34
  message = "No more pages available. Please check #next_page? before calling ##{__method__}"
@@ -28,7 +28,7 @@ module Lithic
28
28
  end
29
29
 
30
30
  # @raise [Lithic::HTTP::Error]
31
- # @return [Lithic::Internal::SinglePage]
31
+ # @return [self]
32
32
  def next_page
33
33
  RuntimeError.new("No more pages available.")
34
34
  end
@@ -153,7 +153,7 @@ module Lithic
153
153
 
154
154
  # @api private
155
155
  # @return [Lithic::Internal::Transport::PooledNetRequester]
156
- attr_accessor :requester
156
+ attr_reader :requester
157
157
 
158
158
  # @api private
159
159
  #
@@ -214,11 +214,11 @@ module Lithic
214
214
  #
215
215
  # @option req [Object, nil] :body
216
216
  #
217
- # @option req [Symbol, nil] :unwrap
217
+ # @option req [Symbol, Integer, Array<Symbol, Integer>, Proc, nil] :unwrap
218
218
  #
219
- # @option req [Class, nil] :page
219
+ # @option req [Class<Lithic::Internal::Type::BasePage>, nil] :page
220
220
  #
221
- # @option req [Class, nil] :stream
221
+ # @option req [Class<Lithic::Internal::Type::BaseStream>, nil] :stream
222
222
  #
223
223
  # @option req [Lithic::Internal::Type::Converter, Class, nil] :model
224
224
  #
@@ -415,11 +415,11 @@ module Lithic
415
415
  #
416
416
  # @param body [Object, nil]
417
417
  #
418
- # @param unwrap [Symbol, nil]
418
+ # @param unwrap [Symbol, Integer, Array<Symbol, Integer>, Proc, nil]
419
419
  #
420
- # @param page [Class, nil]
420
+ # @param page [Class<Lithic::Internal::Type::BasePage>, nil]
421
421
  #
422
- # @param stream [Class, nil]
422
+ # @param stream [Class<Lithic::Internal::Type::BaseStream>, nil]
423
423
  #
424
424
  # @param model [Lithic::Internal::Type::Converter, Class, nil]
425
425
  #
@@ -176,7 +176,7 @@ module Lithic
176
176
  conn.finish if !eof && conn&.started?
177
177
  closing&.call
178
178
  end
179
- [Integer(response.code), response, (response.body = body)]
179
+ [Integer(response.code), response, body]
180
180
  end
181
181
 
182
182
  # @api private
@@ -28,6 +28,8 @@ module Lithic
28
28
  # @option spec [Proc] :union
29
29
  #
30
30
  # @option spec [Boolean] :"nil?"
31
+ #
32
+ # @return [Lithic::Internal::Type::ArrayOf]
31
33
  def self.[](...) = new(...)
32
34
 
33
35
  # @api public
@@ -389,7 +389,7 @@ module Lithic
389
389
 
390
390
  # Create a new instance of a model.
391
391
  #
392
- # @param data [Hash{Symbol=>Object}, Lithic::Internal::Type::BaseModel]
392
+ # @param data [Hash{Symbol=>Object}, self]
393
393
  def initialize(data = {})
394
394
  case Lithic::Internal::Util.coerce_hash(data)
395
395
  in Hash => coerced
@@ -19,7 +19,7 @@ module Lithic
19
19
  # @api public
20
20
  #
21
21
  # @raise [Lithic::Errors::APIError]
22
- # @return [Lithic::Internal::Type::BasePage]
22
+ # @return [self]
23
23
  def next_page = (raise NotImplementedError)
24
24
 
25
25
  # @api public
@@ -43,7 +43,10 @@ module Lithic
43
43
  value.string
44
44
  in Pathname | IO
45
45
  state[:can_retry] = false if value.is_a?(IO)
46
- Lithic::Internal::Util::SerializationAdapter.new(value)
46
+ Lithic::FilePart.new(value)
47
+ in Lithic::FilePart
48
+ state[:can_retry] = false if value.content.is_a?(IO)
49
+ value
47
50
  else
48
51
  value
49
52
  end
@@ -7,8 +7,12 @@ module Lithic
7
7
  #
8
8
  # @abstract
9
9
  #
10
- # Either `Pathname` or `StringIO`.
11
- class IOLike
10
+ # Either `Pathname` or `StringIO`, or `IO`, or
11
+ # `Lithic::Internal::Type::FileInput`.
12
+ #
13
+ # Note: when `IO` is used, all retries are disabled, since many IO` streams are
14
+ # not rewindable.
15
+ class FileInput
12
16
  extend Lithic::Internal::Type::Converter
13
17
 
14
18
  private_class_method :new
@@ -20,7 +24,7 @@ module Lithic
20
24
  # @return [Boolean]
21
25
  def self.===(other)
22
26
  case other
23
- in StringIO | Pathname | IO
27
+ in Pathname | StringIO | IO | String | Lithic::FilePart
24
28
  true
25
29
  else
26
30
  false
@@ -32,7 +36,7 @@ module Lithic
32
36
  # @param other [Object]
33
37
  #
34
38
  # @return [Boolean]
35
- def self.==(other) = other.is_a?(Class) && other <= Lithic::Internal::Type::IOLike
39
+ def self.==(other) = other.is_a?(Class) && other <= Lithic::Internal::Type::FileInput
36
40
 
37
41
  class << self
38
42
  # @api private
@@ -63,17 +67,28 @@ module Lithic
63
67
  end
64
68
  end
65
69
 
66
- # @!parse
67
- # # @api private
68
- # #
69
- # # @param value [Pathname, StringIO, IO, String, Object]
70
- # #
71
- # # @param state [Hash{Symbol=>Object}] .
72
- # #
73
- # # @option state [Boolean] :can_retry
74
- # #
75
- # # @return [Pathname, StringIO, IO, String, Object]
76
- # def dump(value, state:) = super
70
+ # @api private
71
+ #
72
+ # @param value [Pathname, StringIO, IO, String, Object]
73
+ #
74
+ # @param state [Hash{Symbol=>Object}] .
75
+ #
76
+ # @option state [Boolean] :can_retry
77
+ #
78
+ # @return [Pathname, StringIO, IO, String, Object]
79
+ def dump(value, state:)
80
+ # rubocop:disable Lint/DuplicateBranch
81
+ case value
82
+ in IO
83
+ state[:can_retry] = false
84
+ in Lithic::FilePart if value.content.is_a?(IO)
85
+ state[:can_retry] = false
86
+ else
87
+ end
88
+ # rubocop:enable Lint/DuplicateBranch
89
+
90
+ value
91
+ end
77
92
  end
78
93
  end
79
94
  end
@@ -28,6 +28,8 @@ module Lithic
28
28
  # @option spec [Proc] :union
29
29
  #
30
30
  # @option spec [Boolean] :"nil?"
31
+ #
32
+ # @return [Lithic::Internal::Type::HashOf]
31
33
  def self.[](...) = new(...)
32
34
 
33
35
  # @api public
@@ -175,18 +175,17 @@ module Lithic
175
175
  # @api private
176
176
  #
177
177
  # @param data [Hash{Symbol=>Object}, Array<Object>, Object]
178
- # @param pick [Symbol, Integer, Array<Symbol, Integer>, nil]
179
- # @param sentinel [Object, nil]
178
+ # @param pick [Symbol, Integer, Array<Symbol, Integer>, Proc, nil]
180
179
  # @param blk [Proc, nil]
181
180
  #
182
181
  # @return [Object, nil]
183
- def dig(data, pick, sentinel = nil, &blk)
184
- case [data, pick, blk]
185
- in [_, nil, nil]
182
+ def dig(data, pick, &blk)
183
+ case [data, pick]
184
+ in [_, nil]
186
185
  data
187
- in [Hash, Symbol, _] | [Array, Integer, _]
188
- blk.nil? ? data.fetch(pick, sentinel) : data.fetch(pick, &blk)
189
- in [Hash | Array, Array, _]
186
+ in [Hash, Symbol] | [Array, Integer]
187
+ data.fetch(pick) { blk&.call }
188
+ in [Hash | Array, Array]
190
189
  pick.reduce(data) do |acc, key|
191
190
  case acc
192
191
  in Hash if acc.key?(key)
@@ -194,11 +193,13 @@ module Lithic
194
193
  in Array if key.is_a?(Integer) && key < acc.length
195
194
  acc[key]
196
195
  else
197
- return blk.nil? ? sentinel : blk.call
196
+ return blk&.call
198
197
  end
199
198
  end
200
- in _
201
- blk.nil? ? sentinel : blk.call
199
+ in [_, Proc]
200
+ pick.call(data)
201
+ else
202
+ blk&.call
202
203
  end
203
204
  end
204
205
  end
@@ -348,27 +349,6 @@ module Lithic
348
349
  end
349
350
  end
350
351
 
351
- # @api private
352
- class SerializationAdapter
353
- # @return [Pathname, IO]
354
- attr_reader :inner
355
-
356
- # @param a [Object]
357
- #
358
- # @return [String]
359
- def to_json(*a) = (inner.is_a?(IO) ? inner.read : inner.read(binmode: true)).to_json(*a)
360
-
361
- # @param a [Object]
362
- #
363
- # @return [String]
364
- def to_yaml(*a) = (inner.is_a?(IO) ? inner.read : inner.read(binmode: true)).to_yaml(*a)
365
-
366
- # @api private
367
- #
368
- # @param inner [Pathname, IO]
369
- def initialize(inner) = @inner = inner
370
- end
371
-
372
352
  # @api private
373
353
  #
374
354
  # An adapter that satisfies the IO interface required by `::IO.copy_stream`
@@ -471,46 +451,44 @@ module Lithic
471
451
  end
472
452
  end
473
453
 
454
+ # @type [Regexp]
455
+ JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}
456
+ # @type [Regexp]
457
+ JSONL_CONTENT = %r{^application/(?:x-)?jsonl}
458
+
474
459
  class << self
475
460
  # @api private
476
461
  #
477
462
  # @param y [Enumerator::Yielder]
478
- # @param boundary [String]
479
- # @param key [Symbol, String]
480
463
  # @param val [Object]
481
464
  # @param closing [Array<Proc>]
482
- private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
483
- val = val.inner if val.is_a?(Lithic::Internal::Util::SerializationAdapter)
465
+ # @param content_type [String, nil]
466
+ private def write_multipart_content(y, val:, closing:, content_type: nil)
467
+ content_type ||= "application/octet-stream"
484
468
 
485
- y << "--#{boundary}\r\n"
486
- y << "Content-Disposition: form-data"
487
- unless key.nil?
488
- name = ERB::Util.url_encode(key.to_s)
489
- y << "; name=\"#{name}\""
490
- end
491
- case val
492
- in Pathname | IO
493
- filename = ERB::Util.url_encode(File.basename(val.to_path))
494
- y << "; filename=\"#{filename}\""
495
- else
496
- end
497
- y << "\r\n"
498
469
  case val
470
+ in Lithic::FilePart
471
+ return write_multipart_content(
472
+ y,
473
+ val: val.content,
474
+ closing: closing,
475
+ content_type: val.content_type
476
+ )
499
477
  in Pathname
500
- y << "Content-Type: application/octet-stream\r\n\r\n"
478
+ y << "Content-Type: #{content_type}\r\n\r\n"
501
479
  io = val.open(binmode: true)
502
480
  closing << io.method(:close)
503
481
  IO.copy_stream(io, y)
504
482
  in IO
505
- y << "Content-Type: application/octet-stream\r\n\r\n"
483
+ y << "Content-Type: #{content_type}\r\n\r\n"
506
484
  IO.copy_stream(val, y)
507
485
  in StringIO
508
- y << "Content-Type: application/octet-stream\r\n\r\n"
486
+ y << "Content-Type: #{content_type}\r\n\r\n"
509
487
  y << val.string
510
488
  in String
511
- y << "Content-Type: application/octet-stream\r\n\r\n"
489
+ y << "Content-Type: #{content_type}\r\n\r\n"
512
490
  y << val.to_s
513
- in _ if primitive?(val)
491
+ in -> { primitive?(_1) }
514
492
  y << "Content-Type: text/plain\r\n\r\n"
515
493
  y << val.to_s
516
494
  else
@@ -520,6 +498,36 @@ module Lithic
520
498
  y << "\r\n"
521
499
  end
522
500
 
501
+ # @api private
502
+ #
503
+ # @param y [Enumerator::Yielder]
504
+ # @param boundary [String]
505
+ # @param key [Symbol, String]
506
+ # @param val [Object]
507
+ # @param closing [Array<Proc>]
508
+ private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
509
+ y << "--#{boundary}\r\n"
510
+ y << "Content-Disposition: form-data"
511
+
512
+ unless key.nil?
513
+ name = ERB::Util.url_encode(key.to_s)
514
+ y << "; name=\"#{name}\""
515
+ end
516
+
517
+ case val
518
+ in Lithic::FilePart unless val.filename.nil?
519
+ filename = ERB::Util.url_encode(val.filename)
520
+ y << "; filename=\"#{filename}\""
521
+ in Pathname | IO
522
+ filename = ERB::Util.url_encode(File.basename(val.to_path))
523
+ y << "; filename=\"#{filename}\""
524
+ else
525
+ end
526
+ y << "\r\n"
527
+
528
+ write_multipart_content(y, val: val, closing: closing)
529
+ end
530
+
523
531
  # @api private
524
532
  #
525
533
  # @param body [Object]
@@ -560,14 +568,12 @@ module Lithic
560
568
  # @return [Object]
561
569
  def encode_content(headers, body)
562
570
  content_type = headers["content-type"]
563
- body = body.inner if body.is_a?(Lithic::Internal::Util::SerializationAdapter)
564
-
565
571
  case [content_type, body]
566
- in [%r{^application/(?:vnd\.api\+)?json}, Hash | Array | -> { primitive?(_1) }]
572
+ in [Lithic::Internal::Util::JSON_CONTENT, Hash | Array | -> { primitive?(_1) }]
567
573
  [headers, JSON.fast_generate(body)]
568
- in [%r{^application/(?:x-)?jsonl}, Enumerable] unless body.is_a?(StringIO) || body.is_a?(IO)
574
+ in [Lithic::Internal::Util::JSONL_CONTENT, Enumerable] unless body.is_a?(Lithic::Internal::Type::FileInput)
569
575
  [headers, body.lazy.map { JSON.fast_generate(_1) }]
570
- in [%r{^multipart/form-data}, Hash | Pathname | StringIO | IO]
576
+ in [%r{^multipart/form-data}, Hash | Lithic::Internal::Type::FileInput]
571
577
  boundary, strio = encode_multipart_streaming(body)
572
578
  headers = {**headers, "content-type" => "#{content_type}; boundary=#{boundary}"}
573
579
  [headers, strio]
@@ -575,6 +581,8 @@ module Lithic
575
581
  [headers, body.to_s]
576
582
  in [_, StringIO]
577
583
  [headers, body.string]
584
+ in [_, Lithic::FilePart]
585
+ [headers, body.content]
578
586
  else
579
587
  [headers, body]
580
588
  end
@@ -611,7 +619,7 @@ module Lithic
611
619
  # @return [Object]
612
620
  def decode_content(headers, stream:, suppress_error: false)
613
621
  case (content_type = headers["content-type"])
614
- in %r{^application/(?:vnd\.api\+)?json}
622
+ in Lithic::Internal::Util::JSON_CONTENT
615
623
  json = stream.to_a.join
616
624
  begin
617
625
  JSON.parse(json, symbolize_names: true)
@@ -619,7 +627,7 @@ module Lithic
619
627
  raise e unless suppress_error
620
628
  json
621
629
  end
622
- in %r{^application/(?:x-)?jsonl}
630
+ in Lithic::Internal::Util::JSONL_CONTENT
623
631
  lines = decode_lines(stream)
624
632
  chain_fused(lines) do |y|
625
633
  lines.each { y << JSON.parse(_1, symbolize_names: true) }