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
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module FinchAPI
4
- # @example
5
- # if page.has_next?
6
- # page = page.next_page
7
- # end
8
- #
9
- # @example
10
- # page.auto_paging_each do |access_token|
11
- # puts(access_token)
12
- # end
13
- #
14
- # @example
15
- # access_tokens =
16
- # page
17
- # .to_enum
18
- # .lazy
19
- # .select { _1.object_id.even? }
20
- # .map(&:itself)
21
- # .take(2)
22
- # .to_a
23
- #
24
- # access_tokens => Array
25
- module BasePage
26
- # rubocop:disable Lint/UnusedMethodArgument
27
-
28
- # @return [Boolean]
29
- def next_page? = (raise NotImplementedError)
30
-
31
- # @raise [FinchAPI::APIError]
32
- # @return [FinchAPI::BasePage]
33
- def next_page = (raise NotImplementedError)
34
-
35
- # @param blk [Proc]
36
- #
37
- # @return [void]
38
- def auto_paging_each(&) = (raise NotImplementedError)
39
-
40
- # @return [Enumerable]
41
- def to_enum = super(:auto_paging_each)
42
-
43
- alias_method :enum_for, :to_enum
44
-
45
- # @api private
46
- #
47
- # @param client [FinchAPI::BaseClient]
48
- # @param req [Hash{Symbol=>Object}]
49
- # @param headers [Hash{String=>String}, Net::HTTPHeader]
50
- # @param page_data [Object]
51
- def initialize(client:, req:, headers:, page_data:)
52
- @client = client
53
- @req = req
54
- super()
55
- end
56
-
57
- # rubocop:enable Lint/UnusedMethodArgument
58
- end
59
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module FinchAPI
4
- # @api private
5
- module Extern
6
- end
7
- end
@@ -1,180 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module FinchAPI
4
- # @api private
5
- class PooledNetRequester
6
- # from the golang stdlib
7
- # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
8
- KEEP_ALIVE_TIMEOUT = 30
9
-
10
- class << self
11
- # @api private
12
- #
13
- # @param url [URI::Generic]
14
- #
15
- # @return [Net::HTTP]
16
- def connect(url)
17
- port =
18
- case [url.port, url.scheme]
19
- in [Integer, _]
20
- url.port
21
- in [nil, "http" | "ws"]
22
- Net::HTTP.http_default_port
23
- in [nil, "https" | "wss"]
24
- Net::HTTP.https_default_port
25
- end
26
-
27
- Net::HTTP.new(url.host, port).tap do
28
- _1.use_ssl = %w[https wss].include?(url.scheme)
29
- _1.max_retries = 0
30
- end
31
- end
32
-
33
- # @api private
34
- #
35
- # @param conn [Net::HTTP]
36
- # @param deadline [Float]
37
- def calibrate_socket_timeout(conn, deadline)
38
- timeout = deadline - FinchAPI::Util.monotonic_secs
39
- conn.open_timeout = conn.read_timeout = conn.write_timeout = conn.continue_timeout = timeout
40
- end
41
-
42
- # @api private
43
- #
44
- # @param request [Hash{Symbol=>Object}] .
45
- #
46
- # @option request [Symbol] :method
47
- #
48
- # @option request [URI::Generic] :url
49
- #
50
- # @option request [Hash{String=>String}] :headers
51
- #
52
- # @param blk [Proc]
53
- #
54
- # @yieldparam [String]
55
- # @return [Net::HTTPGenericRequest]
56
- def build_request(request, &)
57
- method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
58
- req = Net::HTTPGenericRequest.new(
59
- method.to_s.upcase,
60
- !body.nil?,
61
- method != :head,
62
- url.to_s
63
- )
64
-
65
- headers.each { req[_1] = _2 }
66
-
67
- case body
68
- in nil
69
- nil
70
- in String
71
- req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
72
- req.body_stream = FinchAPI::Util::ReadIOAdapter.new(body, &)
73
- in StringIO
74
- req["content-length"] ||= body.size.to_s unless req["transfer-encoding"]
75
- req.body_stream = FinchAPI::Util::ReadIOAdapter.new(body, &)
76
- in IO | Enumerator
77
- req["transfer-encoding"] ||= "chunked" unless req["content-length"]
78
- req.body_stream = FinchAPI::Util::ReadIOAdapter.new(body, &)
79
- end
80
-
81
- req
82
- end
83
- end
84
-
85
- # @api private
86
- #
87
- # @param url [URI::Generic]
88
- # @param deadline [Float]
89
- # @param blk [Proc]
90
- #
91
- # @raise [Timeout::Error]
92
- # @yieldparam [Net::HTTP]
93
- private def with_pool(url, deadline:, &blk)
94
- origin = FinchAPI::Util.uri_origin(url)
95
- timeout = deadline - FinchAPI::Util.monotonic_secs
96
- pool =
97
- @mutex.synchronize do
98
- @pools[origin] ||= ConnectionPool.new(size: @size) do
99
- self.class.connect(url)
100
- end
101
- end
102
-
103
- pool.with(timeout: timeout, &blk)
104
- end
105
-
106
- # @api private
107
- #
108
- # @param request [Hash{Symbol=>Object}] .
109
- #
110
- # @option request [Symbol] :method
111
- #
112
- # @option request [URI::Generic] :url
113
- #
114
- # @option request [Hash{String=>String}] :headers
115
- #
116
- # @option request [Object] :body
117
- #
118
- # @option request [Float] :deadline
119
- #
120
- # @return [Array(Integer, Net::HTTPResponse, Enumerable)]
121
- def execute(request)
122
- url, deadline = request.fetch_values(:url, :deadline)
123
-
124
- eof = false
125
- finished = false
126
- enum = Enumerator.new do |y|
127
- with_pool(url, deadline: deadline) do |conn|
128
- next if finished
129
-
130
- req = self.class.build_request(request) do
131
- self.class.calibrate_socket_timeout(conn, deadline)
132
- end
133
-
134
- self.class.calibrate_socket_timeout(conn, deadline)
135
- unless conn.started?
136
- conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
137
- conn.start
138
- end
139
-
140
- self.class.calibrate_socket_timeout(conn, deadline)
141
- conn.request(req) do |rsp|
142
- y << [conn, req, rsp]
143
- break if finished
144
-
145
- rsp.read_body do |bytes|
146
- y << bytes
147
- break if finished
148
-
149
- self.class.calibrate_socket_timeout(conn, deadline)
150
- end
151
- eof = true
152
- end
153
- end
154
- rescue Timeout::Error
155
- raise FinchAPI::APITimeoutError
156
- end
157
-
158
- conn, _, response = enum.next
159
- body = FinchAPI::Util.fused_enum(enum, external: true) do
160
- finished = true
161
- tap do
162
- enum.next
163
- rescue StopIteration
164
- nil
165
- end
166
- conn.finish if !eof && conn&.started?
167
- end
168
- [Integer(response.code), response, (response.body = body)]
169
- end
170
-
171
- # @api private
172
- #
173
- # @param size [Integer]
174
- def initialize(size: Etc.nprocessors)
175
- @mutex = Mutex.new
176
- @size = size
177
- @pools = {}
178
- end
179
- end
180
- end
@@ -1,196 +0,0 @@
1
- # typed: strong
2
-
3
- module FinchAPI
4
- # @api private
5
- class BaseClient
6
- abstract!
7
-
8
- RequestComponentsShape =
9
- T.type_alias do
10
- {
11
- method: Symbol,
12
- path: T.any(String, T::Array[String]),
13
- query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
14
- headers: T.nilable(
15
- T::Hash[String,
16
- T.nilable(
17
- T.any(
18
- String,
19
- Integer,
20
- T::Array[T.nilable(T.any(String, Integer))]
21
- )
22
- )]
23
- ),
24
- body: T.nilable(T.anything),
25
- unwrap: T.nilable(Symbol),
26
- page: T.nilable(T::Class[FinchAPI::BasePage[FinchAPI::BaseModel]]),
27
- stream: T.nilable(T::Class[T.anything]),
28
- model: T.nilable(FinchAPI::Converter::Input),
29
- options: T.nilable(T.any(FinchAPI::RequestOptions, FinchAPI::Util::AnyHash))
30
- }
31
- end
32
-
33
- RequestInputShape =
34
- T.type_alias do
35
- {
36
- method: Symbol,
37
- url: URI::Generic,
38
- headers: T::Hash[String, String],
39
- body: T.anything,
40
- max_retries: Integer,
41
- timeout: Float
42
- }
43
- end
44
-
45
- # from whatwg fetch spec
46
- MAX_REDIRECTS = 20
47
-
48
- PLATFORM_HEADERS = T::Hash[String, String]
49
-
50
- class << self
51
- # @api private
52
- sig { params(req: FinchAPI::BaseClient::RequestComponentsShape).void }
53
- def validate!(req)
54
- end
55
-
56
- # @api private
57
- sig do
58
- params(status: Integer, headers: T.any(T::Hash[String, String], Net::HTTPHeader)).returns(T::Boolean)
59
- end
60
- def should_retry?(status, headers:)
61
- end
62
-
63
- # @api private
64
- sig do
65
- params(
66
- request: FinchAPI::BaseClient::RequestInputShape,
67
- status: Integer,
68
- response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
69
- )
70
- .returns(FinchAPI::BaseClient::RequestInputShape)
71
- end
72
- def follow_redirect(request, status:, response_headers:)
73
- end
74
-
75
- # @api private
76
- sig do
77
- params(
78
- status: T.any(Integer, FinchAPI::APIConnectionError),
79
- stream: T.nilable(T::Enumerable[String])
80
- ).void
81
- end
82
- def reap_connection!(status, stream:)
83
- end
84
- end
85
-
86
- # @api private
87
- sig { returns(T.anything) }
88
- attr_accessor :requester
89
-
90
- # @api private
91
- sig do
92
- params(
93
- base_url: String,
94
- timeout: Float,
95
- max_retries: Integer,
96
- initial_retry_delay: Float,
97
- max_retry_delay: Float,
98
- headers: T::Hash[String,
99
- T.nilable(T.any(String, Integer, T::Array[T.nilable(T.any(String, Integer))]))],
100
- idempotency_header: T.nilable(String)
101
- )
102
- .returns(T.attached_class)
103
- end
104
- def self.new(
105
- base_url:,
106
- timeout: 0.0,
107
- max_retries: 0,
108
- initial_retry_delay: 0.0,
109
- max_retry_delay: 0.0,
110
- headers: {},
111
- idempotency_header: nil
112
- )
113
- end
114
-
115
- # @api private
116
- sig { overridable.returns(T::Hash[String, String]) }
117
- private def auth_headers
118
- end
119
-
120
- # @api private
121
- sig { returns(String) }
122
- private def generate_idempotency_key
123
- end
124
-
125
- # @api private
126
- sig do
127
- overridable
128
- .params(req: FinchAPI::BaseClient::RequestComponentsShape, opts: FinchAPI::Util::AnyHash)
129
- .returns(FinchAPI::BaseClient::RequestInputShape)
130
- end
131
- private def build_request(req, opts)
132
- end
133
-
134
- # @api private
135
- sig { params(headers: T::Hash[String, String], retry_count: Integer).returns(Float) }
136
- private def retry_delay(headers, retry_count:)
137
- end
138
-
139
- # @api private
140
- sig do
141
- params(
142
- request: FinchAPI::BaseClient::RequestInputShape,
143
- redirect_count: Integer,
144
- retry_count: Integer,
145
- send_retry_header: T::Boolean
146
- )
147
- .returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
148
- end
149
- private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
150
- end
151
-
152
- # Execute the request specified by `req`. This is the method that all resource
153
- # methods call into.
154
- sig do
155
- params(
156
- method: Symbol,
157
- path: T.any(String, T::Array[String]),
158
- query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
159
- headers: T.nilable(
160
- T::Hash[String,
161
- T.nilable(
162
- T.any(
163
- String,
164
- Integer,
165
- T::Array[T.nilable(T.any(String, Integer))]
166
- )
167
- )]
168
- ),
169
- body: T.nilable(T.anything),
170
- unwrap: T.nilable(Symbol),
171
- page: T.nilable(T::Class[FinchAPI::BasePage[FinchAPI::BaseModel]]),
172
- stream: T.nilable(T::Class[T.anything]),
173
- model: T.nilable(FinchAPI::Converter::Input),
174
- options: T.nilable(T.any(FinchAPI::RequestOptions, FinchAPI::Util::AnyHash))
175
- )
176
- .returns(T.anything)
177
- end
178
- def request(
179
- method,
180
- path,
181
- query: {},
182
- headers: {},
183
- body: nil,
184
- unwrap: nil,
185
- page: nil,
186
- stream: nil,
187
- model: FinchAPI::Unknown,
188
- options: {}
189
- )
190
- end
191
-
192
- sig { returns(String) }
193
- def inspect
194
- end
195
- end
196
- end