finch-api 0.1.0.pre.alpha.1 → 0.1.0.pre.alpha.2
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.
- checksums.yaml +4 -4
- data/README.md +63 -20
- data/lib/finch-api/base_client.rb +52 -59
- data/lib/finch-api/base_model.rb +453 -415
- data/lib/finch-api/base_page.rb +34 -15
- data/lib/finch-api/client.rb +3 -7
- data/lib/finch-api/errors.rb +12 -17
- data/lib/finch-api/extern.rb +1 -4
- data/lib/finch-api/individuals_page.rb +28 -34
- data/lib/finch-api/models/account_update_event.rb +6 -31
- data/lib/finch-api/models/company_event.rb +3 -11
- data/lib/finch-api/models/connect/session_new_params.rb +9 -52
- data/lib/finch-api/models/connect/session_reauthenticate_params.rb +3 -22
- data/lib/finch-api/models/connection_status_type.rb +3 -21
- data/lib/finch-api/models/create_access_token_response.rb +6 -30
- data/lib/finch-api/models/directory_event.rb +3 -15
- data/lib/finch-api/models/employment_event.rb +3 -15
- data/lib/finch-api/models/hris/benefit_contribution.rb +3 -14
- data/lib/finch-api/models/hris/benefit_features_and_operations.rb +9 -39
- data/lib/finch-api/models/hris/benefit_frequency.rb +3 -15
- data/lib/finch-api/models/hris/benefit_type.rb +3 -22
- data/lib/finch-api/models/hris/benefits/enrolled_individual.rb +3 -18
- data/lib/finch-api/models/hris/benefits/individual_benefit.rb +3 -14
- data/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rb +9 -40
- data/lib/finch-api/models/hris/company.rb +9 -52
- data/lib/finch-api/models/hris/document_list_params.rb +3 -13
- data/lib/finch-api/models/hris/document_response.rb +3 -14
- data/lib/finch-api/models/hris/document_retreive_response.rb +7 -23
- data/lib/finch-api/models/hris/employment_data.rb +9 -58
- data/lib/finch-api/models/hris/individual.rb +12 -66
- data/lib/finch-api/models/hris/pay_statement.rb +12 -70
- data/lib/finch-api/models/hris/payment.rb +3 -21
- data/lib/finch-api/models/hris/supported_benefit.rb +9 -39
- data/lib/finch-api/models/hris/w42005.rb +12 -49
- data/lib/finch-api/models/hris/w42020.rb +8 -29
- data/lib/finch-api/models/income.rb +3 -22
- data/lib/finch-api/models/individual_event.rb +3 -15
- data/lib/finch-api/models/introspection.rb +9 -50
- data/lib/finch-api/models/job_completion_event.rb +3 -21
- data/lib/finch-api/models/jobs/automated_async_job.rb +6 -35
- data/lib/finch-api/models/jobs/automated_create_params.rb +3 -12
- data/lib/finch-api/models/jobs/automated_list_response.rb +100 -0
- data/lib/finch-api/models/jobs/manual_async_job.rb +3 -17
- data/lib/finch-api/models/operation_support.rb +3 -18
- data/lib/finch-api/models/pay_statement_event.rb +3 -15
- data/lib/finch-api/models/payment_event.rb +3 -15
- data/lib/finch-api/models/payroll/pay_group_list_response.rb +3 -21
- data/lib/finch-api/models/payroll/pay_group_retrieve_response.rb +3 -21
- data/lib/finch-api/models/provider.rb +3 -20
- data/lib/finch-api/models/sandbox/company_update_params.rb +9 -52
- data/lib/finch-api/models/sandbox/company_update_response.rb +9 -52
- data/lib/finch-api/models/sandbox/connection_create_params.rb +3 -17
- data/lib/finch-api/models/sandbox/connection_create_response.rb +3 -17
- data/lib/finch-api/models/sandbox/connections/account_create_params.rb +3 -17
- data/lib/finch-api/models/sandbox/connections/account_create_response.rb +3 -17
- data/lib/finch-api/models/sandbox/connections/account_update_response.rb +3 -17
- data/lib/finch-api/models/sandbox/directory_create_params.rb +21 -124
- data/lib/finch-api/models/sandbox/employment_update_params.rb +9 -58
- data/lib/finch-api/models/sandbox/employment_update_response.rb +9 -58
- data/lib/finch-api/models/sandbox/individual_update_params.rb +12 -66
- data/lib/finch-api/models/sandbox/individual_update_response.rb +12 -66
- data/lib/finch-api/models/sandbox/job_create_params.rb +3 -12
- data/lib/finch-api/models/sandbox/jobs/configuration_retrieve_response.rb +2 -1
- data/lib/finch-api/models/sandbox/jobs/sandbox_job_configuration.rb +6 -28
- data/lib/finch-api/models/sandbox/payment_create_params.rb +12 -70
- data/lib/finch-api/models/webhook_event.rb +10 -27
- data/lib/finch-api/page.rb +28 -34
- data/lib/finch-api/pooled_net_requester.rb +51 -46
- data/lib/finch-api/request_options.rb +5 -12
- data/lib/finch-api/resources/access_tokens.rb +0 -2
- data/lib/finch-api/resources/account.rb +0 -3
- data/lib/finch-api/resources/connect/sessions.rb +0 -3
- data/lib/finch-api/resources/connect.rb +0 -1
- data/lib/finch-api/resources/hris/benefits/individuals.rb +2 -6
- data/lib/finch-api/resources/hris/benefits.rb +0 -6
- data/lib/finch-api/resources/hris/company.rb +0 -2
- data/lib/finch-api/resources/hris/directory.rb +1 -24
- data/lib/finch-api/resources/hris/documents.rb +4 -7
- data/lib/finch-api/resources/hris/employments.rb +0 -2
- data/lib/finch-api/resources/hris/individuals.rb +0 -2
- data/lib/finch-api/resources/hris/pay_statements.rb +0 -2
- data/lib/finch-api/resources/hris/payments.rb +0 -2
- data/lib/finch-api/resources/hris.rb +0 -1
- data/lib/finch-api/resources/jobs/automated.rb +2 -7
- data/lib/finch-api/resources/jobs/manual.rb +0 -2
- data/lib/finch-api/resources/jobs.rb +0 -1
- data/lib/finch-api/resources/payroll/pay_groups.rb +0 -3
- data/lib/finch-api/resources/payroll.rb +0 -1
- data/lib/finch-api/resources/providers.rb +0 -2
- data/lib/finch-api/resources/request_forwarding.rb +0 -2
- data/lib/finch-api/resources/sandbox/company.rb +0 -2
- data/lib/finch-api/resources/sandbox/connections/accounts.rb +0 -3
- data/lib/finch-api/resources/sandbox/connections.rb +0 -2
- data/lib/finch-api/resources/sandbox/directory.rb +0 -2
- data/lib/finch-api/resources/sandbox/employment.rb +0 -2
- data/lib/finch-api/resources/sandbox/individual.rb +0 -2
- data/lib/finch-api/resources/sandbox/jobs/configuration.rb +0 -3
- data/lib/finch-api/resources/sandbox/jobs.rb +0 -2
- data/lib/finch-api/resources/sandbox/payment.rb +0 -2
- data/lib/finch-api/resources/sandbox.rb +0 -1
- data/lib/finch-api/resources/webhooks.rb +0 -1
- data/lib/finch-api/responses_page.rb +24 -31
- data/lib/finch-api/single_page.rb +23 -31
- data/lib/finch-api/util.rb +216 -124
- data/lib/finch-api/version.rb +1 -1
- data/lib/finch-api.rb +17 -0
- data/manifest.yaml +1 -0
- data/rbi/lib/finch-api/base_client.rbi +89 -66
- data/rbi/lib/finch-api/base_model.rbi +403 -236
- data/rbi/lib/finch-api/base_page.rbi +3 -6
- data/rbi/lib/finch-api/client.rbi +23 -28
- data/rbi/lib/finch-api/errors.rbi +20 -22
- data/rbi/lib/finch-api/extern.rbi +1 -1
- data/rbi/lib/finch-api/individuals_page.rbi +5 -23
- data/rbi/lib/finch-api/models/access_token_create_params.rbi +13 -24
- data/rbi/lib/finch-api/models/account_disconnect_params.rbi +9 -2
- data/rbi/lib/finch-api/models/account_introspect_params.rbi +9 -2
- data/rbi/lib/finch-api/models/account_update_event.rbi +871 -983
- data/rbi/lib/finch-api/models/base_webhook_event.rbi +13 -19
- data/rbi/lib/finch-api/models/company_event.rbi +28 -20
- data/rbi/lib/finch-api/models/connect/session_new_params.rbi +90 -104
- data/rbi/lib/finch-api/models/connect/session_new_response.rbi +6 -14
- data/rbi/lib/finch-api/models/connect/session_reauthenticate_params.rbi +37 -47
- data/rbi/lib/finch-api/models/connect/session_reauthenticate_response.rbi +6 -14
- data/rbi/lib/finch-api/models/connection_status_type.rbi +13 -9
- data/rbi/lib/finch-api/models/create_access_token_response.rbi +61 -78
- data/rbi/lib/finch-api/models/directory_event.rbi +42 -27
- data/rbi/lib/finch-api/models/disconnect_response.rbi +4 -8
- data/rbi/lib/finch-api/models/employment_event.rbi +42 -27
- data/rbi/lib/finch-api/models/hris/benefit_contribution.rbi +29 -21
- data/rbi/lib/finch-api/models/hris/benefit_create_params.rbi +18 -26
- data/rbi/lib/finch-api/models/hris/benefit_features_and_operations.rbi +199 -86
- data/rbi/lib/finch-api/models/hris/benefit_frequency.rbi +9 -6
- data/rbi/lib/finch-api/models/hris/benefit_list_params.rbi +9 -2
- data/rbi/lib/finch-api/models/hris/benefit_list_supported_benefits_params.rbi +9 -2
- data/rbi/lib/finch-api/models/hris/benefit_retrieve_params.rbi +9 -2
- data/rbi/lib/finch-api/models/hris/benefit_type.rbi +26 -22
- data/rbi/lib/finch-api/models/hris/benefit_update_params.rbi +7 -11
- data/rbi/lib/finch-api/models/hris/benefits/enrolled_individual.rbi +43 -49
- data/rbi/lib/finch-api/models/hris/benefits/individual_benefit.rbi +74 -63
- data/rbi/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rbi +249 -104
- data/rbi/lib/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbi +9 -2
- data/rbi/lib/finch-api/models/hris/benefits/individual_enrolled_ids_response.rbi +4 -14
- data/rbi/lib/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbi +11 -8
- data/rbi/lib/finch-api/models/hris/benefits/individual_unenroll_many_params.rbi +7 -8
- data/rbi/lib/finch-api/models/hris/benefits/unenrolled_individual.rbi +23 -39
- data/rbi/lib/finch-api/models/hris/benefits_support.rbi +88 -86
- data/rbi/lib/finch-api/models/hris/benfit_contribution.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/company.rbi +119 -171
- data/rbi/lib/finch-api/models/hris/company_benefit.rbi +13 -32
- data/rbi/lib/finch-api/models/hris/company_retrieve_params.rbi +9 -2
- data/rbi/lib/finch-api/models/hris/create_company_benefits_response.rbi +3 -8
- data/rbi/lib/finch-api/models/hris/directory_list_individuals_params.rbi +11 -13
- data/rbi/lib/finch-api/models/hris/directory_list_params.rbi +11 -13
- data/rbi/lib/finch-api/models/hris/document_list_params.rbi +32 -31
- data/rbi/lib/finch-api/models/hris/document_list_response.rbi +10 -17
- data/rbi/lib/finch-api/models/hris/document_response.rbi +40 -43
- data/rbi/lib/finch-api/models/hris/document_retreive_params.rbi +9 -2
- data/rbi/lib/finch-api/models/hris/document_retreive_response.rbi +6 -4
- data/rbi/lib/finch-api/models/hris/employment_data.rbi +163 -205
- data/rbi/lib/finch-api/models/hris/employment_data_response.rbi +18 -17
- data/rbi/lib/finch-api/models/hris/employment_retrieve_many_params.rbi +12 -21
- data/rbi/lib/finch-api/models/hris/individual.rbi +126 -151
- data/rbi/lib/finch-api/models/hris/individual_in_directory.rbi +42 -68
- data/rbi/lib/finch-api/models/hris/individual_response.rbi +18 -17
- data/rbi/lib/finch-api/models/hris/individual_retrieve_many_params.rbi +27 -31
- data/rbi/lib/finch-api/models/hris/pay_statement.rbi +290 -341
- data/rbi/lib/finch-api/models/hris/pay_statement_response.rbi +18 -20
- data/rbi/lib/finch-api/models/hris/pay_statement_response_body.rbi +13 -16
- data/rbi/lib/finch-api/models/hris/pay_statement_retrieve_many_params.rbi +18 -31
- data/rbi/lib/finch-api/models/hris/payment.rbi +63 -103
- data/rbi/lib/finch-api/models/hris/payment_list_params.rbi +9 -15
- data/rbi/lib/finch-api/models/hris/support_per_benefit_type.rbi +10 -14
- data/rbi/lib/finch-api/models/hris/supported_benefit.rbi +83 -79
- data/rbi/lib/finch-api/models/hris/update_company_benefit_response.rbi +3 -8
- data/rbi/lib/finch-api/models/hris/w42005.rbi +86 -70
- data/rbi/lib/finch-api/models/hris/w42020.rbi +84 -86
- data/rbi/lib/finch-api/models/income.rbi +34 -41
- data/rbi/lib/finch-api/models/individual_event.rbi +42 -27
- data/rbi/lib/finch-api/models/introspection.rbi +138 -178
- data/rbi/lib/finch-api/models/job_completion_event.rbi +48 -37
- data/rbi/lib/finch-api/models/jobs/automated_async_job.rbi +66 -94
- data/rbi/lib/finch-api/models/jobs/automated_create_params.rbi +26 -33
- data/rbi/lib/finch-api/models/jobs/automated_create_response.rbi +11 -31
- data/rbi/lib/finch-api/models/jobs/automated_list_params.rbi +11 -13
- data/rbi/lib/finch-api/models/jobs/automated_list_response.rbi +126 -0
- data/rbi/lib/finch-api/models/jobs/automated_retrieve_params.rbi +9 -2
- data/rbi/lib/finch-api/models/jobs/manual_async_job.rbi +32 -27
- data/rbi/lib/finch-api/models/jobs/manual_retrieve_params.rbi +9 -2
- data/rbi/lib/finch-api/models/location.rbi +16 -59
- data/rbi/lib/finch-api/models/money.rbi +7 -13
- data/rbi/lib/finch-api/models/operation_support.rbi +18 -7
- data/rbi/lib/finch-api/models/operation_support_matrix.rbi +65 -27
- data/rbi/lib/finch-api/models/paging.rbi +10 -12
- data/rbi/lib/finch-api/models/pay_statement_event.rbi +46 -32
- data/rbi/lib/finch-api/models/payment_event.rbi +39 -34
- data/rbi/lib/finch-api/models/payroll/pay_group_list_params.rbi +9 -13
- data/rbi/lib/finch-api/models/payroll/pay_group_list_response.rbi +55 -30
- data/rbi/lib/finch-api/models/payroll/pay_group_retrieve_params.rbi +9 -2
- data/rbi/lib/finch-api/models/payroll/pay_group_retrieve_response.rbi +45 -46
- data/rbi/lib/finch-api/models/provider.rbi +873 -964
- data/rbi/lib/finch-api/models/provider_list_params.rbi +9 -2
- data/rbi/lib/finch-api/models/request_forwarding_forward_params.rbi +20 -33
- data/rbi/lib/finch-api/models/request_forwarding_forward_response.rbi +40 -59
- data/rbi/lib/finch-api/models/sandbox/company_update_params.rbi +144 -166
- data/rbi/lib/finch-api/models/sandbox/company_update_response.rbi +145 -174
- data/rbi/lib/finch-api/models/sandbox/connection_create_params.rbi +43 -39
- data/rbi/lib/finch-api/models/sandbox/connection_create_response.rbi +38 -59
- data/rbi/lib/finch-api/models/sandbox/connections/account_create_params.rbi +62 -39
- data/rbi/lib/finch-api/models/sandbox/connections/account_create_response.rbi +54 -62
- data/rbi/lib/finch-api/models/sandbox/connections/account_update_params.rbi +17 -11
- data/rbi/lib/finch-api/models/sandbox/connections/account_update_response.rbi +55 -54
- data/rbi/lib/finch-api/models/sandbox/directory_create_params.rbi +380 -332
- data/rbi/lib/finch-api/models/sandbox/directory_create_response.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/employment_update_params.rbi +190 -194
- data/rbi/lib/finch-api/models/sandbox/employment_update_response.rbi +195 -198
- data/rbi/lib/finch-api/models/sandbox/individual_update_params.rbi +151 -145
- data/rbi/lib/finch-api/models/sandbox/individual_update_response.rbi +163 -151
- data/rbi/lib/finch-api/models/sandbox/job_create_params.rbi +22 -19
- data/rbi/lib/finch-api/models/sandbox/job_create_response.rbi +11 -31
- data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbi +9 -2
- data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_response.rbi +2 -1
- data/rbi/lib/finch-api/models/sandbox/jobs/configuration_update_params.rbi +9 -2
- data/rbi/lib/finch-api/models/sandbox/jobs/sandbox_job_configuration.rbi +56 -26
- data/rbi/lib/finch-api/models/sandbox/payment_create_params.rbi +409 -393
- data/rbi/lib/finch-api/models/sandbox/payment_create_response.rbi +6 -14
- data/rbi/lib/finch-api/models/webhook_event.rbi +4 -4
- data/rbi/lib/finch-api/page.rbi +5 -23
- data/rbi/lib/finch-api/pooled_net_requester.rbi +39 -16
- data/rbi/lib/finch-api/request_options.rbi +33 -54
- data/rbi/lib/finch-api/resources/access_tokens.rbi +4 -3
- data/rbi/lib/finch-api/resources/account.rbi +6 -4
- data/rbi/lib/finch-api/resources/connect/sessions.rbi +17 -8
- data/rbi/lib/finch-api/resources/connect.rbi +3 -4
- data/rbi/lib/finch-api/resources/hris/benefits/individuals.rbi +33 -10
- data/rbi/lib/finch-api/resources/hris/benefits.rbi +32 -13
- data/rbi/lib/finch-api/resources/hris/company.rbi +4 -3
- data/rbi/lib/finch-api/resources/hris/directory.rbi +11 -15
- data/rbi/lib/finch-api/resources/hris/documents.rbi +27 -7
- data/rbi/lib/finch-api/resources/hris/employments.rbi +10 -5
- data/rbi/lib/finch-api/resources/hris/individuals.rbi +6 -5
- data/rbi/lib/finch-api/resources/hris/pay_statements.rbi +13 -5
- data/rbi/lib/finch-api/resources/hris/payments.rbi +13 -4
- data/rbi/lib/finch-api/resources/hris.rbi +10 -18
- data/rbi/lib/finch-api/resources/jobs/automated.rbi +39 -10
- data/rbi/lib/finch-api/resources/jobs/manual.rbi +5 -3
- data/rbi/lib/finch-api/resources/jobs.rbi +4 -6
- data/rbi/lib/finch-api/resources/payroll/pay_groups.rbi +6 -4
- data/rbi/lib/finch-api/resources/payroll.rbi +3 -4
- data/rbi/lib/finch-api/resources/providers.rbi +4 -3
- data/rbi/lib/finch-api/resources/request_forwarding.rbi +27 -4
- data/rbi/lib/finch-api/resources/sandbox/company.rbi +19 -7
- data/rbi/lib/finch-api/resources/sandbox/connections/accounts.rbi +19 -7
- data/rbi/lib/finch-api/resources/sandbox/connections.rbi +10 -6
- data/rbi/lib/finch-api/resources/sandbox/directory.rbi +12 -6
- data/rbi/lib/finch-api/resources/sandbox/employment.rbi +30 -11
- data/rbi/lib/finch-api/resources/sandbox/individual.rbi +26 -8
- data/rbi/lib/finch-api/resources/sandbox/jobs/configuration.rbi +9 -7
- data/rbi/lib/finch-api/resources/sandbox/jobs.rbi +11 -7
- data/rbi/lib/finch-api/resources/sandbox/payment.rbi +5 -4
- data/rbi/lib/finch-api/resources/sandbox.rbi +9 -16
- data/rbi/lib/finch-api/resources/webhooks.rbi +2 -2
- data/rbi/lib/finch-api/responses_page.rbi +4 -17
- data/rbi/lib/finch-api/single_page.rbi +4 -12
- data/rbi/lib/finch-api/util.rbi +228 -115
- data/rbi/lib/finch-api/version.rbi +1 -1
- data/sig/finch-api/base_client.rbs +20 -15
- data/sig/finch-api/base_model.rbs +36 -18
- data/sig/finch-api/base_page.rbs +1 -1
- data/sig/finch-api/client.rbs +8 -8
- data/sig/finch-api/errors.rbs +21 -21
- data/sig/finch-api/individuals_page.rbs +2 -7
- data/sig/finch-api/models/access_token_create_params.rbs +7 -12
- data/sig/finch-api/models/account_disconnect_params.rbs +1 -6
- data/sig/finch-api/models/account_introspect_params.rbs +1 -6
- data/sig/finch-api/models/account_update_event.rbs +204 -361
- data/sig/finch-api/models/base_webhook_event.rbs +5 -5
- data/sig/finch-api/models/company_event.rbs +13 -11
- data/sig/finch-api/models/connect/session_new_params.rbs +28 -32
- data/sig/finch-api/models/connect/session_new_response.rbs +1 -6
- data/sig/finch-api/models/connect/session_reauthenticate_params.rbs +11 -14
- data/sig/finch-api/models/connect/session_reauthenticate_response.rbs +1 -6
- data/sig/finch-api/models/connection_status_type.rbs +4 -2
- data/sig/finch-api/models/create_access_token_response.rbs +20 -21
- data/sig/finch-api/models/directory_event.rbs +13 -19
- data/sig/finch-api/models/disconnect_response.rbs +1 -5
- data/sig/finch-api/models/employment_event.rbs +13 -19
- data/sig/finch-api/models/hris/benefit_contribution.rbs +8 -11
- data/sig/finch-api/models/hris/benefit_create_params.rbs +6 -11
- data/sig/finch-api/models/hris/benefit_features_and_operations.rbs +25 -29
- data/sig/finch-api/models/hris/benefit_frequency.rbs +4 -2
- data/sig/finch-api/models/hris/benefit_list_params.rbs +1 -6
- data/sig/finch-api/models/hris/benefit_list_supported_benefits_params.rbs +1 -6
- data/sig/finch-api/models/hris/benefit_retrieve_params.rbs +1 -6
- data/sig/finch-api/models/hris/benefit_type.rbs +4 -2
- data/sig/finch-api/models/hris/benefit_update_params.rbs +4 -6
- data/sig/finch-api/models/hris/benefits/enrolled_individual.rbs +14 -18
- data/sig/finch-api/models/hris/benefits/individual_benefit.rbs +16 -25
- data/sig/finch-api/models/hris/benefits/individual_enroll_many_params.rbs +35 -54
- data/sig/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbs +1 -6
- data/sig/finch-api/models/hris/benefits/individual_enrolled_ids_response.rbs +4 -6
- data/sig/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbs +4 -9
- data/sig/finch-api/models/hris/benefits/individual_unenroll_many_params.rbs +4 -9
- data/sig/finch-api/models/hris/benefits/unenrolled_individual.rbs +10 -16
- data/sig/finch-api/models/hris/benefits_support.rbs +14 -18
- data/sig/finch-api/models/hris/benfit_contribution.rbs +0 -1
- data/sig/finch-api/models/hris/company.rbs +39 -57
- data/sig/finch-api/models/hris/company_benefit.rbs +6 -10
- data/sig/finch-api/models/hris/company_retrieve_params.rbs +1 -6
- data/sig/finch-api/models/hris/create_company_benefits_response.rbs +1 -6
- data/sig/finch-api/models/hris/directory_list_individuals_params.rbs +5 -10
- data/sig/finch-api/models/hris/directory_list_params.rbs +5 -10
- data/sig/finch-api/models/hris/document_list_params.rbs +11 -14
- data/sig/finch-api/models/hris/document_list_response.rbs +4 -9
- data/sig/finch-api/models/hris/document_response.rbs +11 -14
- data/sig/finch-api/models/hris/document_retreive_params.rbs +1 -6
- data/sig/finch-api/models/hris/document_retreive_response.rbs +4 -2
- data/sig/finch-api/models/hris/employment_data.rbs +41 -59
- data/sig/finch-api/models/hris/employment_data_response.rbs +5 -10
- data/sig/finch-api/models/hris/employment_retrieve_many_params.rbs +5 -15
- data/sig/finch-api/models/hris/individual.rbs +39 -45
- data/sig/finch-api/models/hris/individual_in_directory.rbs +11 -26
- data/sig/finch-api/models/hris/individual_response.rbs +5 -10
- data/sig/finch-api/models/hris/individual_retrieve_many_params.rbs +7 -22
- data/sig/finch-api/models/hris/pay_statement.rbs +75 -131
- data/sig/finch-api/models/hris/pay_statement_response.rbs +5 -10
- data/sig/finch-api/models/hris/pay_statement_response_body.rbs +4 -9
- data/sig/finch-api/models/hris/pay_statement_retrieve_many_params.rbs +9 -15
- data/sig/finch-api/models/hris/payment.rbs +19 -26
- data/sig/finch-api/models/hris/payment_list_params.rbs +5 -10
- data/sig/finch-api/models/hris/support_per_benefit_type.rbs +4 -9
- data/sig/finch-api/models/hris/supported_benefit.rbs +22 -21
- data/sig/finch-api/models/hris/update_company_benefit_response.rbs +1 -6
- data/sig/finch-api/models/hris/w42005.rbs +26 -30
- data/sig/finch-api/models/hris/w42020.rbs +23 -25
- data/sig/finch-api/models/income.rbs +10 -10
- data/sig/finch-api/models/individual_event.rbs +13 -19
- data/sig/finch-api/models/introspection.rbs +43 -54
- data/sig/finch-api/models/job_completion_event.rbs +13 -20
- data/sig/finch-api/models/jobs/automated_async_job.rbs +20 -26
- data/sig/finch-api/models/jobs/automated_create_params.rbs +10 -18
- data/sig/finch-api/models/jobs/automated_create_response.rbs +6 -11
- data/sig/finch-api/models/jobs/automated_list_params.rbs +5 -10
- data/sig/finch-api/models/jobs/automated_list_response.rbs +82 -0
- data/sig/finch-api/models/jobs/automated_retrieve_params.rbs +1 -6
- data/sig/finch-api/models/jobs/manual_async_job.rbs +9 -11
- data/sig/finch-api/models/jobs/manual_retrieve_params.rbs +1 -6
- data/sig/finch-api/models/location.rbs +10 -12
- data/sig/finch-api/models/money.rbs +1 -3
- data/sig/finch-api/models/operation_support.rbs +4 -2
- data/sig/finch-api/models/operation_support_matrix.rbs +6 -10
- data/sig/finch-api/models/paging.rbs +1 -3
- data/sig/finch-api/models/pay_statement_event.rbs +13 -20
- data/sig/finch-api/models/payment_event.rbs +13 -17
- data/sig/finch-api/models/payroll/pay_group_list_params.rbs +5 -10
- data/sig/finch-api/models/payroll/pay_group_list_response.rbs +9 -12
- data/sig/finch-api/models/payroll/pay_group_retrieve_params.rbs +1 -6
- data/sig/finch-api/models/payroll/pay_group_retrieve_response.rbs +10 -13
- data/sig/finch-api/models/provider.rbs +200 -347
- data/sig/finch-api/models/provider_list_params.rbs +1 -5
- data/sig/finch-api/models/request_forwarding_forward_params.rbs +8 -13
- data/sig/finch-api/models/request_forwarding_forward_response.rbs +13 -23
- data/sig/finch-api/models/sandbox/company_update_params.rbs +39 -58
- data/sig/finch-api/models/sandbox/company_update_response.rbs +38 -57
- data/sig/finch-api/models/sandbox/connection_create_params.rbs +11 -14
- data/sig/finch-api/models/sandbox/connection_create_response.rbs +14 -17
- data/sig/finch-api/models/sandbox/connections/account_create_params.rbs +11 -14
- data/sig/finch-api/models/sandbox/connections/account_create_response.rbs +13 -16
- data/sig/finch-api/models/sandbox/connections/account_update_params.rbs +4 -9
- data/sig/finch-api/models/sandbox/connections/account_update_response.rbs +12 -15
- data/sig/finch-api/models/sandbox/directory_create_params.rbs +76 -102
- data/sig/finch-api/models/sandbox/employment_update_params.rbs +40 -59
- data/sig/finch-api/models/sandbox/employment_update_response.rbs +40 -59
- data/sig/finch-api/models/sandbox/individual_update_params.rbs +39 -46
- data/sig/finch-api/models/sandbox/individual_update_response.rbs +39 -46
- data/sig/finch-api/models/sandbox/job_create_params.rbs +8 -11
- data/sig/finch-api/models/sandbox/job_create_response.rbs +6 -11
- data/sig/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbs +1 -6
- data/sig/finch-api/models/sandbox/jobs/configuration_update_params.rbs +1 -6
- data/sig/finch-api/models/sandbox/jobs/sandbox_job_configuration.rbs +12 -13
- data/sig/finch-api/models/sandbox/payment_create_params.rbs +81 -143
- data/sig/finch-api/models/sandbox/payment_create_response.rbs +1 -6
- data/sig/finch-api/models/webhook_event.rbs +5 -3
- data/sig/finch-api/page.rbs +2 -7
- data/sig/finch-api/pooled_net_requester.rbs +13 -4
- data/sig/finch-api/request_options.rbs +6 -2
- data/sig/finch-api/resources/access_tokens.rbs +7 -11
- data/sig/finch-api/resources/account.rbs +6 -16
- data/sig/finch-api/resources/connect/sessions.rbs +19 -29
- data/sig/finch-api/resources/hris/benefits/individuals.rbs +19 -43
- data/sig/finch-api/resources/hris/benefits.rbs +21 -48
- data/sig/finch-api/resources/hris/company.rbs +3 -8
- data/sig/finch-api/resources/hris/directory.rbs +6 -20
- data/sig/finch-api/resources/hris/documents.rbs +11 -22
- data/sig/finch-api/resources/hris/employments.rbs +4 -9
- data/sig/finch-api/resources/hris/individuals.rbs +5 -10
- data/sig/finch-api/resources/hris/pay_statements.rbs +4 -9
- data/sig/finch-api/resources/hris/payments.rbs +5 -10
- data/sig/finch-api/resources/jobs/automated.rbs +14 -30
- data/sig/finch-api/resources/jobs/manual.rbs +4 -10
- data/sig/finch-api/resources/payroll/pay_groups.rbs +9 -20
- data/sig/finch-api/resources/providers.rbs +3 -7
- data/sig/finch-api/resources/request_forwarding.rbs +8 -13
- data/sig/finch-api/resources/sandbox/company.rbs +11 -16
- data/sig/finch-api/resources/sandbox/connections/accounts.rbs +11 -21
- data/sig/finch-api/resources/sandbox/connections.rbs +7 -12
- data/sig/finch-api/resources/sandbox/directory.rbs +4 -9
- data/sig/finch-api/resources/sandbox/employment.rbs +22 -28
- data/sig/finch-api/resources/sandbox/individual.rbs +16 -22
- data/sig/finch-api/resources/sandbox/jobs/configuration.rbs +8 -18
- data/sig/finch-api/resources/sandbox/jobs.rbs +4 -9
- data/sig/finch-api/resources/sandbox/payment.rbs +6 -11
- data/sig/finch-api/responses_page.rbs +2 -7
- data/sig/finch-api/single_page.rbs +2 -7
- data/sig/finch-api/util.rbs +37 -12
- data/sig/finch-api/version.rbs +1 -1
- metadata +7 -4
data/lib/finch-api/util.rb
CHANGED
@@ -3,20 +3,17 @@
|
|
3
3
|
module FinchAPI
|
4
4
|
# rubocop:disable Metrics/ModuleLength
|
5
5
|
|
6
|
-
# @private
|
7
|
-
#
|
6
|
+
# @api private
|
8
7
|
module Util
|
9
|
-
# @private
|
8
|
+
# @api private
|
10
9
|
#
|
11
10
|
# @return [Float]
|
12
|
-
#
|
13
11
|
def self.monotonic_secs = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
14
12
|
|
15
13
|
class << self
|
16
|
-
# @private
|
14
|
+
# @api private
|
17
15
|
#
|
18
16
|
# @return [String]
|
19
|
-
#
|
20
17
|
def arch
|
21
18
|
case (arch = RbConfig::CONFIG["arch"])&.downcase
|
22
19
|
in nil
|
@@ -32,10 +29,9 @@ module FinchAPI
|
|
32
29
|
end
|
33
30
|
end
|
34
31
|
|
35
|
-
# @private
|
32
|
+
# @api private
|
36
33
|
#
|
37
34
|
# @return [String]
|
38
|
-
#
|
39
35
|
def os
|
40
36
|
case (host = RbConfig::CONFIG["host_os"])&.downcase
|
41
37
|
in nil
|
@@ -57,12 +53,11 @@ module FinchAPI
|
|
57
53
|
end
|
58
54
|
|
59
55
|
class << self
|
60
|
-
# @private
|
56
|
+
# @api private
|
61
57
|
#
|
62
58
|
# @param input [Object]
|
63
59
|
#
|
64
|
-
# @return [Boolean
|
65
|
-
#
|
60
|
+
# @return [Boolean]
|
66
61
|
def primitive?(input)
|
67
62
|
case input
|
68
63
|
in true | false | Integer | Float | Symbol | String
|
@@ -72,12 +67,11 @@ module FinchAPI
|
|
72
67
|
end
|
73
68
|
end
|
74
69
|
|
75
|
-
# @private
|
70
|
+
# @api private
|
76
71
|
#
|
77
72
|
# @param input [Object]
|
78
73
|
#
|
79
74
|
# @return [Boolean, Object]
|
80
|
-
#
|
81
75
|
def coerce_boolean(input)
|
82
76
|
case input.is_a?(String) ? input.downcase : input
|
83
77
|
in Numeric
|
@@ -91,13 +85,12 @@ module FinchAPI
|
|
91
85
|
end
|
92
86
|
end
|
93
87
|
|
94
|
-
# @private
|
88
|
+
# @api private
|
95
89
|
#
|
96
90
|
# @param input [Object]
|
97
91
|
#
|
98
92
|
# @raise [ArgumentError]
|
99
93
|
# @return [Boolean, nil]
|
100
|
-
#
|
101
94
|
def coerce_boolean!(input)
|
102
95
|
case coerce_boolean(input)
|
103
96
|
in true | false | nil => coerced
|
@@ -107,12 +100,11 @@ module FinchAPI
|
|
107
100
|
end
|
108
101
|
end
|
109
102
|
|
110
|
-
# @private
|
103
|
+
# @api private
|
111
104
|
#
|
112
105
|
# @param input [Object]
|
113
106
|
#
|
114
107
|
# @return [Integer, Object]
|
115
|
-
#
|
116
108
|
def coerce_integer(input)
|
117
109
|
case input
|
118
110
|
in true
|
@@ -124,12 +116,11 @@ module FinchAPI
|
|
124
116
|
end
|
125
117
|
end
|
126
118
|
|
127
|
-
# @private
|
119
|
+
# @api private
|
128
120
|
#
|
129
121
|
# @param input [Object]
|
130
122
|
#
|
131
123
|
# @return [Float, Object]
|
132
|
-
#
|
133
124
|
def coerce_float(input)
|
134
125
|
case input
|
135
126
|
in true
|
@@ -141,12 +132,11 @@ module FinchAPI
|
|
141
132
|
end
|
142
133
|
end
|
143
134
|
|
144
|
-
# @private
|
135
|
+
# @api private
|
145
136
|
#
|
146
137
|
# @param input [Object]
|
147
138
|
#
|
148
139
|
# @return [Hash{Object=>Object}, Object]
|
149
|
-
#
|
150
140
|
def coerce_hash(input)
|
151
141
|
case input
|
152
142
|
in NilClass | Array | Set | Enumerator
|
@@ -165,14 +155,13 @@ module FinchAPI
|
|
165
155
|
OMIT = Object.new.freeze
|
166
156
|
|
167
157
|
class << self
|
168
|
-
# @private
|
158
|
+
# @api private
|
169
159
|
#
|
170
160
|
# @param lhs [Object]
|
171
161
|
# @param rhs [Object]
|
172
162
|
# @param concat [Boolean]
|
173
163
|
#
|
174
164
|
# @return [Object]
|
175
|
-
#
|
176
165
|
private def deep_merge_lr(lhs, rhs, concat: false)
|
177
166
|
case [lhs, rhs, concat]
|
178
167
|
in [Hash, Hash, _]
|
@@ -191,7 +180,7 @@ module FinchAPI
|
|
191
180
|
end
|
192
181
|
end
|
193
182
|
|
194
|
-
# @private
|
183
|
+
# @api private
|
195
184
|
#
|
196
185
|
# Recursively merge one hash with another. If the values at a given key are not
|
197
186
|
# both hashes, just take the new value.
|
@@ -203,7 +192,6 @@ module FinchAPI
|
|
203
192
|
# @param concat [Boolean] whether to merge sequences by concatenation.
|
204
193
|
#
|
205
194
|
# @return [Object]
|
206
|
-
#
|
207
195
|
def deep_merge(*values, sentinel: nil, concat: false)
|
208
196
|
case values
|
209
197
|
in [value, *values]
|
@@ -215,7 +203,7 @@ module FinchAPI
|
|
215
203
|
end
|
216
204
|
end
|
217
205
|
|
218
|
-
# @private
|
206
|
+
# @api private
|
219
207
|
#
|
220
208
|
# @param data [Hash{Symbol=>Object}, Array<Object>, Object]
|
221
209
|
# @param pick [Symbol, Integer, Array<Symbol, Integer>, nil]
|
@@ -223,7 +211,6 @@ module FinchAPI
|
|
223
211
|
# @param blk [Proc, nil]
|
224
212
|
#
|
225
213
|
# @return [Object, nil]
|
226
|
-
#
|
227
214
|
def dig(data, pick, sentinel = nil, &blk)
|
228
215
|
case [data, pick, blk]
|
229
216
|
in [_, nil, nil]
|
@@ -248,22 +235,20 @@ module FinchAPI
|
|
248
235
|
end
|
249
236
|
|
250
237
|
class << self
|
251
|
-
# @private
|
238
|
+
# @api private
|
252
239
|
#
|
253
240
|
# @param uri [URI::Generic]
|
254
241
|
#
|
255
242
|
# @return [String]
|
256
|
-
#
|
257
243
|
def uri_origin(uri)
|
258
244
|
"#{uri.scheme}://#{uri.host}#{uri.port == uri.default_port ? '' : ":#{uri.port}"}"
|
259
245
|
end
|
260
246
|
|
261
|
-
# @private
|
247
|
+
# @api private
|
262
248
|
#
|
263
249
|
# @param path [String, Array<String>]
|
264
250
|
#
|
265
251
|
# @return [String]
|
266
|
-
#
|
267
252
|
def interpolate_path(path)
|
268
253
|
case path
|
269
254
|
in String
|
@@ -278,40 +263,37 @@ module FinchAPI
|
|
278
263
|
end
|
279
264
|
|
280
265
|
class << self
|
281
|
-
# @private
|
266
|
+
# @api private
|
282
267
|
#
|
283
268
|
# @param query [String, nil]
|
284
269
|
#
|
285
270
|
# @return [Hash{String=>Array<String>}]
|
286
|
-
#
|
287
271
|
def decode_query(query)
|
288
272
|
CGI.parse(query.to_s)
|
289
273
|
end
|
290
274
|
|
291
|
-
# @private
|
275
|
+
# @api private
|
292
276
|
#
|
293
277
|
# @param query [Hash{String=>Array<String>, String, nil}, nil]
|
294
278
|
#
|
295
279
|
# @return [String, nil]
|
296
|
-
#
|
297
280
|
def encode_query(query)
|
298
281
|
query.to_h.empty? ? nil : URI.encode_www_form(query)
|
299
282
|
end
|
300
283
|
end
|
301
284
|
|
302
285
|
class << self
|
303
|
-
# @private
|
286
|
+
# @api private
|
304
287
|
#
|
305
288
|
# @param url [URI::Generic, String]
|
306
289
|
#
|
307
290
|
# @return [Hash{Symbol=>String, Integer, nil}]
|
308
|
-
#
|
309
291
|
def parse_uri(url)
|
310
292
|
parsed = URI::Generic.component.zip(URI.split(url)).to_h
|
311
293
|
{**parsed, query: decode_query(parsed.fetch(:query))}
|
312
294
|
end
|
313
295
|
|
314
|
-
# @private
|
296
|
+
# @api private
|
315
297
|
#
|
316
298
|
# @param parsed [Hash{Symbol=>String, Integer, nil}] .
|
317
299
|
#
|
@@ -326,12 +308,11 @@ module FinchAPI
|
|
326
308
|
# @option parsed [Hash{String=>Array<String>}] :query
|
327
309
|
#
|
328
310
|
# @return [URI::Generic]
|
329
|
-
#
|
330
311
|
def unparse_uri(parsed)
|
331
312
|
URI::Generic.build(**parsed, query: encode_query(parsed.fetch(:query)))
|
332
313
|
end
|
333
314
|
|
334
|
-
# @private
|
315
|
+
# @api private
|
335
316
|
#
|
336
317
|
# @param lhs [Hash{Symbol=>String, Integer, nil}] .
|
337
318
|
#
|
@@ -358,7 +339,6 @@ module FinchAPI
|
|
358
339
|
# @option rhs [Hash{String=>Array<String>}] :query
|
359
340
|
#
|
360
341
|
# @return [URI::Generic]
|
361
|
-
#
|
362
342
|
def join_parsed_uri(lhs, rhs)
|
363
343
|
base_path, base_query = lhs.fetch_values(:path, :query)
|
364
344
|
slashed = base_path.end_with?("/") ? base_path : "#{base_path}/"
|
@@ -380,112 +360,199 @@ module FinchAPI
|
|
380
360
|
end
|
381
361
|
|
382
362
|
class << self
|
383
|
-
# @private
|
363
|
+
# @api private
|
384
364
|
#
|
385
365
|
# @param headers [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}]
|
386
366
|
#
|
387
367
|
# @return [Hash{String=>String}]
|
388
|
-
#
|
389
368
|
def normalized_headers(*headers)
|
390
369
|
{}.merge(*headers.compact).to_h do |key, val|
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
370
|
+
value =
|
371
|
+
case val
|
372
|
+
in Array
|
373
|
+
val.map { _1.to_s.strip }.join(", ")
|
374
|
+
else
|
375
|
+
val&.to_s&.strip
|
376
|
+
end
|
377
|
+
[key.downcase, value]
|
378
|
+
end
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
# @api private
|
383
|
+
#
|
384
|
+
# An adapter that satisfies the IO interface required by `::IO.copy_stream`
|
385
|
+
class ReadIOAdapter
|
386
|
+
# @api private
|
387
|
+
#
|
388
|
+
# @param max_len [Integer, nil]
|
389
|
+
#
|
390
|
+
# @return [String]
|
391
|
+
private def read_enum(max_len)
|
392
|
+
case max_len
|
393
|
+
in nil
|
394
|
+
@stream.to_a.join
|
395
|
+
in Integer
|
396
|
+
@buf << @stream.next while @buf.length < max_len
|
397
|
+
@buf.slice!(..max_len)
|
398
|
+
end
|
399
|
+
rescue StopIteration
|
400
|
+
@stream = nil
|
401
|
+
@buf.slice!(0..)
|
402
|
+
end
|
403
|
+
|
404
|
+
# @api private
|
405
|
+
#
|
406
|
+
# @param max_len [Integer, nil]
|
407
|
+
# @param out_string [String, nil]
|
408
|
+
#
|
409
|
+
# @return [String, nil]
|
410
|
+
def read(max_len = nil, out_string = nil)
|
411
|
+
case @stream
|
412
|
+
in nil
|
413
|
+
nil
|
414
|
+
in IO | StringIO
|
415
|
+
@stream.read(max_len, out_string)
|
416
|
+
in Enumerator
|
417
|
+
read = read_enum(max_len)
|
418
|
+
case out_string
|
419
|
+
in String
|
420
|
+
out_string.replace(read)
|
421
|
+
in nil
|
422
|
+
read
|
396
423
|
end
|
397
|
-
[key.downcase, val]
|
398
424
|
end
|
425
|
+
.tap(&@blk)
|
426
|
+
end
|
427
|
+
|
428
|
+
# @api private
|
429
|
+
#
|
430
|
+
# @param stream [String, IO, StringIO, Enumerable]
|
431
|
+
# @param blk [Proc]
|
432
|
+
#
|
433
|
+
# @yieldparam [String]
|
434
|
+
def initialize(stream, &blk)
|
435
|
+
@stream = stream.is_a?(String) ? StringIO.new(stream) : stream
|
436
|
+
@buf = String.new.b
|
437
|
+
@blk = blk
|
399
438
|
end
|
400
439
|
end
|
401
440
|
|
402
441
|
class << self
|
403
|
-
# @
|
442
|
+
# @param blk [Proc]
|
404
443
|
#
|
405
|
-
# @
|
444
|
+
# @yieldparam [Enumerator::Yielder]
|
445
|
+
# @return [Enumerable]
|
446
|
+
def string_io(&blk)
|
447
|
+
Enumerator.new do |y|
|
448
|
+
y.define_singleton_method(:write) do
|
449
|
+
self << _1.clone
|
450
|
+
_1.bytesize
|
451
|
+
end
|
452
|
+
|
453
|
+
blk.call(y)
|
454
|
+
end
|
455
|
+
end
|
456
|
+
end
|
457
|
+
|
458
|
+
class << self
|
459
|
+
# rubocop:disable Naming/MethodParameterName
|
460
|
+
|
461
|
+
# @api private
|
462
|
+
#
|
463
|
+
# @param y [Enumerator::Yielder]
|
406
464
|
# @param boundary [String]
|
407
465
|
# @param key [Symbol, String]
|
408
466
|
# @param val [Object]
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
io << "Content-Disposition: form-data"
|
467
|
+
private def encode_multipart_formdata(y, boundary:, key:, val:)
|
468
|
+
y << "--#{boundary}\r\n"
|
469
|
+
y << "Content-Disposition: form-data"
|
413
470
|
unless key.nil?
|
414
471
|
name = ERB::Util.url_encode(key.to_s)
|
415
|
-
|
472
|
+
y << "; name=\"#{name}\""
|
416
473
|
end
|
417
474
|
if val.is_a?(IO)
|
418
475
|
filename = ERB::Util.url_encode(File.basename(val.to_path))
|
419
|
-
|
476
|
+
y << "; filename=\"#{filename}\""
|
420
477
|
end
|
421
|
-
|
478
|
+
y << "\r\n"
|
422
479
|
case val
|
423
|
-
in IO
|
424
|
-
|
425
|
-
IO.copy_stream(val,
|
480
|
+
in IO
|
481
|
+
y << "Content-Type: application/octet-stream\r\n\r\n"
|
482
|
+
IO.copy_stream(val, y)
|
483
|
+
in StringIO
|
484
|
+
y << "Content-Type: application/octet-stream\r\n\r\n"
|
485
|
+
y << val.string
|
426
486
|
in String
|
427
|
-
|
428
|
-
|
487
|
+
y << "Content-Type: application/octet-stream\r\n\r\n"
|
488
|
+
y << val.to_s
|
429
489
|
in true | false | Integer | Float | Symbol
|
430
|
-
|
431
|
-
|
490
|
+
y << "Content-Type: text/plain\r\n\r\n"
|
491
|
+
y << val.to_s
|
432
492
|
else
|
433
|
-
|
434
|
-
|
493
|
+
y << "Content-Type: application/json\r\n\r\n"
|
494
|
+
y << JSON.fast_generate(val)
|
435
495
|
end
|
436
|
-
|
496
|
+
y << "\r\n"
|
437
497
|
end
|
438
498
|
|
439
|
-
#
|
499
|
+
# rubocop:enable Naming/MethodParameterName
|
500
|
+
|
501
|
+
# @api private
|
502
|
+
#
|
503
|
+
# @param body [Object]
|
504
|
+
#
|
505
|
+
# @return [Array(String, Enumerable)]
|
506
|
+
private def encode_multipart_streaming(body)
|
507
|
+
boundary = SecureRandom.urlsafe_base64(60)
|
508
|
+
|
509
|
+
strio = string_io do |y|
|
510
|
+
case body
|
511
|
+
in Hash
|
512
|
+
body.each do |key, val|
|
513
|
+
case val
|
514
|
+
in Array if val.all? { primitive?(_1) }
|
515
|
+
val.each do |v|
|
516
|
+
encode_multipart_formdata(y, boundary: boundary, key: key, val: v)
|
517
|
+
end
|
518
|
+
else
|
519
|
+
encode_multipart_formdata(y, boundary: boundary, key: key, val: val)
|
520
|
+
end
|
521
|
+
end
|
522
|
+
else
|
523
|
+
encode_multipart_formdata(y, boundary: boundary, key: nil, val: body)
|
524
|
+
end
|
525
|
+
y << "--#{boundary}--\r\n"
|
526
|
+
end
|
527
|
+
|
528
|
+
[boundary, strio]
|
529
|
+
end
|
530
|
+
|
531
|
+
# @api private
|
440
532
|
#
|
441
533
|
# @param headers [Hash{String=>String}]
|
442
534
|
# @param body [Object]
|
443
535
|
#
|
444
536
|
# @return [Object]
|
445
|
-
#
|
446
537
|
def encode_content(headers, body)
|
447
538
|
content_type = headers["content-type"]
|
448
539
|
case [content_type, body]
|
449
|
-
in [
|
540
|
+
in [%r{^application/(?:vnd\.api\+)?json}, Hash | Array]
|
450
541
|
[headers, JSON.fast_generate(body)]
|
542
|
+
in [%r{^application/(?:x-)?jsonl}, Enumerable]
|
543
|
+
[headers, body.lazy.map { JSON.fast_generate(_1) }]
|
451
544
|
in [%r{^multipart/form-data}, Hash | IO | StringIO]
|
452
|
-
boundary =
|
453
|
-
|
454
|
-
case body
|
455
|
-
in Hash
|
456
|
-
body.each do |key, val|
|
457
|
-
case val
|
458
|
-
in Array if val.all? { primitive?(_1) }
|
459
|
-
val.each do |v|
|
460
|
-
encode_multipart_formdata(io, boundary: boundary, key: key, val: v)
|
461
|
-
end
|
462
|
-
else
|
463
|
-
encode_multipart_formdata(io, boundary: boundary, key: key, val: val)
|
464
|
-
end
|
465
|
-
end
|
466
|
-
else
|
467
|
-
encode_multipart_formdata(io, boundary: boundary, key: nil, val: body)
|
468
|
-
end
|
469
|
-
io << "--#{boundary}--\r\n"
|
470
|
-
io.rewind
|
471
|
-
end
|
472
|
-
headers = {
|
473
|
-
**headers,
|
474
|
-
"content-type" => "#{content_type}; boundary=#{boundary}",
|
475
|
-
"transfer-encoding" => "chunked"
|
476
|
-
}
|
545
|
+
boundary, strio = encode_multipart_streaming(body)
|
546
|
+
headers = {**headers, "content-type" => "#{content_type}; boundary=#{boundary}"}
|
477
547
|
[headers, strio]
|
478
548
|
in [_, StringIO]
|
479
549
|
[headers, body.string]
|
480
|
-
in [_, IO]
|
481
|
-
headers = {**headers, "transfer-encoding" => "chunked"}
|
482
|
-
[headers, body]
|
483
550
|
else
|
484
551
|
[headers, body]
|
485
552
|
end
|
486
553
|
end
|
487
554
|
|
488
|
-
# @private
|
555
|
+
# @api private
|
489
556
|
#
|
490
557
|
# @param headers [Hash{String=>String}, Net::HTTPHeader]
|
491
558
|
# @param stream [Enumerable]
|
@@ -493,13 +560,9 @@ module FinchAPI
|
|
493
560
|
#
|
494
561
|
# @raise [JSON::ParserError]
|
495
562
|
# @return [Object]
|
496
|
-
#
|
497
563
|
def decode_content(headers, stream:, suppress_error: false)
|
498
564
|
case headers["content-type"]
|
499
|
-
in %r{^
|
500
|
-
lines = enum_lines(stream)
|
501
|
-
parse_sse(lines)
|
502
|
-
in %r{^application/json}
|
565
|
+
in %r{^application/(?:vnd\.api\+)?json}
|
503
566
|
json = stream.to_a.join
|
504
567
|
begin
|
505
568
|
JSON.parse(json, symbolize_names: true)
|
@@ -507,6 +570,14 @@ module FinchAPI
|
|
507
570
|
raise e unless suppress_error
|
508
571
|
json
|
509
572
|
end
|
573
|
+
in %r{^application/(?:x-)?jsonl}
|
574
|
+
lines = decode_lines(stream)
|
575
|
+
chain_fused(lines) do |y|
|
576
|
+
lines.each { y << JSON.parse(_1, symbolize_names: true) }
|
577
|
+
end
|
578
|
+
in %r{^text/event-stream}
|
579
|
+
lines = decode_lines(stream)
|
580
|
+
decode_sse(lines)
|
510
581
|
in %r{^text/}
|
511
582
|
stream.to_a.join
|
512
583
|
else
|
@@ -517,22 +588,26 @@ module FinchAPI
|
|
517
588
|
end
|
518
589
|
|
519
590
|
class << self
|
520
|
-
# @private
|
591
|
+
# @api private
|
521
592
|
#
|
522
593
|
# https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
|
523
594
|
#
|
524
595
|
# @param enum [Enumerable]
|
596
|
+
# @param external [Boolean]
|
525
597
|
# @param close [Proc]
|
526
598
|
#
|
527
599
|
# @return [Enumerable]
|
528
|
-
|
529
|
-
def fused_enum(enum, &close)
|
600
|
+
def fused_enum(enum, external: false, &close)
|
530
601
|
fused = false
|
531
602
|
iter = Enumerator.new do |y|
|
532
603
|
next if fused
|
533
604
|
|
534
605
|
fused = true
|
535
|
-
|
606
|
+
if external
|
607
|
+
loop { y << enum.next }
|
608
|
+
else
|
609
|
+
enum.each(&y)
|
610
|
+
end
|
536
611
|
ensure
|
537
612
|
close&.call
|
538
613
|
close = nil
|
@@ -545,10 +620,9 @@ module FinchAPI
|
|
545
620
|
iter
|
546
621
|
end
|
547
622
|
|
548
|
-
# @private
|
623
|
+
# @api private
|
549
624
|
#
|
550
625
|
# @param enum [Enumerable, nil]
|
551
|
-
#
|
552
626
|
def close_fused!(enum)
|
553
627
|
return unless enum.is_a?(Enumerator)
|
554
628
|
|
@@ -557,11 +631,13 @@ module FinchAPI
|
|
557
631
|
# rubocop:enable Lint/UnreachableLoop
|
558
632
|
end
|
559
633
|
|
560
|
-
# @private
|
634
|
+
# @api private
|
561
635
|
#
|
562
636
|
# @param enum [Enumerable, nil]
|
563
637
|
# @param blk [Proc]
|
564
638
|
#
|
639
|
+
# @yieldparam [Enumerator::Yielder]
|
640
|
+
# @return [Enumerable]
|
565
641
|
def chain_fused(enum, &blk)
|
566
642
|
iter = Enumerator.new { blk.call(_1) }
|
567
643
|
fused_enum(iter) { close_fused!(enum) }
|
@@ -569,40 +645,55 @@ module FinchAPI
|
|
569
645
|
end
|
570
646
|
|
571
647
|
class << self
|
572
|
-
# @private
|
648
|
+
# @api private
|
573
649
|
#
|
574
650
|
# @param enum [Enumerable]
|
575
651
|
#
|
576
652
|
# @return [Enumerable]
|
577
|
-
|
578
|
-
|
653
|
+
def decode_lines(enum)
|
654
|
+
re = /(\r\n|\r|\n)/
|
655
|
+
buffer = String.new.b
|
656
|
+
cr_seen = nil
|
657
|
+
|
579
658
|
chain_fused(enum) do |y|
|
580
|
-
buffer = String.new
|
581
659
|
enum.each do |row|
|
660
|
+
offset = buffer.bytesize
|
582
661
|
buffer << row
|
583
|
-
while (
|
584
|
-
|
662
|
+
while (match = re.match(buffer, cr_seen&.to_i || offset))
|
663
|
+
case [match.captures.first, cr_seen]
|
664
|
+
in ["\r", nil]
|
665
|
+
cr_seen = match.end(1)
|
666
|
+
next
|
667
|
+
in ["\r" | "\r\n", Integer]
|
668
|
+
y << buffer.slice!(..(cr_seen.pred))
|
669
|
+
else
|
670
|
+
y << buffer.slice!(..(match.end(1).pred))
|
671
|
+
end
|
672
|
+
offset = 0
|
673
|
+
cr_seen = nil
|
585
674
|
end
|
586
675
|
end
|
676
|
+
|
677
|
+
y << buffer.slice!(..(cr_seen.pred)) unless cr_seen.nil?
|
587
678
|
y << buffer unless buffer.empty?
|
588
679
|
end
|
589
680
|
end
|
590
681
|
|
591
|
-
# @private
|
682
|
+
# @api private
|
592
683
|
#
|
593
684
|
# https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
|
594
685
|
#
|
595
686
|
# @param lines [Enumerable]
|
596
687
|
#
|
597
688
|
# @return [Hash{Symbol=>Object}]
|
598
|
-
|
599
|
-
|
689
|
+
def decode_sse(lines)
|
690
|
+
# rubocop:disable Metrics/BlockLength
|
600
691
|
chain_fused(lines) do |y|
|
601
692
|
blank = {event: nil, data: nil, id: nil, retry: nil}
|
602
693
|
current = {}
|
603
694
|
|
604
695
|
lines.each do |line|
|
605
|
-
case line.
|
696
|
+
case line.sub(/\R$/, "")
|
606
697
|
in ""
|
607
698
|
next if current.empty?
|
608
699
|
y << {**blank, **current}
|
@@ -610,12 +701,12 @@ module FinchAPI
|
|
610
701
|
in /^:/
|
611
702
|
next
|
612
703
|
in /^([^:]+):\s?(.*)$/
|
613
|
-
|
704
|
+
field, value = Regexp.last_match.captures
|
614
705
|
case field
|
615
706
|
in "event"
|
616
707
|
current.merge!(event: value)
|
617
708
|
in "data"
|
618
|
-
(current[:data] ||= String.new) << value << "\n"
|
709
|
+
(current[:data] ||= String.new.b) << (value << "\n")
|
619
710
|
in "id" unless value.include?("\0")
|
620
711
|
current.merge!(id: value)
|
621
712
|
in "retry" if /^\d+$/ =~ value
|
@@ -625,6 +716,7 @@ module FinchAPI
|
|
625
716
|
else
|
626
717
|
end
|
627
718
|
end
|
719
|
+
# rubocop:enable Metrics/BlockLength
|
628
720
|
|
629
721
|
y << {**blank, **current} unless current.empty?
|
630
722
|
end
|
data/lib/finch-api/version.rb
CHANGED