finch-api 0.1.0.pre.alpha.3 → 0.1.0.pre.alpha.5
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 +2 -8
- data/lib/finch-api/client.rb +1 -1
- data/lib/finch-api/individuals_page.rb +4 -4
- data/lib/finch-api/models/access_token_create_params.rb +1 -1
- data/lib/finch-api/models/account_disconnect_params.rb +1 -1
- data/lib/finch-api/models/account_introspect_params.rb +1 -1
- data/lib/finch-api/models/connect/session_new_params.rb +1 -1
- data/lib/finch-api/models/connect/session_reauthenticate_params.rb +1 -1
- data/lib/finch-api/models/hris/benefit_create_params.rb +1 -1
- data/lib/finch-api/models/hris/benefit_list_params.rb +1 -1
- data/lib/finch-api/models/hris/benefit_list_supported_benefits_params.rb +1 -1
- data/lib/finch-api/models/hris/benefit_retrieve_params.rb +1 -1
- data/lib/finch-api/models/hris/benefit_update_params.rb +1 -1
- data/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rb +1 -1
- data/lib/finch-api/models/hris/benefits/individual_enrolled_ids_params.rb +1 -1
- data/lib/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rb +1 -1
- data/lib/finch-api/models/hris/benefits/individual_unenroll_many_params.rb +1 -1
- data/lib/finch-api/models/hris/company_retrieve_params.rb +1 -1
- data/lib/finch-api/models/hris/directory_list_individuals_params.rb +1 -1
- data/lib/finch-api/models/hris/directory_list_params.rb +1 -1
- data/lib/finch-api/models/hris/document_list_params.rb +1 -1
- data/lib/finch-api/models/hris/document_retreive_params.rb +1 -1
- data/lib/finch-api/models/hris/employment_retrieve_many_params.rb +1 -1
- data/lib/finch-api/models/hris/individual_retrieve_many_params.rb +1 -1
- data/lib/finch-api/models/hris/pay_statement_retrieve_many_params.rb +1 -1
- data/lib/finch-api/models/hris/payment_list_params.rb +1 -1
- data/lib/finch-api/models/introspection.rb +12 -1
- data/lib/finch-api/models/jobs/automated_create_params.rb +1 -1
- data/lib/finch-api/models/jobs/automated_list_params.rb +1 -1
- data/lib/finch-api/models/jobs/automated_retrieve_params.rb +1 -1
- data/lib/finch-api/models/jobs/manual_retrieve_params.rb +1 -1
- data/lib/finch-api/models/payroll/pay_group_list_params.rb +1 -1
- data/lib/finch-api/models/payroll/pay_group_retrieve_params.rb +1 -1
- data/lib/finch-api/models/provider_list_params.rb +1 -1
- data/lib/finch-api/models/request_forwarding_forward_params.rb +1 -1
- data/lib/finch-api/models/sandbox/company_update_params.rb +1 -1
- data/lib/finch-api/models/sandbox/connection_create_params.rb +1 -1
- data/lib/finch-api/models/sandbox/connections/account_create_params.rb +1 -1
- data/lib/finch-api/models/sandbox/connections/account_update_params.rb +1 -1
- data/lib/finch-api/models/sandbox/directory_create_params.rb +1 -1
- data/lib/finch-api/models/sandbox/employment_update_params.rb +1 -1
- data/lib/finch-api/models/sandbox/individual_update_params.rb +1 -1
- data/lib/finch-api/models/sandbox/job_create_params.rb +1 -1
- data/lib/finch-api/models/sandbox/jobs/configuration_retrieve_params.rb +1 -1
- data/lib/finch-api/models/sandbox/jobs/configuration_update_params.rb +1 -1
- data/lib/finch-api/models/sandbox/payment_create_params.rb +1 -1
- data/lib/finch-api/page.rb +4 -4
- data/lib/finch-api/request_options.rb +0 -33
- data/lib/finch-api/responses_page.rb +3 -3
- data/lib/finch-api/single_page.rb +3 -3
- data/lib/finch-api/transport/base_client.rb +459 -0
- data/lib/finch-api/transport/pooled_net_requester.rb +182 -0
- data/lib/finch-api/type/array_of.rb +110 -0
- data/lib/finch-api/type/base_model.rb +355 -0
- data/lib/finch-api/type/base_page.rb +61 -0
- data/lib/finch-api/type/boolean_model.rb +52 -0
- data/lib/finch-api/type/converter.rb +211 -0
- data/lib/finch-api/type/enum.rb +105 -0
- data/lib/finch-api/type/hash_of.rb +136 -0
- data/lib/finch-api/type/request_parameters.rb +38 -0
- data/lib/finch-api/type/union.rb +204 -0
- data/lib/finch-api/type/unknown.rb +56 -0
- data/lib/finch-api/type.rb +23 -0
- data/lib/finch-api/util.rb +3 -5
- data/lib/finch-api/version.rb +1 -1
- data/lib/finch-api.rb +13 -5
- data/rbi/lib/finch-api/client.rbi +1 -1
- data/rbi/lib/finch-api/individuals_page.rbi +1 -1
- data/rbi/lib/finch-api/models/access_token_create_params.rbi +1 -1
- data/rbi/lib/finch-api/models/account_disconnect_params.rbi +1 -1
- data/rbi/lib/finch-api/models/account_introspect_params.rbi +1 -1
- data/rbi/lib/finch-api/models/connect/session_new_params.rbi +1 -1
- data/rbi/lib/finch-api/models/connect/session_reauthenticate_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefit_create_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefit_list_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefit_list_supported_benefits_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefit_retrieve_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefit_update_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/benefits/individual_unenroll_many_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/company_retrieve_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/directory_list_individuals_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/directory_list_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/document_list_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/document_retreive_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/employment_retrieve_many_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/individual_retrieve_many_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/pay_statement_retrieve_many_params.rbi +1 -1
- data/rbi/lib/finch-api/models/hris/payment_list_params.rbi +1 -1
- data/rbi/lib/finch-api/models/introspection.rbi +20 -3
- data/rbi/lib/finch-api/models/jobs/automated_create_params.rbi +1 -1
- data/rbi/lib/finch-api/models/jobs/automated_list_params.rbi +1 -1
- data/rbi/lib/finch-api/models/jobs/automated_retrieve_params.rbi +1 -1
- data/rbi/lib/finch-api/models/jobs/manual_retrieve_params.rbi +1 -1
- data/rbi/lib/finch-api/models/payroll/pay_group_list_params.rbi +1 -1
- data/rbi/lib/finch-api/models/payroll/pay_group_retrieve_params.rbi +1 -1
- data/rbi/lib/finch-api/models/provider_list_params.rbi +1 -1
- data/rbi/lib/finch-api/models/request_forwarding_forward_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/company_update_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/connection_create_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/connections/account_create_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/connections/account_update_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/directory_create_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/directory_create_response.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/employment_update_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/individual_update_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/job_create_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_response.rbi +4 -1
- data/rbi/lib/finch-api/models/sandbox/jobs/configuration_update_params.rbi +1 -1
- data/rbi/lib/finch-api/models/sandbox/payment_create_params.rbi +1 -1
- data/rbi/lib/finch-api/page.rbi +1 -1
- data/rbi/lib/finch-api/request_options.rbi +0 -15
- data/rbi/lib/finch-api/responses_page.rbi +1 -1
- data/rbi/lib/finch-api/single_page.rbi +1 -1
- data/rbi/lib/finch-api/transport/base_client.rbi +204 -0
- data/rbi/lib/finch-api/transport/pooled_net_requester.rbi +64 -0
- data/rbi/lib/finch-api/type/array_of.rbi +82 -0
- data/rbi/lib/finch-api/type/base_model.rbi +191 -0
- data/rbi/lib/finch-api/type/base_page.rbi +38 -0
- data/rbi/lib/finch-api/type/boolean_model.rbi +41 -0
- data/rbi/lib/finch-api/type/converter.rbi +101 -0
- data/rbi/lib/finch-api/type/enum.rbi +58 -0
- data/rbi/lib/finch-api/type/hash_of.rbi +86 -0
- data/rbi/lib/finch-api/type/request_parameters.rbi +20 -0
- data/rbi/lib/finch-api/type/union.rbi +66 -0
- data/rbi/lib/finch-api/type/unknown.rbi +37 -0
- data/rbi/lib/finch-api/type.rbi +23 -0
- data/rbi/lib/finch-api/version.rbi +1 -1
- data/sig/finch-api/client.rbs +1 -1
- data/sig/finch-api/individuals_page.rbs +1 -1
- data/sig/finch-api/models/access_token_create_params.rbs +1 -1
- data/sig/finch-api/models/account_disconnect_params.rbs +1 -1
- data/sig/finch-api/models/account_introspect_params.rbs +1 -1
- data/sig/finch-api/models/connect/session_new_params.rbs +1 -1
- data/sig/finch-api/models/connect/session_reauthenticate_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefit_create_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefit_list_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefit_list_supported_benefits_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefit_retrieve_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefit_update_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefits/individual_enroll_many_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbs +1 -1
- data/sig/finch-api/models/hris/benefits/individual_unenroll_many_params.rbs +1 -1
- data/sig/finch-api/models/hris/company_retrieve_params.rbs +1 -1
- data/sig/finch-api/models/hris/directory_list_individuals_params.rbs +1 -1
- data/sig/finch-api/models/hris/directory_list_params.rbs +1 -1
- data/sig/finch-api/models/hris/document_list_params.rbs +1 -1
- data/sig/finch-api/models/hris/document_retreive_params.rbs +1 -1
- data/sig/finch-api/models/hris/employment_retrieve_many_params.rbs +1 -1
- data/sig/finch-api/models/hris/individual_retrieve_many_params.rbs +1 -1
- data/sig/finch-api/models/hris/pay_statement_retrieve_many_params.rbs +1 -1
- data/sig/finch-api/models/hris/payment_list_params.rbs +1 -1
- data/sig/finch-api/models/introspection.rbs +10 -1
- data/sig/finch-api/models/jobs/automated_create_params.rbs +1 -1
- data/sig/finch-api/models/jobs/automated_list_params.rbs +1 -1
- data/sig/finch-api/models/jobs/automated_retrieve_params.rbs +1 -1
- data/sig/finch-api/models/jobs/manual_retrieve_params.rbs +1 -1
- data/sig/finch-api/models/payroll/pay_group_list_params.rbs +1 -1
- data/sig/finch-api/models/payroll/pay_group_retrieve_params.rbs +1 -1
- data/sig/finch-api/models/provider_list_params.rbs +1 -1
- data/sig/finch-api/models/request_forwarding_forward_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/company_update_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/connection_create_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/connections/account_create_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/connections/account_update_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/directory_create_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/employment_update_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/individual_update_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/job_create_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/jobs/configuration_update_params.rbs +1 -1
- data/sig/finch-api/models/sandbox/payment_create_params.rbs +1 -1
- data/sig/finch-api/page.rbs +1 -1
- data/sig/finch-api/request_options.rbs +0 -10
- data/sig/finch-api/responses_page.rbs +1 -1
- data/sig/finch-api/single_page.rbs +1 -1
- data/sig/finch-api/transport/base_client.rbs +110 -0
- data/sig/finch-api/transport/pooled_net_requester.rbs +39 -0
- data/sig/finch-api/type/array_of.rbs +36 -0
- data/sig/finch-api/type/base_model.rbs +73 -0
- data/sig/finch-api/type/base_page.rbs +22 -0
- data/sig/finch-api/type/boolean_model.rbs +18 -0
- data/sig/finch-api/type/converter.rbs +36 -0
- data/sig/finch-api/type/enum.rbs +22 -0
- data/sig/finch-api/type/hash_of.rbs +36 -0
- data/sig/finch-api/type/request_parameters.rbs +13 -0
- data/sig/finch-api/type/union.rbs +37 -0
- data/sig/finch-api/type/unknown.rbs +18 -0
- data/sig/finch-api/type.rbs +22 -0
- data/sig/finch-api/version.rbs +1 -1
- metadata +41 -17
- data/lib/finch-api/base_client.rb +0 -457
- data/lib/finch-api/base_model.rb +0 -1226
- data/lib/finch-api/base_page.rb +0 -59
- data/lib/finch-api/extern.rb +0 -7
- data/lib/finch-api/pooled_net_requester.rb +0 -180
- data/rbi/lib/finch-api/base_client.rbi +0 -196
- data/rbi/lib/finch-api/base_model.rbi +0 -643
- data/rbi/lib/finch-api/base_page.rbi +0 -36
- data/rbi/lib/finch-api/extern.rbi +0 -7
- data/rbi/lib/finch-api/pooled_net_requester.rbi +0 -59
- data/sig/finch-api/base_client.rbs +0 -106
- data/sig/finch-api/base_model.rbs +0 -260
- data/sig/finch-api/base_page.rbs +0 -20
- data/sig/finch-api/extern.rbs +0 -4
- data/sig/finch-api/pooled_net_requester.rbs +0 -37
@@ -4,7 +4,7 @@ module FinchAPI
|
|
4
4
|
module Models
|
5
5
|
module Sandbox
|
6
6
|
class PaymentCreateParams < FinchAPI::BaseModel
|
7
|
-
extend FinchAPI::RequestParameters::Converter
|
7
|
+
extend FinchAPI::Type::RequestParameters::Converter
|
8
8
|
include FinchAPI::RequestParameters
|
9
9
|
|
10
10
|
sig { returns(T.nilable(String)) }
|
data/rbi/lib/finch-api/page.rbi
CHANGED
@@ -1,21 +1,6 @@
|
|
1
1
|
# typed: strong
|
2
2
|
|
3
3
|
module FinchAPI
|
4
|
-
# @api private
|
5
|
-
module RequestParameters
|
6
|
-
# Options to specify HTTP behaviour for this request.
|
7
|
-
sig { returns(T.any(FinchAPI::RequestOptions, FinchAPI::Util::AnyHash)) }
|
8
|
-
attr_accessor :request_options
|
9
|
-
|
10
|
-
# @api private
|
11
|
-
module Converter
|
12
|
-
# @api private
|
13
|
-
sig { params(params: T.anything).returns([T.anything, FinchAPI::Util::AnyHash]) }
|
14
|
-
def dump_request(params)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
4
|
# Specify HTTP behaviour to use for a specific request. These options supplement
|
20
5
|
# or override those provided at the client level.
|
21
6
|
#
|
@@ -0,0 +1,204 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module FinchAPI
|
4
|
+
module Transport
|
5
|
+
# @api private
|
6
|
+
class BaseClient
|
7
|
+
abstract!
|
8
|
+
|
9
|
+
RequestComponentsShape =
|
10
|
+
T.type_alias do
|
11
|
+
{
|
12
|
+
method: Symbol,
|
13
|
+
path: T.any(String, T::Array[String]),
|
14
|
+
query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
|
15
|
+
headers: T.nilable(
|
16
|
+
T::Hash[String,
|
17
|
+
T.nilable(
|
18
|
+
T.any(
|
19
|
+
String,
|
20
|
+
Integer,
|
21
|
+
T::Array[T.nilable(T.any(String, Integer))]
|
22
|
+
)
|
23
|
+
)]
|
24
|
+
),
|
25
|
+
body: T.nilable(T.anything),
|
26
|
+
unwrap: T.nilable(Symbol),
|
27
|
+
page: T.nilable(T::Class[FinchAPI::Type::BasePage[FinchAPI::BaseModel]]),
|
28
|
+
stream: T.nilable(T::Class[T.anything]),
|
29
|
+
model: T.nilable(FinchAPI::Type::Converter::Input),
|
30
|
+
options: T.nilable(T.any(FinchAPI::RequestOptions, FinchAPI::Util::AnyHash))
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
RequestInputShape =
|
35
|
+
T.type_alias do
|
36
|
+
{
|
37
|
+
method: Symbol,
|
38
|
+
url: URI::Generic,
|
39
|
+
headers: T::Hash[String, String],
|
40
|
+
body: T.anything,
|
41
|
+
max_retries: Integer,
|
42
|
+
timeout: Float
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
# from whatwg fetch spec
|
47
|
+
MAX_REDIRECTS = 20
|
48
|
+
|
49
|
+
PLATFORM_HEADERS = T::Hash[String, String]
|
50
|
+
|
51
|
+
class << self
|
52
|
+
# @api private
|
53
|
+
sig { params(req: FinchAPI::Transport::BaseClient::RequestComponentsShape).void }
|
54
|
+
def validate!(req)
|
55
|
+
end
|
56
|
+
|
57
|
+
# @api private
|
58
|
+
sig do
|
59
|
+
params(
|
60
|
+
status: Integer,
|
61
|
+
headers: T.any(
|
62
|
+
T::Hash[String, String],
|
63
|
+
Net::HTTPHeader
|
64
|
+
)
|
65
|
+
).returns(T::Boolean)
|
66
|
+
end
|
67
|
+
def should_retry?(status, headers:)
|
68
|
+
end
|
69
|
+
|
70
|
+
# @api private
|
71
|
+
sig do
|
72
|
+
params(
|
73
|
+
request: FinchAPI::Transport::BaseClient::RequestInputShape,
|
74
|
+
status: Integer,
|
75
|
+
response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
|
76
|
+
)
|
77
|
+
.returns(FinchAPI::Transport::BaseClient::RequestInputShape)
|
78
|
+
end
|
79
|
+
def follow_redirect(request, status:, response_headers:)
|
80
|
+
end
|
81
|
+
|
82
|
+
# @api private
|
83
|
+
sig do
|
84
|
+
params(
|
85
|
+
status: T.any(Integer, FinchAPI::APIConnectionError),
|
86
|
+
stream: T.nilable(T::Enumerable[String])
|
87
|
+
).void
|
88
|
+
end
|
89
|
+
def reap_connection!(status, stream:)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# @api private
|
94
|
+
sig { returns(FinchAPI::Transport::PooledNetRequester) }
|
95
|
+
attr_accessor :requester
|
96
|
+
|
97
|
+
# @api private
|
98
|
+
sig do
|
99
|
+
params(
|
100
|
+
base_url: String,
|
101
|
+
timeout: Float,
|
102
|
+
max_retries: Integer,
|
103
|
+
initial_retry_delay: Float,
|
104
|
+
max_retry_delay: Float,
|
105
|
+
headers: T::Hash[String,
|
106
|
+
T.nilable(T.any(String, Integer, T::Array[T.nilable(T.any(String, Integer))]))],
|
107
|
+
idempotency_header: T.nilable(String)
|
108
|
+
)
|
109
|
+
.returns(T.attached_class)
|
110
|
+
end
|
111
|
+
def self.new(
|
112
|
+
base_url:,
|
113
|
+
timeout: 0.0,
|
114
|
+
max_retries: 0,
|
115
|
+
initial_retry_delay: 0.0,
|
116
|
+
max_retry_delay: 0.0,
|
117
|
+
headers: {},
|
118
|
+
idempotency_header: nil
|
119
|
+
)
|
120
|
+
end
|
121
|
+
|
122
|
+
# @api private
|
123
|
+
sig { overridable.returns(T::Hash[String, String]) }
|
124
|
+
private def auth_headers
|
125
|
+
end
|
126
|
+
|
127
|
+
# @api private
|
128
|
+
sig { returns(String) }
|
129
|
+
private def generate_idempotency_key
|
130
|
+
end
|
131
|
+
|
132
|
+
# @api private
|
133
|
+
sig do
|
134
|
+
overridable
|
135
|
+
.params(req: FinchAPI::Transport::BaseClient::RequestComponentsShape, opts: FinchAPI::Util::AnyHash)
|
136
|
+
.returns(FinchAPI::Transport::BaseClient::RequestInputShape)
|
137
|
+
end
|
138
|
+
private def build_request(req, opts)
|
139
|
+
end
|
140
|
+
|
141
|
+
# @api private
|
142
|
+
sig { params(headers: T::Hash[String, String], retry_count: Integer).returns(Float) }
|
143
|
+
private def retry_delay(headers, retry_count:)
|
144
|
+
end
|
145
|
+
|
146
|
+
# @api private
|
147
|
+
sig do
|
148
|
+
params(
|
149
|
+
request: FinchAPI::Transport::BaseClient::RequestInputShape,
|
150
|
+
redirect_count: Integer,
|
151
|
+
retry_count: Integer,
|
152
|
+
send_retry_header: T::Boolean
|
153
|
+
)
|
154
|
+
.returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
|
155
|
+
end
|
156
|
+
private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
|
157
|
+
end
|
158
|
+
|
159
|
+
# Execute the request specified by `req`. This is the method that all resource
|
160
|
+
# methods call into.
|
161
|
+
sig do
|
162
|
+
params(
|
163
|
+
method: Symbol,
|
164
|
+
path: T.any(String, T::Array[String]),
|
165
|
+
query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
|
166
|
+
headers: T.nilable(
|
167
|
+
T::Hash[String,
|
168
|
+
T.nilable(
|
169
|
+
T.any(
|
170
|
+
String,
|
171
|
+
Integer,
|
172
|
+
T::Array[T.nilable(T.any(String, Integer))]
|
173
|
+
)
|
174
|
+
)]
|
175
|
+
),
|
176
|
+
body: T.nilable(T.anything),
|
177
|
+
unwrap: T.nilable(Symbol),
|
178
|
+
page: T.nilable(T::Class[FinchAPI::Type::BasePage[FinchAPI::BaseModel]]),
|
179
|
+
stream: T.nilable(T::Class[T.anything]),
|
180
|
+
model: T.nilable(FinchAPI::Type::Converter::Input),
|
181
|
+
options: T.nilable(T.any(FinchAPI::RequestOptions, FinchAPI::Util::AnyHash))
|
182
|
+
)
|
183
|
+
.returns(T.anything)
|
184
|
+
end
|
185
|
+
def request(
|
186
|
+
method,
|
187
|
+
path,
|
188
|
+
query: {},
|
189
|
+
headers: {},
|
190
|
+
body: nil,
|
191
|
+
unwrap: nil,
|
192
|
+
page: nil,
|
193
|
+
stream: nil,
|
194
|
+
model: FinchAPI::Unknown,
|
195
|
+
options: {}
|
196
|
+
)
|
197
|
+
end
|
198
|
+
|
199
|
+
sig { returns(String) }
|
200
|
+
def inspect
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module FinchAPI
|
4
|
+
module Transport
|
5
|
+
# @api private
|
6
|
+
class PooledNetRequester
|
7
|
+
RequestShape =
|
8
|
+
T.type_alias do
|
9
|
+
{
|
10
|
+
method: Symbol,
|
11
|
+
url: URI::Generic,
|
12
|
+
headers: T::Hash[String, String],
|
13
|
+
body: T.anything,
|
14
|
+
deadline: Float
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
# from the golang stdlib
|
19
|
+
# https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
|
20
|
+
KEEP_ALIVE_TIMEOUT = 30
|
21
|
+
|
22
|
+
class << self
|
23
|
+
# @api private
|
24
|
+
sig { params(url: URI::Generic).returns(Net::HTTP) }
|
25
|
+
def connect(url)
|
26
|
+
end
|
27
|
+
|
28
|
+
# @api private
|
29
|
+
sig { params(conn: Net::HTTP, deadline: Float).void }
|
30
|
+
def calibrate_socket_timeout(conn, deadline)
|
31
|
+
end
|
32
|
+
|
33
|
+
# @api private
|
34
|
+
sig do
|
35
|
+
params(
|
36
|
+
request: FinchAPI::Transport::PooledNetRequester::RequestShape,
|
37
|
+
blk: T.proc.params(arg0: String).void
|
38
|
+
)
|
39
|
+
.returns(Net::HTTPGenericRequest)
|
40
|
+
end
|
41
|
+
def build_request(request, &blk)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# @api private
|
46
|
+
sig { params(url: URI::Generic, deadline: Float, blk: T.proc.params(arg0: Net::HTTP).void).void }
|
47
|
+
private def with_pool(url, deadline:, &blk)
|
48
|
+
end
|
49
|
+
|
50
|
+
# @api private
|
51
|
+
sig do
|
52
|
+
params(request: FinchAPI::Transport::PooledNetRequester::RequestShape)
|
53
|
+
.returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
|
54
|
+
end
|
55
|
+
def execute(request)
|
56
|
+
end
|
57
|
+
|
58
|
+
# @api private
|
59
|
+
sig { params(size: Integer).returns(T.attached_class) }
|
60
|
+
def self.new(size: Etc.nprocessors)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module FinchAPI
|
4
|
+
module Type
|
5
|
+
# @api private
|
6
|
+
#
|
7
|
+
# Array of items of a given type.
|
8
|
+
class ArrayOf
|
9
|
+
include FinchAPI::Type::Converter
|
10
|
+
|
11
|
+
abstract!
|
12
|
+
final!
|
13
|
+
|
14
|
+
Elem = type_member(:out)
|
15
|
+
|
16
|
+
sig(:final) do
|
17
|
+
params(
|
18
|
+
type_info: T.any(
|
19
|
+
FinchAPI::Util::AnyHash,
|
20
|
+
T.proc.returns(FinchAPI::Type::Converter::Input),
|
21
|
+
FinchAPI::Type::Converter::Input
|
22
|
+
),
|
23
|
+
spec: FinchAPI::Util::AnyHash
|
24
|
+
)
|
25
|
+
.returns(T.attached_class)
|
26
|
+
end
|
27
|
+
def self.[](type_info, spec = {})
|
28
|
+
end
|
29
|
+
|
30
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
31
|
+
def ===(other)
|
32
|
+
end
|
33
|
+
|
34
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
35
|
+
def ==(other)
|
36
|
+
end
|
37
|
+
|
38
|
+
# @api private
|
39
|
+
sig(:final) do
|
40
|
+
override
|
41
|
+
.params(value: T.any(T::Enumerable[Elem], T.anything), state: FinchAPI::Type::Converter::State)
|
42
|
+
.returns(T.any(T::Array[T.anything], T.anything))
|
43
|
+
end
|
44
|
+
def coerce(value, state:)
|
45
|
+
end
|
46
|
+
|
47
|
+
# @api private
|
48
|
+
sig(:final) do
|
49
|
+
override
|
50
|
+
.params(value: T.any(T::Enumerable[Elem], T.anything))
|
51
|
+
.returns(T.any(T::Array[T.anything], T.anything))
|
52
|
+
end
|
53
|
+
def dump(value)
|
54
|
+
end
|
55
|
+
|
56
|
+
# @api private
|
57
|
+
sig(:final) { returns(Elem) }
|
58
|
+
protected def item_type
|
59
|
+
end
|
60
|
+
|
61
|
+
# @api private
|
62
|
+
sig(:final) { returns(T::Boolean) }
|
63
|
+
protected def nilable?
|
64
|
+
end
|
65
|
+
|
66
|
+
# @api private
|
67
|
+
sig(:final) do
|
68
|
+
params(
|
69
|
+
type_info: T.any(
|
70
|
+
FinchAPI::Util::AnyHash,
|
71
|
+
T.proc.returns(FinchAPI::Type::Converter::Input),
|
72
|
+
FinchAPI::Type::Converter::Input
|
73
|
+
),
|
74
|
+
spec: FinchAPI::Util::AnyHash
|
75
|
+
)
|
76
|
+
.void
|
77
|
+
end
|
78
|
+
def initialize(type_info, spec = {})
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,191 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module FinchAPI
|
4
|
+
module Type
|
5
|
+
class BaseModel
|
6
|
+
extend FinchAPI::Type::Converter
|
7
|
+
|
8
|
+
abstract!
|
9
|
+
|
10
|
+
KnownFieldShape = T.type_alias { {mode: T.nilable(Symbol), required: T::Boolean, nilable: T::Boolean} }
|
11
|
+
|
12
|
+
class << self
|
13
|
+
# @api private
|
14
|
+
#
|
15
|
+
# Assumes superclass fields are totally defined before fields are accessed /
|
16
|
+
# defined on subclasses.
|
17
|
+
sig do
|
18
|
+
returns(
|
19
|
+
T::Hash[
|
20
|
+
Symbol,
|
21
|
+
T.all(
|
22
|
+
FinchAPI::BaseModel::KnownFieldShape,
|
23
|
+
{type_fn: T.proc.returns(FinchAPI::Type::Converter::Input)}
|
24
|
+
)
|
25
|
+
]
|
26
|
+
)
|
27
|
+
end
|
28
|
+
def known_fields
|
29
|
+
end
|
30
|
+
|
31
|
+
# @api private
|
32
|
+
sig do
|
33
|
+
returns(
|
34
|
+
T::Hash[Symbol,
|
35
|
+
T.all(FinchAPI::BaseModel::KnownFieldShape, {type: FinchAPI::Type::Converter::Input})]
|
36
|
+
)
|
37
|
+
end
|
38
|
+
def fields
|
39
|
+
end
|
40
|
+
|
41
|
+
# @api private
|
42
|
+
sig do
|
43
|
+
params(
|
44
|
+
name_sym: Symbol,
|
45
|
+
required: T::Boolean,
|
46
|
+
type_info: T.any(
|
47
|
+
{
|
48
|
+
const: T.nilable(T.any(NilClass, T::Boolean, Integer, Float, Symbol)),
|
49
|
+
enum: T.nilable(T.proc.returns(FinchAPI::Type::Converter::Input)),
|
50
|
+
union: T.nilable(T.proc.returns(FinchAPI::Type::Converter::Input)),
|
51
|
+
api_name: Symbol,
|
52
|
+
nil?: T::Boolean
|
53
|
+
},
|
54
|
+
T.proc.returns(FinchAPI::Type::Converter::Input),
|
55
|
+
FinchAPI::Type::Converter::Input
|
56
|
+
),
|
57
|
+
spec: FinchAPI::Util::AnyHash
|
58
|
+
)
|
59
|
+
.void
|
60
|
+
end
|
61
|
+
private def add_field(name_sym, required:, type_info:, spec:)
|
62
|
+
end
|
63
|
+
|
64
|
+
# @api private
|
65
|
+
sig do
|
66
|
+
params(
|
67
|
+
name_sym: Symbol,
|
68
|
+
type_info: T.any(
|
69
|
+
FinchAPI::Util::AnyHash,
|
70
|
+
T.proc.returns(FinchAPI::Type::Converter::Input),
|
71
|
+
FinchAPI::Type::Converter::Input
|
72
|
+
),
|
73
|
+
spec: FinchAPI::Util::AnyHash
|
74
|
+
)
|
75
|
+
.void
|
76
|
+
end
|
77
|
+
def required(name_sym, type_info, spec = {})
|
78
|
+
end
|
79
|
+
|
80
|
+
# @api private
|
81
|
+
sig do
|
82
|
+
params(
|
83
|
+
name_sym: Symbol,
|
84
|
+
type_info: T.any(
|
85
|
+
FinchAPI::Util::AnyHash,
|
86
|
+
T.proc.returns(FinchAPI::Type::Converter::Input),
|
87
|
+
FinchAPI::Type::Converter::Input
|
88
|
+
),
|
89
|
+
spec: FinchAPI::Util::AnyHash
|
90
|
+
)
|
91
|
+
.void
|
92
|
+
end
|
93
|
+
def optional(name_sym, type_info, spec = {})
|
94
|
+
end
|
95
|
+
|
96
|
+
# @api private
|
97
|
+
#
|
98
|
+
# `request_only` attributes not excluded from `.#coerce` when receiving responses
|
99
|
+
# even if well behaved servers should not send them
|
100
|
+
sig { params(blk: T.proc.void).void }
|
101
|
+
private def request_only(&blk)
|
102
|
+
end
|
103
|
+
|
104
|
+
# @api private
|
105
|
+
#
|
106
|
+
# `response_only` attributes are omitted from `.#dump` when making requests
|
107
|
+
sig { params(blk: T.proc.void).void }
|
108
|
+
private def response_only(&blk)
|
109
|
+
end
|
110
|
+
|
111
|
+
sig { params(other: T.anything).returns(T::Boolean) }
|
112
|
+
def ==(other)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
sig { params(other: T.anything).returns(T::Boolean) }
|
117
|
+
def ==(other)
|
118
|
+
end
|
119
|
+
|
120
|
+
class << self
|
121
|
+
# @api private
|
122
|
+
sig do
|
123
|
+
override
|
124
|
+
.params(
|
125
|
+
value: T.any(FinchAPI::BaseModel, T::Hash[T.anything, T.anything], T.anything),
|
126
|
+
state: FinchAPI::Type::Converter::State
|
127
|
+
)
|
128
|
+
.returns(T.any(T.attached_class, T.anything))
|
129
|
+
end
|
130
|
+
def coerce(value, state:)
|
131
|
+
end
|
132
|
+
|
133
|
+
# @api private
|
134
|
+
sig do
|
135
|
+
override
|
136
|
+
.params(value: T.any(T.attached_class, T.anything))
|
137
|
+
.returns(T.any(T::Hash[T.anything, T.anything], T.anything))
|
138
|
+
end
|
139
|
+
def dump(value)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
# Returns the raw value associated with the given key, if found. Otherwise, nil is
|
144
|
+
# returned.
|
145
|
+
#
|
146
|
+
# It is valid to lookup keys that are not in the API spec, for example to access
|
147
|
+
# undocumented features. This method does not parse response data into
|
148
|
+
# higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
|
149
|
+
sig { params(key: Symbol).returns(T.nilable(T.anything)) }
|
150
|
+
def [](key)
|
151
|
+
end
|
152
|
+
|
153
|
+
# Returns a Hash of the data underlying this object. O(1)
|
154
|
+
#
|
155
|
+
# Keys are Symbols and values are the raw values from the response. The return
|
156
|
+
# value indicates which values were ever set on the object. i.e. there will be a
|
157
|
+
# key in this hash if they ever were, even if the set value was nil.
|
158
|
+
#
|
159
|
+
# This method is not recursive. The returned value is shared by the object, so it
|
160
|
+
# should not be mutated.
|
161
|
+
sig { overridable.returns(FinchAPI::Util::AnyHash) }
|
162
|
+
def to_h
|
163
|
+
end
|
164
|
+
|
165
|
+
# Returns a Hash of the data underlying this object. O(1)
|
166
|
+
#
|
167
|
+
# Keys are Symbols and values are the raw values from the response. The return
|
168
|
+
# value indicates which values were ever set on the object. i.e. there will be a
|
169
|
+
# key in this hash if they ever were, even if the set value was nil.
|
170
|
+
#
|
171
|
+
# This method is not recursive. The returned value is shared by the object, so it
|
172
|
+
# should not be mutated.
|
173
|
+
sig { overridable.returns(FinchAPI::Util::AnyHash) }
|
174
|
+
def to_hash
|
175
|
+
end
|
176
|
+
|
177
|
+
sig { params(keys: T.nilable(T::Array[Symbol])).returns(FinchAPI::Util::AnyHash) }
|
178
|
+
def deconstruct_keys(keys)
|
179
|
+
end
|
180
|
+
|
181
|
+
# Create a new instance of a model.
|
182
|
+
sig { params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(T.attached_class) }
|
183
|
+
def self.new(data = {})
|
184
|
+
end
|
185
|
+
|
186
|
+
sig { returns(String) }
|
187
|
+
def inspect
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module FinchAPI
|
4
|
+
module Type
|
5
|
+
module BasePage
|
6
|
+
Elem = type_member(:out)
|
7
|
+
|
8
|
+
sig { overridable.returns(T::Boolean) }
|
9
|
+
def next_page?
|
10
|
+
end
|
11
|
+
|
12
|
+
sig { overridable.returns(T.self_type) }
|
13
|
+
def next_page
|
14
|
+
end
|
15
|
+
|
16
|
+
sig { overridable.params(blk: T.proc.params(arg0: Elem).void).void }
|
17
|
+
def auto_paging_each(&blk)
|
18
|
+
end
|
19
|
+
|
20
|
+
sig { returns(T::Enumerable[Elem]) }
|
21
|
+
def to_enum
|
22
|
+
end
|
23
|
+
|
24
|
+
# @api private
|
25
|
+
sig do
|
26
|
+
params(
|
27
|
+
client: FinchAPI::Transport::BaseClient,
|
28
|
+
req: FinchAPI::Transport::BaseClient::RequestComponentsShape,
|
29
|
+
headers: T.any(T::Hash[String, String], Net::HTTPHeader),
|
30
|
+
page_data: T.anything
|
31
|
+
)
|
32
|
+
.void
|
33
|
+
end
|
34
|
+
def initialize(client:, req:, headers:, page_data:)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module FinchAPI
|
4
|
+
module Type
|
5
|
+
# @api private
|
6
|
+
#
|
7
|
+
# Ruby has no Boolean class; this is something for models to refer to.
|
8
|
+
class BooleanModel
|
9
|
+
extend FinchAPI::Type::Converter
|
10
|
+
|
11
|
+
abstract!
|
12
|
+
final!
|
13
|
+
|
14
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
15
|
+
def self.===(other)
|
16
|
+
end
|
17
|
+
|
18
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
19
|
+
def self.==(other)
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
# @api private
|
24
|
+
sig(:final) do
|
25
|
+
override
|
26
|
+
.params(value: T.any(T::Boolean, T.anything), state: FinchAPI::Type::Converter::State)
|
27
|
+
.returns(T.any(T::Boolean, T.anything))
|
28
|
+
end
|
29
|
+
def coerce(value, state:)
|
30
|
+
end
|
31
|
+
|
32
|
+
# @api private
|
33
|
+
sig(:final) do
|
34
|
+
override.params(value: T.any(T::Boolean, T.anything)).returns(T.any(T::Boolean, T.anything))
|
35
|
+
end
|
36
|
+
def dump(value)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|