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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0370233596fffe27112b67ca1690b835ad255607fa5cbe9916e93e6e2b866102'
|
4
|
+
data.tar.gz: abd43b5d6d449169a59044c49cd32a405953da7320c1028d8cc40b39f66c16f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dad341274fdce9f06659285a16f30fbda6152928fcb9479323364a7f10b43ef53d1f9a0180c1e022d8c240dae07c3dda0eb4578483fdb8a4eaa169994a6b8cf
|
7
|
+
data.tar.gz: bde034ab00e4331713dc8f60048df9e58fa90e7eb97b784902b0e765bbf5331daf46ca880f459ce640838f1f09f6ac4bff3025571b17f237573c846be94c710e
|
data/README.md
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
# Finch Ruby API library
|
2
2
|
|
3
|
-
The Finch Ruby library provides convenient access to the Finch REST API from any Ruby 3.0.0+
|
4
|
-
application.
|
3
|
+
The Finch Ruby library provides convenient access to the Finch REST API from any Ruby 3.0.0+ application.
|
5
4
|
|
6
5
|
It is generated with [Stainless](https://www.stainless.com/).
|
7
6
|
|
8
7
|
## Documentation
|
9
8
|
|
10
|
-
Documentation for
|
9
|
+
Documentation for released of this gem can be found [on RubyDoc](https://gemdocs.org/gems/finch-api).
|
11
10
|
|
12
11
|
The underlying REST API documentation can be found on [developer.tryfinch.com](https://developer.tryfinch.com/).
|
13
12
|
|
14
13
|
## Installation
|
15
14
|
|
16
|
-
To use this gem during the beta, install directly from GitHub with Bundler by
|
17
|
-
adding the following to your application's `Gemfile`:
|
15
|
+
To use this gem during the beta, install directly from GitHub with Bundler by adding the following to your application's `Gemfile`:
|
18
16
|
|
19
17
|
```ruby
|
20
18
|
gem "finch-api", git: "https://github.com/Finch-API/finch-api-ruby", branch: "main"
|
@@ -26,8 +24,7 @@ To fetch an initial copy of the gem:
|
|
26
24
|
bundle install
|
27
25
|
```
|
28
26
|
|
29
|
-
To update the version used by your application when updates are pushed to
|
30
|
-
GitHub:
|
27
|
+
To update the version used by your application when updates are pushed to GitHub:
|
31
28
|
|
32
29
|
```sh
|
33
30
|
bundle update finch-api
|
@@ -46,11 +43,28 @@ page = finch.hris.directory.list
|
|
46
43
|
puts(page.id)
|
47
44
|
```
|
48
45
|
|
46
|
+
### Pagination
|
47
|
+
|
48
|
+
List methods in the Finch API are paginated.
|
49
|
+
|
50
|
+
This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
page = finch.hris.directory.list
|
54
|
+
|
55
|
+
# Fetch single item from page.
|
56
|
+
directory = page.individuals[0]
|
57
|
+
puts(directory.id)
|
58
|
+
|
59
|
+
# Automatically fetches more pages as needed.
|
60
|
+
page.auto_paging_each do |directory|
|
61
|
+
puts(directory.id)
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
49
65
|
### Errors
|
50
66
|
|
51
|
-
When the library is unable to connect to the API, or if the API returns a
|
52
|
-
non-success status code (i.e., 4xx or 5xx response), a subclass of
|
53
|
-
`FinchAPI::Error` will be thrown:
|
67
|
+
When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of `FinchAPI::Error` will be thrown:
|
54
68
|
|
55
69
|
```ruby
|
56
70
|
begin
|
@@ -78,10 +92,9 @@ Error codes are as followed:
|
|
78
92
|
|
79
93
|
### Retries
|
80
94
|
|
81
|
-
Certain errors will be automatically retried 2 times by default, with a short
|
82
|
-
|
83
|
-
connectivity problem), 408 Request Timeout, 409 Conflict, 429 Rate Limit, >=500 Internal errors,
|
84
|
-
and timeouts will all be retried by default.
|
95
|
+
Certain errors will be automatically retried 2 times by default, with a short exponential backoff.
|
96
|
+
|
97
|
+
Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict, 429 Rate Limit, >=500 Internal errors, and timeouts will all be retried by default.
|
85
98
|
|
86
99
|
You can use the `max_retries` option to configure or disable this:
|
87
100
|
|
@@ -98,8 +111,8 @@ finch.hris.directory.list(request_options: {max_retries: 5})
|
|
98
111
|
### Timeouts
|
99
112
|
|
100
113
|
By default, requests will time out after 60 seconds.
|
101
|
-
|
102
|
-
so in some cases a request could wait 2\*timeout seconds before it fails.
|
114
|
+
|
115
|
+
Timeouts are applied separately to the initial connection and the overall request time, so in some cases a request could wait 2\*timeout seconds before it fails.
|
103
116
|
|
104
117
|
You can use the `timeout` option to configure or disable this:
|
105
118
|
|
@@ -113,12 +126,42 @@ finch = FinchAPI::Client.new(
|
|
113
126
|
finch.hris.directory.list(request_options: {timeout: 5})
|
114
127
|
```
|
115
128
|
|
129
|
+
## Sorbet Support
|
130
|
+
|
131
|
+
**This library emits an intentional warning under the [`tapioca` toolchain](https://github.com/Shopify/tapioca)**. This is normal, and does not impact functionality.
|
132
|
+
|
133
|
+
This library is written with [Sorbet type definitions](https://sorbet.org/docs/rbi). However, there is no runtime dependency on the `sorbet-runtime`.
|
134
|
+
|
135
|
+
What this means is that while you can use Sorbet to type check your code statically, and benefit from the [Sorbet Language Server](https://sorbet.org/docs/lsp) in your editor, there is no runtime type checking and execution overhead from Sorbet itself.
|
136
|
+
|
137
|
+
Due to limitations with the Sorbet type system, where a method otherwise can take an instance of `FinchAPI::BaseModel` class, you will need to use the `**` splat operator to pass the arguments:
|
138
|
+
|
139
|
+
Please follow Sorbet's [setup guides](https://sorbet.org/docs/adopting) for best experience.
|
140
|
+
|
141
|
+
```ruby
|
142
|
+
model = DirectoryListParams.new
|
143
|
+
|
144
|
+
finch.hris.directory.list(**model)
|
145
|
+
```
|
146
|
+
|
147
|
+
## Advanced
|
148
|
+
|
149
|
+
### Concurrency & Connection Pooling
|
150
|
+
|
151
|
+
The `FinchAPI::Client` instances are thread-safe, and should be re-used across multiple threads. By default, each `Client` have their own HTTP connection pool, with a maximum number of connections equal to thread count.
|
152
|
+
|
153
|
+
When the maximum number of connections has been checked out from the connection pool, the `Client` will wait for an in use connection to become available. The queue time for this mechanism is accounted for by the per-request timeout.
|
154
|
+
|
155
|
+
Unless otherwise specified, other classes in the SDK do not have locks protecting their underlying data structure.
|
156
|
+
|
157
|
+
Currently, `FinchAPI::Client` instances are only fork-safe if there are no in-flight HTTP requests.
|
158
|
+
|
116
159
|
## Versioning
|
117
160
|
|
118
|
-
This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the
|
119
|
-
|
120
|
-
|
161
|
+
This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the library is in initial development and has a major version of `0`, APIs may change at any time.
|
162
|
+
|
163
|
+
This package considers improvements to the (non-runtime) `*.rbi` and `*.rbs` type definitions to be non-breaking changes.
|
121
164
|
|
122
165
|
## Requirements
|
123
166
|
|
124
|
-
Ruby 3.0 or higher.
|
167
|
+
Ruby 3.0.0 or higher.
|
@@ -1,32 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module FinchAPI
|
4
|
-
# @private
|
4
|
+
# @api private
|
5
5
|
#
|
6
6
|
# @abstract
|
7
|
-
#
|
8
7
|
class BaseClient
|
9
8
|
# from whatwg fetch spec
|
10
9
|
MAX_REDIRECTS = 20
|
11
10
|
|
12
11
|
# rubocop:disable Style/MutableConstant
|
13
|
-
PLATFORM_HEADERS =
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
PLATFORM_HEADERS =
|
13
|
+
{
|
14
|
+
"x-stainless-arch" => FinchAPI::Util.arch,
|
15
|
+
"x-stainless-lang" => "ruby",
|
16
|
+
"x-stainless-os" => FinchAPI::Util.os,
|
17
|
+
"x-stainless-package-version" => FinchAPI::VERSION,
|
18
|
+
"x-stainless-runtime" => ::RUBY_ENGINE,
|
19
|
+
"x-stainless-runtime-version" => ::RUBY_ENGINE_VERSION
|
20
|
+
}
|
21
21
|
# rubocop:enable Style/MutableConstant
|
22
22
|
|
23
23
|
class << self
|
24
|
-
# @private
|
24
|
+
# @api private
|
25
25
|
#
|
26
26
|
# @param req [Hash{Symbol=>Object}]
|
27
27
|
#
|
28
28
|
# @raise [ArgumentError]
|
29
|
-
#
|
30
29
|
def validate!(req)
|
31
30
|
keys = [:method, :path, :query, :headers, :body, :unwrap, :page, :stream, :model, :options]
|
32
31
|
case req
|
@@ -41,13 +40,12 @@ module FinchAPI
|
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
44
|
-
# @private
|
43
|
+
# @api private
|
45
44
|
#
|
46
45
|
# @param status [Integer]
|
47
46
|
# @param headers [Hash{String=>String}, Net::HTTPHeader]
|
48
47
|
#
|
49
48
|
# @return [Boolean]
|
50
|
-
#
|
51
49
|
def should_retry?(status, headers:)
|
52
50
|
coerced = FinchAPI::Util.coerce_boolean(headers["x-should-retry"])
|
53
51
|
case [coerced, status]
|
@@ -65,7 +63,7 @@ module FinchAPI
|
|
65
63
|
end
|
66
64
|
end
|
67
65
|
|
68
|
-
# @private
|
66
|
+
# @api private
|
69
67
|
#
|
70
68
|
# @param request [Hash{Symbol=>Object}] .
|
71
69
|
#
|
@@ -86,7 +84,6 @@ module FinchAPI
|
|
86
84
|
# @param response_headers [Hash{String=>String}, Net::HTTPHeader]
|
87
85
|
#
|
88
86
|
# @return [Hash{Symbol=>Object}]
|
89
|
-
#
|
90
87
|
def follow_redirect(request, status:, response_headers:)
|
91
88
|
method, url, headers = request.fetch_values(:method, :url, :headers)
|
92
89
|
location =
|
@@ -128,14 +125,27 @@ module FinchAPI
|
|
128
125
|
|
129
126
|
request
|
130
127
|
end
|
128
|
+
|
129
|
+
# @api private
|
130
|
+
#
|
131
|
+
# @param status [Integer, FinchAPI::APIConnectionError]
|
132
|
+
# @param stream [Enumerable, nil]
|
133
|
+
def reap_connection!(status, stream:)
|
134
|
+
case status
|
135
|
+
in (..199) | (300..499)
|
136
|
+
stream&.each { next }
|
137
|
+
in FinchAPI::APIConnectionError | (500..)
|
138
|
+
FinchAPI::Util.close_fused!(stream)
|
139
|
+
else
|
140
|
+
end
|
141
|
+
end
|
131
142
|
end
|
132
143
|
|
133
|
-
# @private
|
134
|
-
#
|
144
|
+
# @api private
|
135
145
|
# @return [FinchAPI::PooledNetRequester]
|
136
146
|
attr_accessor :requester
|
137
147
|
|
138
|
-
# @private
|
148
|
+
# @api private
|
139
149
|
#
|
140
150
|
# @param base_url [String]
|
141
151
|
# @param timeout [Float]
|
@@ -144,7 +154,6 @@ module FinchAPI
|
|
144
154
|
# @param max_retry_delay [Float]
|
145
155
|
# @param headers [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}]
|
146
156
|
# @param idempotency_header [String, nil]
|
147
|
-
#
|
148
157
|
def initialize(
|
149
158
|
base_url:,
|
150
159
|
timeout: 0.0,
|
@@ -171,19 +180,17 @@ module FinchAPI
|
|
171
180
|
@max_retry_delay = max_retry_delay
|
172
181
|
end
|
173
182
|
|
174
|
-
# @private
|
183
|
+
# @api private
|
175
184
|
#
|
176
185
|
# @return [Hash{String=>String}]
|
177
|
-
#
|
178
186
|
private def auth_headers = {}
|
179
187
|
|
180
|
-
# @private
|
188
|
+
# @api private
|
181
189
|
#
|
182
190
|
# @return [String]
|
183
|
-
#
|
184
191
|
private def generate_idempotency_key = "stainless-ruby-retry-#{SecureRandom.uuid}"
|
185
192
|
|
186
|
-
# @private
|
193
|
+
# @api private
|
187
194
|
#
|
188
195
|
# @param req [Hash{Symbol=>Object}] .
|
189
196
|
#
|
@@ -213,14 +220,13 @@ module FinchAPI
|
|
213
220
|
#
|
214
221
|
# @option opts [Hash{String=>String, nil}, nil] :extra_headers
|
215
222
|
#
|
216
|
-
# @option opts [
|
223
|
+
# @option opts [Object, nil] :extra_body
|
217
224
|
#
|
218
225
|
# @option opts [Integer, nil] :max_retries
|
219
226
|
#
|
220
227
|
# @option opts [Float, nil] :timeout
|
221
228
|
#
|
222
229
|
# @return [Hash{Symbol=>Object}]
|
223
|
-
#
|
224
230
|
private def build_request(req, opts)
|
225
231
|
method, uninterpolated_path = req.fetch_values(:method, :path)
|
226
232
|
|
@@ -246,8 +252,8 @@ module FinchAPI
|
|
246
252
|
end
|
247
253
|
|
248
254
|
timeout = opts.fetch(:timeout, @timeout).to_f.clamp((0..))
|
249
|
-
unless headers.key?("x-stainless-
|
250
|
-
headers["x-stainless-
|
255
|
+
unless headers.key?("x-stainless-timeout") || timeout.zero?
|
256
|
+
headers["x-stainless-timeout"] = timeout.to_s
|
251
257
|
end
|
252
258
|
|
253
259
|
headers.reject! { |_, v| v.to_s.empty? }
|
@@ -271,13 +277,12 @@ module FinchAPI
|
|
271
277
|
}
|
272
278
|
end
|
273
279
|
|
274
|
-
# @private
|
280
|
+
# @api private
|
275
281
|
#
|
276
282
|
# @param headers [Hash{String=>String}]
|
277
283
|
# @param retry_count [Integer]
|
278
284
|
#
|
279
285
|
# @return [Float]
|
280
|
-
#
|
281
286
|
private def retry_delay(headers, retry_count:)
|
282
287
|
# Non-standard extension
|
283
288
|
span = Float(headers["retry-after-ms"], exception: false)&.then { _1 / 1000 }
|
@@ -298,7 +303,7 @@ module FinchAPI
|
|
298
303
|
(@initial_retry_delay * scale * jitter).clamp(0, @max_retry_delay)
|
299
304
|
end
|
300
305
|
|
301
|
-
# @private
|
306
|
+
# @api private
|
302
307
|
#
|
303
308
|
# @param request [Hash{Symbol=>Object}] .
|
304
309
|
#
|
@@ -322,7 +327,6 @@ module FinchAPI
|
|
322
327
|
#
|
323
328
|
# @raise [FinchAPI::APIError]
|
324
329
|
# @return [Array(Integer, Net::HTTPResponse, Enumerable)]
|
325
|
-
#
|
326
330
|
private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
|
327
331
|
url, headers, max_retries, timeout = request.fetch_values(:url, :headers, :max_retries, :timeout)
|
328
332
|
input = {**request.except(:timeout), deadline: FinchAPI::Util.monotonic_secs + timeout}
|
@@ -332,28 +336,23 @@ module FinchAPI
|
|
332
336
|
end
|
333
337
|
|
334
338
|
begin
|
335
|
-
response, stream = @requester.execute(input)
|
336
|
-
status = Integer(response.code)
|
339
|
+
status, response, stream = @requester.execute(input)
|
337
340
|
rescue FinchAPI::APIConnectionError => e
|
338
341
|
status = e
|
339
342
|
end
|
340
343
|
|
341
|
-
# normally we want to drain the response body and reuse the HTTP session by clearing the socket buffers
|
342
|
-
# unless we hit a server error
|
343
|
-
srv_fault = (500...).include?(status)
|
344
|
-
|
345
344
|
case status
|
346
345
|
in ..299
|
347
346
|
[status, response, stream]
|
348
347
|
in 300..399 if redirect_count >= self.class::MAX_REDIRECTS
|
349
|
-
|
348
|
+
self.class.reap_connection!(status, stream: stream)
|
350
349
|
|
351
|
-
|
350
|
+
message = "Failed to complete the request within #{self.class::MAX_REDIRECTS} redirects."
|
352
351
|
raise FinchAPI::APIConnectionError.new(url: url, message: message)
|
353
352
|
in 300..399
|
354
|
-
|
353
|
+
self.class.reap_connection!(status, stream: stream)
|
355
354
|
|
356
|
-
|
355
|
+
request = self.class.follow_redirect(request, status: status, response_headers: response)
|
357
356
|
send_request(
|
358
357
|
request,
|
359
358
|
redirect_count: redirect_count + 1,
|
@@ -363,12 +362,10 @@ module FinchAPI
|
|
363
362
|
in FinchAPI::APIConnectionError if retry_count >= max_retries
|
364
363
|
raise status
|
365
364
|
in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers: response)
|
366
|
-
decoded =
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
else
|
371
|
-
stream.each { next }
|
365
|
+
decoded = Kernel.then do
|
366
|
+
FinchAPI::Util.decode_content(response, stream: stream, suppress_error: true)
|
367
|
+
ensure
|
368
|
+
self.class.reap_connection!(status, stream: stream)
|
372
369
|
end
|
373
370
|
|
374
371
|
raise FinchAPI::APIStatusError.for(
|
@@ -379,13 +376,9 @@ module FinchAPI
|
|
379
376
|
response: response
|
380
377
|
)
|
381
378
|
in (400..) | FinchAPI::APIConnectionError
|
382
|
-
|
379
|
+
self.class.reap_connection!(status, stream: stream)
|
383
380
|
|
384
|
-
|
385
|
-
FinchAPI::Util.close_fused!(stream)
|
386
|
-
else
|
387
|
-
stream&.each { next }
|
388
|
-
end
|
381
|
+
delay = retry_delay(response, retry_count: retry_count)
|
389
382
|
sleep(delay)
|
390
383
|
|
391
384
|
send_request(
|
@@ -424,7 +417,6 @@ module FinchAPI
|
|
424
417
|
#
|
425
418
|
# @raise [FinchAPI::APIError]
|
426
419
|
# @return [Object]
|
427
|
-
#
|
428
420
|
def request(req)
|
429
421
|
self.class.validate!(req)
|
430
422
|
model = req.fetch(:model) { FinchAPI::Unknown }
|
@@ -445,9 +437,9 @@ module FinchAPI
|
|
445
437
|
decoded = FinchAPI::Util.decode_content(response, stream: stream)
|
446
438
|
case req
|
447
439
|
in { stream: Class => st }
|
448
|
-
st.new(model: model, url: url, status: status, response: response,
|
440
|
+
st.new(model: model, url: url, status: status, response: response, stream: decoded)
|
449
441
|
in { page: Class => page }
|
450
|
-
page.new(client: self, req: req, headers: response,
|
442
|
+
page.new(client: self, req: req, headers: response, page_data: decoded)
|
451
443
|
else
|
452
444
|
unwrapped = FinchAPI::Util.dig(decoded, req[:unwrap])
|
453
445
|
FinchAPI::Converter.coerce(model, unwrapped)
|
@@ -455,10 +447,11 @@ module FinchAPI
|
|
455
447
|
end
|
456
448
|
|
457
449
|
# @return [String]
|
458
|
-
#
|
459
450
|
def inspect
|
451
|
+
# rubocop:disable Layout/LineLength
|
460
452
|
base_url = FinchAPI::Util.unparse_uri(@base_url)
|
461
453
|
"#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
|
454
|
+
# rubocop:enable Layout/LineLength
|
462
455
|
end
|
463
456
|
end
|
464
457
|
end
|