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.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/lib/finch-api/client.rb +1 -1
  4. data/lib/finch-api/individuals_page.rb +4 -4
  5. data/lib/finch-api/models/access_token_create_params.rb +1 -1
  6. data/lib/finch-api/models/account_disconnect_params.rb +1 -1
  7. data/lib/finch-api/models/account_introspect_params.rb +1 -1
  8. data/lib/finch-api/models/connect/session_new_params.rb +1 -1
  9. data/lib/finch-api/models/connect/session_reauthenticate_params.rb +1 -1
  10. data/lib/finch-api/models/hris/benefit_create_params.rb +1 -1
  11. data/lib/finch-api/models/hris/benefit_list_params.rb +1 -1
  12. data/lib/finch-api/models/hris/benefit_list_supported_benefits_params.rb +1 -1
  13. data/lib/finch-api/models/hris/benefit_retrieve_params.rb +1 -1
  14. data/lib/finch-api/models/hris/benefit_update_params.rb +1 -1
  15. data/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rb +1 -1
  16. data/lib/finch-api/models/hris/benefits/individual_enrolled_ids_params.rb +1 -1
  17. data/lib/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rb +1 -1
  18. data/lib/finch-api/models/hris/benefits/individual_unenroll_many_params.rb +1 -1
  19. data/lib/finch-api/models/hris/company_retrieve_params.rb +1 -1
  20. data/lib/finch-api/models/hris/directory_list_individuals_params.rb +1 -1
  21. data/lib/finch-api/models/hris/directory_list_params.rb +1 -1
  22. data/lib/finch-api/models/hris/document_list_params.rb +1 -1
  23. data/lib/finch-api/models/hris/document_retreive_params.rb +1 -1
  24. data/lib/finch-api/models/hris/employment_retrieve_many_params.rb +1 -1
  25. data/lib/finch-api/models/hris/individual_retrieve_many_params.rb +1 -1
  26. data/lib/finch-api/models/hris/pay_statement_retrieve_many_params.rb +1 -1
  27. data/lib/finch-api/models/hris/payment_list_params.rb +1 -1
  28. data/lib/finch-api/models/introspection.rb +12 -1
  29. data/lib/finch-api/models/jobs/automated_create_params.rb +1 -1
  30. data/lib/finch-api/models/jobs/automated_list_params.rb +1 -1
  31. data/lib/finch-api/models/jobs/automated_retrieve_params.rb +1 -1
  32. data/lib/finch-api/models/jobs/manual_retrieve_params.rb +1 -1
  33. data/lib/finch-api/models/payroll/pay_group_list_params.rb +1 -1
  34. data/lib/finch-api/models/payroll/pay_group_retrieve_params.rb +1 -1
  35. data/lib/finch-api/models/provider_list_params.rb +1 -1
  36. data/lib/finch-api/models/request_forwarding_forward_params.rb +1 -1
  37. data/lib/finch-api/models/sandbox/company_update_params.rb +1 -1
  38. data/lib/finch-api/models/sandbox/connection_create_params.rb +1 -1
  39. data/lib/finch-api/models/sandbox/connections/account_create_params.rb +1 -1
  40. data/lib/finch-api/models/sandbox/connections/account_update_params.rb +1 -1
  41. data/lib/finch-api/models/sandbox/directory_create_params.rb +1 -1
  42. data/lib/finch-api/models/sandbox/employment_update_params.rb +1 -1
  43. data/lib/finch-api/models/sandbox/individual_update_params.rb +1 -1
  44. data/lib/finch-api/models/sandbox/job_create_params.rb +1 -1
  45. data/lib/finch-api/models/sandbox/jobs/configuration_retrieve_params.rb +1 -1
  46. data/lib/finch-api/models/sandbox/jobs/configuration_update_params.rb +1 -1
  47. data/lib/finch-api/models/sandbox/payment_create_params.rb +1 -1
  48. data/lib/finch-api/page.rb +4 -4
  49. data/lib/finch-api/request_options.rb +0 -33
  50. data/lib/finch-api/responses_page.rb +3 -3
  51. data/lib/finch-api/single_page.rb +3 -3
  52. data/lib/finch-api/transport/base_client.rb +459 -0
  53. data/lib/finch-api/transport/pooled_net_requester.rb +182 -0
  54. data/lib/finch-api/type/array_of.rb +110 -0
  55. data/lib/finch-api/type/base_model.rb +355 -0
  56. data/lib/finch-api/type/base_page.rb +61 -0
  57. data/lib/finch-api/type/boolean_model.rb +52 -0
  58. data/lib/finch-api/type/converter.rb +211 -0
  59. data/lib/finch-api/type/enum.rb +105 -0
  60. data/lib/finch-api/type/hash_of.rb +136 -0
  61. data/lib/finch-api/type/request_parameters.rb +38 -0
  62. data/lib/finch-api/type/union.rb +204 -0
  63. data/lib/finch-api/type/unknown.rb +56 -0
  64. data/lib/finch-api/type.rb +23 -0
  65. data/lib/finch-api/util.rb +3 -5
  66. data/lib/finch-api/version.rb +1 -1
  67. data/lib/finch-api.rb +13 -5
  68. data/rbi/lib/finch-api/client.rbi +1 -1
  69. data/rbi/lib/finch-api/individuals_page.rbi +1 -1
  70. data/rbi/lib/finch-api/models/access_token_create_params.rbi +1 -1
  71. data/rbi/lib/finch-api/models/account_disconnect_params.rbi +1 -1
  72. data/rbi/lib/finch-api/models/account_introspect_params.rbi +1 -1
  73. data/rbi/lib/finch-api/models/connect/session_new_params.rbi +1 -1
  74. data/rbi/lib/finch-api/models/connect/session_reauthenticate_params.rbi +1 -1
  75. data/rbi/lib/finch-api/models/hris/benefit_create_params.rbi +1 -1
  76. data/rbi/lib/finch-api/models/hris/benefit_list_params.rbi +1 -1
  77. data/rbi/lib/finch-api/models/hris/benefit_list_supported_benefits_params.rbi +1 -1
  78. data/rbi/lib/finch-api/models/hris/benefit_retrieve_params.rbi +1 -1
  79. data/rbi/lib/finch-api/models/hris/benefit_update_params.rbi +1 -1
  80. data/rbi/lib/finch-api/models/hris/benefits/individual_enroll_many_params.rbi +1 -1
  81. data/rbi/lib/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbi +1 -1
  82. data/rbi/lib/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbi +1 -1
  83. data/rbi/lib/finch-api/models/hris/benefits/individual_unenroll_many_params.rbi +1 -1
  84. data/rbi/lib/finch-api/models/hris/company_retrieve_params.rbi +1 -1
  85. data/rbi/lib/finch-api/models/hris/directory_list_individuals_params.rbi +1 -1
  86. data/rbi/lib/finch-api/models/hris/directory_list_params.rbi +1 -1
  87. data/rbi/lib/finch-api/models/hris/document_list_params.rbi +1 -1
  88. data/rbi/lib/finch-api/models/hris/document_retreive_params.rbi +1 -1
  89. data/rbi/lib/finch-api/models/hris/employment_retrieve_many_params.rbi +1 -1
  90. data/rbi/lib/finch-api/models/hris/individual_retrieve_many_params.rbi +1 -1
  91. data/rbi/lib/finch-api/models/hris/pay_statement_retrieve_many_params.rbi +1 -1
  92. data/rbi/lib/finch-api/models/hris/payment_list_params.rbi +1 -1
  93. data/rbi/lib/finch-api/models/introspection.rbi +20 -3
  94. data/rbi/lib/finch-api/models/jobs/automated_create_params.rbi +1 -1
  95. data/rbi/lib/finch-api/models/jobs/automated_list_params.rbi +1 -1
  96. data/rbi/lib/finch-api/models/jobs/automated_retrieve_params.rbi +1 -1
  97. data/rbi/lib/finch-api/models/jobs/manual_retrieve_params.rbi +1 -1
  98. data/rbi/lib/finch-api/models/payroll/pay_group_list_params.rbi +1 -1
  99. data/rbi/lib/finch-api/models/payroll/pay_group_retrieve_params.rbi +1 -1
  100. data/rbi/lib/finch-api/models/provider_list_params.rbi +1 -1
  101. data/rbi/lib/finch-api/models/request_forwarding_forward_params.rbi +1 -1
  102. data/rbi/lib/finch-api/models/sandbox/company_update_params.rbi +1 -1
  103. data/rbi/lib/finch-api/models/sandbox/connection_create_params.rbi +1 -1
  104. data/rbi/lib/finch-api/models/sandbox/connections/account_create_params.rbi +1 -1
  105. data/rbi/lib/finch-api/models/sandbox/connections/account_update_params.rbi +1 -1
  106. data/rbi/lib/finch-api/models/sandbox/directory_create_params.rbi +1 -1
  107. data/rbi/lib/finch-api/models/sandbox/directory_create_response.rbi +1 -1
  108. data/rbi/lib/finch-api/models/sandbox/employment_update_params.rbi +1 -1
  109. data/rbi/lib/finch-api/models/sandbox/individual_update_params.rbi +1 -1
  110. data/rbi/lib/finch-api/models/sandbox/job_create_params.rbi +1 -1
  111. data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbi +1 -1
  112. data/rbi/lib/finch-api/models/sandbox/jobs/configuration_retrieve_response.rbi +4 -1
  113. data/rbi/lib/finch-api/models/sandbox/jobs/configuration_update_params.rbi +1 -1
  114. data/rbi/lib/finch-api/models/sandbox/payment_create_params.rbi +1 -1
  115. data/rbi/lib/finch-api/page.rbi +1 -1
  116. data/rbi/lib/finch-api/request_options.rbi +0 -15
  117. data/rbi/lib/finch-api/responses_page.rbi +1 -1
  118. data/rbi/lib/finch-api/single_page.rbi +1 -1
  119. data/rbi/lib/finch-api/transport/base_client.rbi +204 -0
  120. data/rbi/lib/finch-api/transport/pooled_net_requester.rbi +64 -0
  121. data/rbi/lib/finch-api/type/array_of.rbi +82 -0
  122. data/rbi/lib/finch-api/type/base_model.rbi +191 -0
  123. data/rbi/lib/finch-api/type/base_page.rbi +38 -0
  124. data/rbi/lib/finch-api/type/boolean_model.rbi +41 -0
  125. data/rbi/lib/finch-api/type/converter.rbi +101 -0
  126. data/rbi/lib/finch-api/type/enum.rbi +58 -0
  127. data/rbi/lib/finch-api/type/hash_of.rbi +86 -0
  128. data/rbi/lib/finch-api/type/request_parameters.rbi +20 -0
  129. data/rbi/lib/finch-api/type/union.rbi +66 -0
  130. data/rbi/lib/finch-api/type/unknown.rbi +37 -0
  131. data/rbi/lib/finch-api/type.rbi +23 -0
  132. data/rbi/lib/finch-api/version.rbi +1 -1
  133. data/sig/finch-api/client.rbs +1 -1
  134. data/sig/finch-api/individuals_page.rbs +1 -1
  135. data/sig/finch-api/models/access_token_create_params.rbs +1 -1
  136. data/sig/finch-api/models/account_disconnect_params.rbs +1 -1
  137. data/sig/finch-api/models/account_introspect_params.rbs +1 -1
  138. data/sig/finch-api/models/connect/session_new_params.rbs +1 -1
  139. data/sig/finch-api/models/connect/session_reauthenticate_params.rbs +1 -1
  140. data/sig/finch-api/models/hris/benefit_create_params.rbs +1 -1
  141. data/sig/finch-api/models/hris/benefit_list_params.rbs +1 -1
  142. data/sig/finch-api/models/hris/benefit_list_supported_benefits_params.rbs +1 -1
  143. data/sig/finch-api/models/hris/benefit_retrieve_params.rbs +1 -1
  144. data/sig/finch-api/models/hris/benefit_update_params.rbs +1 -1
  145. data/sig/finch-api/models/hris/benefits/individual_enroll_many_params.rbs +1 -1
  146. data/sig/finch-api/models/hris/benefits/individual_enrolled_ids_params.rbs +1 -1
  147. data/sig/finch-api/models/hris/benefits/individual_retrieve_many_benefits_params.rbs +1 -1
  148. data/sig/finch-api/models/hris/benefits/individual_unenroll_many_params.rbs +1 -1
  149. data/sig/finch-api/models/hris/company_retrieve_params.rbs +1 -1
  150. data/sig/finch-api/models/hris/directory_list_individuals_params.rbs +1 -1
  151. data/sig/finch-api/models/hris/directory_list_params.rbs +1 -1
  152. data/sig/finch-api/models/hris/document_list_params.rbs +1 -1
  153. data/sig/finch-api/models/hris/document_retreive_params.rbs +1 -1
  154. data/sig/finch-api/models/hris/employment_retrieve_many_params.rbs +1 -1
  155. data/sig/finch-api/models/hris/individual_retrieve_many_params.rbs +1 -1
  156. data/sig/finch-api/models/hris/pay_statement_retrieve_many_params.rbs +1 -1
  157. data/sig/finch-api/models/hris/payment_list_params.rbs +1 -1
  158. data/sig/finch-api/models/introspection.rbs +10 -1
  159. data/sig/finch-api/models/jobs/automated_create_params.rbs +1 -1
  160. data/sig/finch-api/models/jobs/automated_list_params.rbs +1 -1
  161. data/sig/finch-api/models/jobs/automated_retrieve_params.rbs +1 -1
  162. data/sig/finch-api/models/jobs/manual_retrieve_params.rbs +1 -1
  163. data/sig/finch-api/models/payroll/pay_group_list_params.rbs +1 -1
  164. data/sig/finch-api/models/payroll/pay_group_retrieve_params.rbs +1 -1
  165. data/sig/finch-api/models/provider_list_params.rbs +1 -1
  166. data/sig/finch-api/models/request_forwarding_forward_params.rbs +1 -1
  167. data/sig/finch-api/models/sandbox/company_update_params.rbs +1 -1
  168. data/sig/finch-api/models/sandbox/connection_create_params.rbs +1 -1
  169. data/sig/finch-api/models/sandbox/connections/account_create_params.rbs +1 -1
  170. data/sig/finch-api/models/sandbox/connections/account_update_params.rbs +1 -1
  171. data/sig/finch-api/models/sandbox/directory_create_params.rbs +1 -1
  172. data/sig/finch-api/models/sandbox/employment_update_params.rbs +1 -1
  173. data/sig/finch-api/models/sandbox/individual_update_params.rbs +1 -1
  174. data/sig/finch-api/models/sandbox/job_create_params.rbs +1 -1
  175. data/sig/finch-api/models/sandbox/jobs/configuration_retrieve_params.rbs +1 -1
  176. data/sig/finch-api/models/sandbox/jobs/configuration_update_params.rbs +1 -1
  177. data/sig/finch-api/models/sandbox/payment_create_params.rbs +1 -1
  178. data/sig/finch-api/page.rbs +1 -1
  179. data/sig/finch-api/request_options.rbs +0 -10
  180. data/sig/finch-api/responses_page.rbs +1 -1
  181. data/sig/finch-api/single_page.rbs +1 -1
  182. data/sig/finch-api/transport/base_client.rbs +110 -0
  183. data/sig/finch-api/transport/pooled_net_requester.rbs +39 -0
  184. data/sig/finch-api/type/array_of.rbs +36 -0
  185. data/sig/finch-api/type/base_model.rbs +73 -0
  186. data/sig/finch-api/type/base_page.rbs +22 -0
  187. data/sig/finch-api/type/boolean_model.rbs +18 -0
  188. data/sig/finch-api/type/converter.rbs +36 -0
  189. data/sig/finch-api/type/enum.rbs +22 -0
  190. data/sig/finch-api/type/hash_of.rbs +36 -0
  191. data/sig/finch-api/type/request_parameters.rbs +13 -0
  192. data/sig/finch-api/type/union.rbs +37 -0
  193. data/sig/finch-api/type/unknown.rbs +18 -0
  194. data/sig/finch-api/type.rbs +22 -0
  195. data/sig/finch-api/version.rbs +1 -1
  196. metadata +41 -17
  197. data/lib/finch-api/base_client.rb +0 -457
  198. data/lib/finch-api/base_model.rb +0 -1226
  199. data/lib/finch-api/base_page.rb +0 -59
  200. data/lib/finch-api/extern.rb +0 -7
  201. data/lib/finch-api/pooled_net_requester.rb +0 -180
  202. data/rbi/lib/finch-api/base_client.rbi +0 -196
  203. data/rbi/lib/finch-api/base_model.rbi +0 -643
  204. data/rbi/lib/finch-api/base_page.rbi +0 -36
  205. data/rbi/lib/finch-api/extern.rbi +0 -7
  206. data/rbi/lib/finch-api/pooled_net_requester.rbi +0 -59
  207. data/sig/finch-api/base_client.rbs +0 -106
  208. data/sig/finch-api/base_model.rbs +0 -260
  209. data/sig/finch-api/base_page.rbs +0 -20
  210. data/sig/finch-api/extern.rbs +0 -4
  211. 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)) }
@@ -2,7 +2,7 @@
2
2
 
3
3
  module FinchAPI
4
4
  class Page
5
- include FinchAPI::BasePage
5
+ include FinchAPI::Type::BasePage
6
6
 
7
7
  Elem = type_member
8
8
 
@@ -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
  #
@@ -2,7 +2,7 @@
2
2
 
3
3
  module FinchAPI
4
4
  class ResponsesPage
5
- include FinchAPI::BasePage
5
+ include FinchAPI::Type::BasePage
6
6
 
7
7
  Elem = type_member
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module FinchAPI
4
4
  class SinglePage < ::Array
5
- include FinchAPI::BasePage
5
+ include FinchAPI::Type::BasePage
6
6
 
7
7
  Elem = type_member
8
8
 
@@ -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