test-test-ignore-123123 0.0.1.pre.alpha.0

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 (244) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +128 -0
  3. data/lib/sink/base_client.rb +383 -0
  4. data/lib/sink/base_model.rb +203 -0
  5. data/lib/sink/client.rb +381 -0
  6. data/lib/sink/fake_page.rb +39 -0
  7. data/lib/sink/models/allof_base_parent.rb +11 -0
  8. data/lib/sink/models/allof_multiple_inline_entries.rb +15 -0
  9. data/lib/sink/models/api_status.rb +11 -0
  10. data/lib/sink/models/array_float_items_response.rb +6 -0
  11. data/lib/sink/models/array_missing_items_response.rb +11 -0
  12. data/lib/sink/models/array_object_items.rb +11 -0
  13. data/lib/sink/models/array_object_items_response.rb +11 -0
  14. data/lib/sink/models/array_recursion.rb +6 -0
  15. data/lib/sink/models/balance.rb +11 -0
  16. data/lib/sink/models/basic_shared_model_object.rb +15 -0
  17. data/lib/sink/models/body_param_top_level_all_of_response.rb +20 -0
  18. data/lib/sink/models/body_param_union_overlapping_prop_response.rb +11 -0
  19. data/lib/sink/models/card.rb +144 -0
  20. data/lib/sink/models/card_list_response.rb +26 -0
  21. data/lib/sink/models/card_provision_foo_response.rb +11 -0
  22. data/lib/sink/models/child_inlined_response_response.rb +11 -0
  23. data/lib/sink/models/child_model.rb +21 -0
  24. data/lib/sink/models/class_.rb +11 -0
  25. data/lib/sink/models/client.rb +15 -0
  26. data/lib/sink/models/company.rb +11 -0
  27. data/lib/sink/models/company_payment.rb +11 -0
  28. data/lib/sink/models/complex_query_array_query_response.rb +22 -0
  29. data/lib/sink/models/config_tool_model_ref_from_nested_response_body_response.rb +17 -0
  30. data/lib/sink/models/currency.rb +23 -0
  31. data/lib/sink/models/decorator_test_keep_me_response.rb +11 -0
  32. data/lib/sink/models/docstring_leading_double_quote_response.rb +12 -0
  33. data/lib/sink/models/docstring_trailing_double_quote_response.rb +22 -0
  34. data/lib/sink/models/documents.rb +15 -0
  35. data/lib/sink/models/eeoc.rb +11 -0
  36. data/lib/sink/models/employment_data.rb +11 -0
  37. data/lib/sink/models/enum_basic_response.rb +51 -0
  38. data/lib/sink/models/export.rb +12 -0
  39. data/lib/sink/models/funding_account.rb +73 -0
  40. data/lib/sink/models/import.rb +11 -0
  41. data/lib/sink/models/interface.rb +11 -0
  42. data/lib/sink/models/keep_this_resource_keep_this_method_response.rb +11 -0
  43. data/lib/sink/models/make_ambiguous_schemas_explicit_make_ambiguous_schemas_explicit_response.rb +31 -0
  44. data/lib/sink/models/make_ambiguous_schemas_looser_make_ambiguous_schemas_looser_response.rb +31 -0
  45. data/lib/sink/models/map_nullable_items_response.rb +19 -0
  46. data/lib/sink/models/method_config_skipped_tests_all_response.rb +11 -0
  47. data/lib/sink/models/method_config_skipped_tests_go_response.rb +11 -0
  48. data/lib/sink/models/method_config_skipped_tests_java_response.rb +11 -0
  49. data/lib/sink/models/method_config_skipped_tests_kotlin_response.rb +11 -0
  50. data/lib/sink/models/method_config_skipped_tests_node_and_python_response.rb +11 -0
  51. data/lib/sink/models/method_config_skipped_tests_node_response.rb +11 -0
  52. data/lib/sink/models/method_config_skipped_tests_python_response.rb +11 -0
  53. data/lib/sink/models/method_config_skipped_tests_ruby_response.rb +11 -0
  54. data/lib/sink/models/model_from_nested_path.rb +30 -0
  55. data/lib/sink/models/model_from_nested_response_body_ref.rb +11 -0
  56. data/lib/sink/models/model_from_schemas_ref.rb +11 -0
  57. data/lib/sink/models/model_from_schemas_ref_openapi_uri.rb +11 -0
  58. data/lib/sink/models/model_from_schemas_ref_openapi_uri_jmespath.rb +11 -0
  59. data/lib/sink/models/model_from_schemas_ref_openapi_uri_jsonpath.rb +11 -0
  60. data/lib/sink/models/model_level_1.rb +15 -0
  61. data/lib/sink/models/model_level_2.rb +15 -0
  62. data/lib/sink/models/model_level_3.rb +15 -0
  63. data/lib/sink/models/model_referenced_in_parent_and_child.rb +11 -0
  64. data/lib/sink/models/model_with_nested_model.rb +16 -0
  65. data/lib/sink/models/my_model.rb +11 -0
  66. data/lib/sink/models/name_child_prop_import_clash_response.rb +21 -0
  67. data/lib/sink/models/name_properties_common_conflicts_response.rb +59 -0
  68. data/lib/sink/models/name_properties_illegal_javascript_identifiers_response.rb +6 -0
  69. data/lib/sink/models/name_response_property_clashes_model_import_response.rb +15 -0
  70. data/lib/sink/models/name_response_shadows_pydantic_response.rb +15 -0
  71. data/lib/sink/models/nested_request_model_a.rb +11 -0
  72. data/lib/sink/models/nested_request_model_b.rb +11 -0
  73. data/lib/sink/models/nested_request_model_c.rb +17 -0
  74. data/lib/sink/models/object_missing_items_response.rb +11 -0
  75. data/lib/sink/models/object_mixed_known_and_unknown_response.rb +11 -0
  76. data/lib/sink/models/object_multiple_array_properties_same_ref_response.rb +42 -0
  77. data/lib/sink/models/object_multiple_properties_same_model_response.rb +19 -0
  78. data/lib/sink/models/object_multiple_properties_same_ref_response.rb +37 -0
  79. data/lib/sink/models/object_skipped_props.rb +27 -0
  80. data/lib/sink/models/object_two_dimensional_array_primitive_property_response.rb +23 -0
  81. data/lib/sink/models/object_with_any_of_null_property.rb +17 -0
  82. data/lib/sink/models/object_with_child_ref.rb +15 -0
  83. data/lib/sink/models/object_with_one_of_null_property.rb +17 -0
  84. data/lib/sink/models/object_with_union_properties.rb +15 -0
  85. data/lib/sink/models/openapi_format_array_type_one_entry_response.rb +11 -0
  86. data/lib/sink/models/openapi_format_array_type_one_entry_with_null_response.rb +11 -0
  87. data/lib/sink/models/openapi_special_used_used_as_property_name_response.rb +11 -0
  88. data/lib/sink/models/page_cursor_shared_ref_pagination.rb +15 -0
  89. data/lib/sink/models/parent_model_with_child_ref.rb +19 -0
  90. data/lib/sink/models/path_param_colon_suffix_response.rb +11 -0
  91. data/lib/sink/models/path_param_file_extension_response.rb +11 -0
  92. data/lib/sink/models/path_param_multiple_response.rb +11 -0
  93. data/lib/sink/models/path_param_query_param_response.rb +11 -0
  94. data/lib/sink/models/path_param_singular_response.rb +11 -0
  95. data/lib/sink/models/primitive_strings_response.rb +11 -0
  96. data/lib/sink/models/private.rb +11 -0
  97. data/lib/sink/models/public.rb +11 -0
  98. data/lib/sink/models/recursion_create_envelope_response.rb +11 -0
  99. data/lib/sink/models/response_allof_simple_response.rb +15 -0
  100. data/lib/sink/models/response_array_object_with_union_properties_response.rb +6 -0
  101. data/lib/sink/models/response_array_response_response.rb +6 -0
  102. data/lib/sink/models/response_missing_required_response.rb +15 -0
  103. data/lib/sink/models/response_nested_array_response.rb +21 -0
  104. data/lib/sink/models/response_object_all_properties_response.rb +49 -0
  105. data/lib/sink/models/response_object_no_properties_response.rb +8 -0
  106. data/lib/sink/models/response_object_with_additional_properties_prop_response.rb +17 -0
  107. data/lib/sink/models/response_object_with_heavily_nested_union_response.rb +11 -0
  108. data/lib/sink/models/response_only_read_only_properties_response.rb +16 -0
  109. data/lib/sink/models/responses_allof_cross_object.rb +15 -0
  110. data/lib/sink/models/return_.rb +11 -0
  111. data/lib/sink/models/root_response.rb +19 -0
  112. data/lib/sink/models/self_recursion.rb +15 -0
  113. data/lib/sink/models/shared_cursor_nested_response_prop_meta.rb +18 -0
  114. data/lib/sink/models/shared_self_recursion.rb +15 -0
  115. data/lib/sink/models/shipping_address.rb +62 -0
  116. data/lib/sink/models/simple_allof.rb +20 -0
  117. data/lib/sink/models/simple_object.rb +19 -0
  118. data/lib/sink/models/skip_this_resource_i_never_appear_response.rb +11 -0
  119. data/lib/sink/models/streaming_basic_response.rb +15 -0
  120. data/lib/sink/models/streaming_nested_params_response.rb +15 -0
  121. data/lib/sink/models/streaming_no_discriminator_response.rb +15 -0
  122. data/lib/sink/models/streaming_query_param_discriminator_response.rb +15 -0
  123. data/lib/sink/models/streaming_with_unrelated_default_param_response.rb +15 -0
  124. data/lib/sink/models/type_dates_response.rb +27 -0
  125. data/lib/sink/models/type_datetimes_response.rb +27 -0
  126. data/lib/sink/models/union_discriminated_variant_a.rb +19 -0
  127. data/lib/sink/models/union_discriminated_variant_b.rb +19 -0
  128. data/lib/sink/models/union_response_discriminated_by_property_name_response.rb +6 -0
  129. data/lib/sink/models/union_response_discriminated_with_basic_mapping_response.rb +6 -0
  130. data/lib/sink/models/union_type_mixed_types_response.rb +6 -0
  131. data/lib/sink/models/union_type_nullable_union_response.rb +6 -0
  132. data/lib/sink/models/union_type_objects_response.rb +6 -0
  133. data/lib/sink/models/union_type_super_mixed_types_response.rb +6 -0
  134. data/lib/sink/models/union_type_unknown_variant_response.rb +6 -0
  135. data/lib/sink/models/version_1_30_name_create_response.rb +11 -0
  136. data/lib/sink/models/widget.rb +12 -0
  137. data/lib/sink/models/write_only_response_simple_response.rb +12 -0
  138. data/lib/sink/page_cursor.rb +49 -0
  139. data/lib/sink/page_cursor_from_headers.rb +49 -0
  140. data/lib/sink/page_cursor_id.rb +45 -0
  141. data/lib/sink/page_cursor_nested_items.rb +65 -0
  142. data/lib/sink/page_cursor_nested_object_ref.rb +59 -0
  143. data/lib/sink/page_cursor_shared_ref.rb +59 -0
  144. data/lib/sink/page_cursor_top_level_array.rb +46 -0
  145. data/lib/sink/page_cursor_url.rb +46 -0
  146. data/lib/sink/page_offset.rb +49 -0
  147. data/lib/sink/page_offset_no_start_field.rb +45 -0
  148. data/lib/sink/page_offset_total_count.rb +53 -0
  149. data/lib/sink/page_page_number.rb +53 -0
  150. data/lib/sink/page_page_number_without_current_page_response.rb +45 -0
  151. data/lib/sink/pooled_net_requester.rb +63 -0
  152. data/lib/sink/request_options.rb +84 -0
  153. data/lib/sink/resources/body_params/objects.rb +31 -0
  154. data/lib/sink/resources/body_params/unions.rb +31 -0
  155. data/lib/sink/resources/body_params.rb +475 -0
  156. data/lib/sink/resources/cards.rb +488 -0
  157. data/lib/sink/resources/casing/eeoc.rb +32 -0
  158. data/lib/sink/resources/casing.rb +15 -0
  159. data/lib/sink/resources/clients.rb +27 -0
  160. data/lib/sink/resources/company/payments.rb +28 -0
  161. data/lib/sink/resources/company.rb +17 -0
  162. data/lib/sink/resources/complex_queries.rb +56 -0
  163. data/lib/sink/resources/config_tools/parent_with_skip_node_python/child_only_skip_python.rb +96 -0
  164. data/lib/sink/resources/config_tools/parent_with_skip_node_python.rb +98 -0
  165. data/lib/sink/resources/config_tools.rb +37 -0
  166. data/lib/sink/resources/decorator_tests/keep_this_resource.rb +27 -0
  167. data/lib/sink/resources/decorator_tests/languages.rb +55 -0
  168. data/lib/sink/resources/decorator_tests/skip_this_resource.rb +26 -0
  169. data/lib/sink/resources/decorator_tests.rb +36 -0
  170. data/lib/sink/resources/deeply_nested/level_one/level_two/level_three.rb +31 -0
  171. data/lib/sink/resources/deeply_nested/level_one/level_two.rb +33 -0
  172. data/lib/sink/resources/deeply_nested/level_one.rb +31 -0
  173. data/lib/sink/resources/deeply_nested.rb +15 -0
  174. data/lib/sink/resources/docstrings.rb +77 -0
  175. data/lib/sink/resources/empty_body.rb +55 -0
  176. data/lib/sink/resources/header_params.rb +33 -0
  177. data/lib/sink/resources/invalid_schemas/arrays.rb +24 -0
  178. data/lib/sink/resources/invalid_schemas/objects.rb +24 -0
  179. data/lib/sink/resources/invalid_schemas.rb +19 -0
  180. data/lib/sink/resources/make_ambiguous_schemas_explicit.rb +24 -0
  181. data/lib/sink/resources/make_ambiguous_schemas_looser.rb +24 -0
  182. data/lib/sink/resources/method_config.rb +156 -0
  183. data/lib/sink/resources/mixed_params/duplicates.rb +73 -0
  184. data/lib/sink/resources/mixed_params.rb +81 -0
  185. data/lib/sink/resources/model_referenced_in_parent_and_child/child.rb +24 -0
  186. data/lib/sink/resources/model_referenced_in_parent_and_child.rb +26 -0
  187. data/lib/sink/resources/names/can_cause_clashes/employment_data.rb +15 -0
  188. data/lib/sink/resources/names/can_cause_clashes/response.rb +30 -0
  189. data/lib/sink/resources/names/can_cause_clashes.rb +22 -0
  190. data/lib/sink/resources/names/documents.rb +26 -0
  191. data/lib/sink/resources/names/openapi_specials.rb +24 -0
  192. data/lib/sink/resources/names/params.rb +47 -0
  193. data/lib/sink/resources/names/reserved_names/import.rb +29 -0
  194. data/lib/sink/resources/names/reserved_names/methods.rb +37 -0
  195. data/lib/sink/resources/names/reserved_names/public/class_.rb +28 -0
  196. data/lib/sink/resources/names/reserved_names/public/interface.rb +28 -0
  197. data/lib/sink/resources/names/reserved_names/public/private.rb +28 -0
  198. data/lib/sink/resources/names/reserved_names/public.rb +38 -0
  199. data/lib/sink/resources/names/reserved_names.rb +43 -0
  200. data/lib/sink/resources/names.rb +139 -0
  201. data/lib/sink/resources/openapi_formats.rb +48 -0
  202. data/lib/sink/resources/pagination_tests/cursor.rb +32 -0
  203. data/lib/sink/resources/pagination_tests/items_types.rb +32 -0
  204. data/lib/sink/resources/pagination_tests/nested_items.rb +32 -0
  205. data/lib/sink/resources/pagination_tests/offset.rb +70 -0
  206. data/lib/sink/resources/pagination_tests/schema_types.rb +51 -0
  207. data/lib/sink/resources/pagination_tests.rb +31 -0
  208. data/lib/sink/resources/parent/child.rb +28 -0
  209. data/lib/sink/resources/parent.rb +17 -0
  210. data/lib/sink/resources/path_params.rb +196 -0
  211. data/lib/sink/resources/positional_params.rb +219 -0
  212. data/lib/sink/resources/query_params.rb +157 -0
  213. data/lib/sink/resources/recursion/shared_responses.rb +24 -0
  214. data/lib/sink/resources/recursion.rb +61 -0
  215. data/lib/sink/resources/resource_refs/paginated_model_first_ref.rb +13 -0
  216. data/lib/sink/resources/resource_refs/paginated_model_second_ref.rb +13 -0
  217. data/lib/sink/resources/resource_refs/parent/child.rb +29 -0
  218. data/lib/sink/resources/resource_refs/parent.rb +30 -0
  219. data/lib/sink/resources/resource_refs.rb +23 -0
  220. data/lib/sink/resources/resources.rb +24 -0
  221. data/lib/sink/resources/responses/union_types.rb +91 -0
  222. data/lib/sink/resources/responses.rb +297 -0
  223. data/lib/sink/resources/shared_query_params.rb +45 -0
  224. data/lib/sink/resources/streaming.rb +96 -0
  225. data/lib/sink/resources/testing.rb +22 -0
  226. data/lib/sink/resources/tests.rb +24 -0
  227. data/lib/sink/resources/tools.rb +30 -0
  228. data/lib/sink/resources/types/allofs.rb +13 -0
  229. data/lib/sink/resources/types/arrays.rb +57 -0
  230. data/lib/sink/resources/types/enums.rb +86 -0
  231. data/lib/sink/resources/types/maps.rb +27 -0
  232. data/lib/sink/resources/types/objects.rb +98 -0
  233. data/lib/sink/resources/types/primitives.rb +31 -0
  234. data/lib/sink/resources/types/read_only_params.rb +31 -0
  235. data/lib/sink/resources/types/unions.rb +115 -0
  236. data/lib/sink/resources/types/write_only_responses.rb +26 -0
  237. data/lib/sink/resources/types.rb +90 -0
  238. data/lib/sink/resources/undocumented_resource.rb +44 -0
  239. data/lib/sink/resources/version_1_30_names.rb +38 -0
  240. data/lib/sink/resources/widgets.rb +28 -0
  241. data/lib/sink/util.rb +78 -0
  242. data/lib/sink/version.rb +5 -0
  243. data/lib/sink.rb +253 -0
  244. metadata +301 -0
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PageCursorSharedRef
5
+ class PageCursorSharedRefPagination < BaseModel
6
+ # @!attribute [rw] cursor
7
+ # @return [String]
8
+ required :cursor, String
9
+
10
+ # @!attribute [rw] prop_with_another_ref
11
+ # @return [Sink::Models::BasicSharedModelObject]
12
+ optional :prop_with_another_ref, -> { Sink::Models::BasicSharedModelObject }
13
+ end
14
+
15
+ # @return [Array]
16
+ attr_accessor :data
17
+
18
+ # @return [Sink::Models::PageCursorSharedRefPagination]
19
+ attr_accessor :pagination
20
+
21
+ # @!visibility private
22
+ attr_accessor :client, :req, :opts
23
+
24
+ # @!visibility private
25
+ def initialize(model, raw_data, _response, client, req, opts)
26
+ self.data = (raw_data[:data] || []).map { |e| model.convert(e) }
27
+ self.pagination = PageCursorSharedRefPagination.convert(raw_data[:pagination])
28
+ self.client = client
29
+ self.req = req
30
+ self.opts = opts
31
+ end
32
+
33
+ # @return [Boolean]
34
+ def next_page?
35
+ !pagination.cursor.nil?
36
+ end
37
+
38
+ # @return [PageCursorSharedRef]
39
+ def next_page
40
+ if !next_page?
41
+ raise "No more pages available; please check #next_page? before calling #next_page"
42
+ end
43
+ client.request(Util.deep_merge(req, {query: {cursor: cursor}}), opts)
44
+ end
45
+
46
+ # @return [nil]
47
+ def auto_paging_each(&blk)
48
+ if !blk
49
+ raise "A block must be given to #auto_paging_each"
50
+ end
51
+ page = self
52
+ loop do
53
+ page.data.each { |e| blk.call(e) }
54
+ break if !page.next_page?
55
+ page = page.next_page
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PageCursorTopLevelArray < ::Array
5
+ # @return [String]
6
+ attr_accessor :my_cursor
7
+
8
+ # @!visibility private
9
+ attr_accessor :client, :req, :opts
10
+
11
+ # @!visibility private
12
+ def initialize(model, raw_data, response, client, req, opts)
13
+ super(raw_data.map { |e| model.convert(e) })
14
+ self.my_cursor = response["X-My-Cursor"]
15
+ self.client = client
16
+ self.req = req
17
+ self.opts = opts
18
+ end
19
+
20
+ # @return [Boolean]
21
+ def next_page?
22
+ !my_cursor.nil?
23
+ end
24
+
25
+ # @return [PageCursorTopLevelArray]
26
+ def next_page
27
+ if !next_page?
28
+ raise "No more pages available; please check #next_page? before calling #next_page"
29
+ end
30
+ client.request(Util.deep_merge(req, {query: {cursor: my_cursor}}), opts)
31
+ end
32
+
33
+ # @return [nil]
34
+ def auto_paging_each(&blk)
35
+ if !blk
36
+ raise "A block must be given to #auto_paging_each"
37
+ end
38
+ page = self
39
+ loop do
40
+ page.each { |e| blk.call(e) }
41
+ break if !page.next_page?
42
+ page = page.next_page
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PageCursorURL
5
+ # @return [Array]
6
+ attr_accessor :data
7
+
8
+ # @return [String]
9
+ attr_accessor :next_page
10
+
11
+ # @!visibility private
12
+ attr_accessor :client, :req, :opts
13
+
14
+ # @!visibility private
15
+ def initialize(model, raw_data, _response, client, req, opts)
16
+ self.data = (raw_data[:data] || []).map { |e| model.convert(e) }
17
+ self.next_page = raw_data[:next_page]
18
+ self.client = client
19
+ self.req = req
20
+ self.opts = opts
21
+ end
22
+
23
+ # @return [Boolean]
24
+ def next_page?
25
+ raise NotImplementedError
26
+ end
27
+
28
+ # @return [PageCursorURL]
29
+ def next_page
30
+ raise NotImplementedError
31
+ end
32
+
33
+ # @return [nil]
34
+ def auto_paging_each(&blk)
35
+ if !blk
36
+ raise "A block must be given to #auto_paging_each"
37
+ end
38
+ page = self
39
+ loop do
40
+ page.data.each { |e| blk.call(e) }
41
+ break if !page.next_page?
42
+ page = page.next_page
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PageOffset
5
+ # @return [Array]
6
+ attr_accessor :data
7
+
8
+ # @return [Integer]
9
+ attr_accessor :offset
10
+
11
+ # @!visibility private
12
+ attr_accessor :client, :req, :opts
13
+
14
+ # @!visibility private
15
+ def initialize(model, raw_data, _response, client, req, opts)
16
+ self.data = (raw_data[:data] || []).map { |e| model.convert(e) }
17
+ self.offset = raw_data[:offset]
18
+ self.client = client
19
+ self.req = req
20
+ self.opts = opts
21
+ end
22
+
23
+ # @return [Boolean]
24
+ def next_page?
25
+ data.empty?
26
+ end
27
+
28
+ # @return [PageOffset]
29
+ def next_page
30
+ if !next_page?
31
+ raise "No more pages available; please check #next_page? before calling #next_page"
32
+ end
33
+ client.request(Util.deep_merge(req, {query: {offset: offset + data.size}}), opts)
34
+ end
35
+
36
+ # @return [nil]
37
+ def auto_paging_each(&blk)
38
+ if !blk
39
+ raise "A block must be given to #auto_paging_each"
40
+ end
41
+ page = self
42
+ loop do
43
+ page.data.each { |e| blk.call(e) }
44
+ break if !page.next_page?
45
+ page = page.next_page
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PageOffsetNoStartField
5
+ # @return [Array]
6
+ attr_accessor :data
7
+
8
+ # @!visibility private
9
+ attr_accessor :client, :req, :opts
10
+
11
+ # @!visibility private
12
+ def initialize(model, raw_data, _response, client, req, opts)
13
+ self.data = (raw_data[:data] || []).map { |e| model.convert(e) }
14
+ self.client = client
15
+ self.req = req
16
+ self.opts = opts
17
+ end
18
+
19
+ # @return [Boolean]
20
+ def next_page?
21
+ data.empty?
22
+ end
23
+
24
+ # @return [PageOffsetNoStartField]
25
+ def next_page
26
+ if !next_page?
27
+ raise "No more pages available; please check #next_page? before calling #next_page"
28
+ end
29
+ client.request(Util.deep_merge(req, {query: {offset: (opts[:params][:offset] || 0) + data.size}}), opts)
30
+ end
31
+
32
+ # @return [nil]
33
+ def auto_paging_each(&blk)
34
+ if !blk
35
+ raise "A block must be given to #auto_paging_each"
36
+ end
37
+ page = self
38
+ loop do
39
+ page.data.each { |e| blk.call(e) }
40
+ break if !page.next_page?
41
+ page = page.next_page
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PageOffsetTotalCount
5
+ # @return [Array]
6
+ attr_accessor :data
7
+
8
+ # @return [Integer]
9
+ attr_accessor :total_count
10
+
11
+ # @return [Integer]
12
+ attr_accessor :offset
13
+
14
+ # @!visibility private
15
+ attr_accessor :client, :req, :opts
16
+
17
+ # @!visibility private
18
+ def initialize(model, raw_data, _response, client, req, opts)
19
+ self.data = (raw_data[:data] || []).map { |e| model.convert(e) }
20
+ self.total_count = raw_data[:total_count]
21
+ self.offset = raw_data[:offset]
22
+ self.client = client
23
+ self.req = req
24
+ self.opts = opts
25
+ end
26
+
27
+ # @return [Boolean]
28
+ def next_page?
29
+ offset + data.size < total_count
30
+ end
31
+
32
+ # @return [PageOffsetTotalCount]
33
+ def next_page
34
+ if !next_page?
35
+ raise "No more pages available; please check #next_page? before calling #next_page"
36
+ end
37
+ client.request(Util.deep_merge(req, {query: {offset: offset + data.size}}), opts)
38
+ end
39
+
40
+ # @return [nil]
41
+ def auto_paging_each(&blk)
42
+ if !blk
43
+ raise "A block must be given to #auto_paging_each"
44
+ end
45
+ page = self
46
+ loop do
47
+ page.data.each { |e| blk.call(e) }
48
+ break if !page.next_page?
49
+ page = page.next_page
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PagePageNumber
5
+ # @return [Array]
6
+ attr_accessor :data
7
+
8
+ # @return [Integer]
9
+ attr_accessor :page
10
+
11
+ # @return [Integer]
12
+ attr_accessor :last_page
13
+
14
+ # @!visibility private
15
+ attr_accessor :client, :req, :opts
16
+
17
+ # @!visibility private
18
+ def initialize(model, raw_data, _response, client, req, opts)
19
+ self.data = (raw_data[:data] || []).map { |e| model.convert(e) }
20
+ self.page = raw_data[:page]
21
+ self.last_page = raw_data[:last_page]
22
+ self.client = client
23
+ self.req = req
24
+ self.opts = opts
25
+ end
26
+
27
+ # @return [Boolean]
28
+ def next_page?
29
+ !data.empty?
30
+ end
31
+
32
+ # @return [PagePageNumber]
33
+ def next_page
34
+ if !next_page?
35
+ raise "No more pages available; please check #next_page? before calling #next_page"
36
+ end
37
+ client.request(Util.deep_merge(req, {query: {page: (req[:query][:page] || 1) + 1}}), opts)
38
+ end
39
+
40
+ # @return [nil]
41
+ def auto_paging_each(&blk)
42
+ if !blk
43
+ raise "A block must be given to #auto_paging_each"
44
+ end
45
+ page = self
46
+ loop do
47
+ page.data.each { |e| blk.call(e) }
48
+ break if !page.next_page?
49
+ page = page.next_page
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ class PagePageNumberWithoutCurrentPageResponse
5
+ # @return [Array]
6
+ attr_accessor :data
7
+
8
+ # @!visibility private
9
+ attr_accessor :client, :req, :opts
10
+
11
+ # @!visibility private
12
+ def initialize(model, raw_data, _response, client, req, opts)
13
+ self.data = (raw_data[:data] || []).map { |e| model.convert(e) }
14
+ self.client = client
15
+ self.req = req
16
+ self.opts = opts
17
+ end
18
+
19
+ # @return [Boolean]
20
+ def next_page?
21
+ !data.empty?
22
+ end
23
+
24
+ # @return [PagePageNumberWithoutCurrentPageResponse]
25
+ def next_page
26
+ if !next_page?
27
+ raise "No more pages available; please check #next_page? before calling #next_page"
28
+ end
29
+ client.request(Util.deep_merge(req, {query: {page: (req[:query][:page] || 1) + 1}}), opts)
30
+ end
31
+
32
+ # @return [nil]
33
+ def auto_paging_each(&blk)
34
+ if !blk
35
+ raise "A block must be given to #auto_paging_each"
36
+ end
37
+ page = self
38
+ loop do
39
+ page.data.each { |e| blk.call(e) }
40
+ break if !page.next_page?
41
+ page = page.next_page
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ # @!visibility private
5
+ class PooledNetRequester
6
+ def initialize
7
+ @mutex = Mutex.new
8
+ @pools = {}
9
+ end
10
+
11
+ def get_pool(req)
12
+ hostname = req[:host]
13
+ scheme = req[:scheme]
14
+ port =
15
+ req[:port] ||
16
+ case scheme.to_sym
17
+ when :https
18
+ Net::HTTP.https_default_port
19
+ else
20
+ Net::HTTP.http_default_port
21
+ end
22
+ @mutex.synchronize do
23
+ @pools[hostname] ||= ConnectionPool.new do
24
+ conn = Net::HTTP.new(hostname, port)
25
+ conn.use_ssl = scheme.to_sym == :https
26
+ conn.start
27
+ conn
28
+ end
29
+ @pools[hostname]
30
+ end
31
+ end
32
+
33
+ def execute(req)
34
+ get_pool(req).with do |conn|
35
+ # Net can't understand posting to a URI representing only path + query,
36
+ # so we concatenate
37
+ uri_string = Sink::Util.uri_from_req(req, absolute: false)
38
+ case req[:method]
39
+ when :get
40
+ conn.get(uri_string, req[:headers])
41
+ when :patch
42
+ conn.patch(uri_string, req[:body], req[:headers])
43
+ when :put
44
+ conn.put(uri_string, req[:body], req[:headers])
45
+ when :post
46
+ conn.post(uri_string, req[:body], req[:headers])
47
+ # TODO: more verbs
48
+ when :delete
49
+ # `Net::HTTP`'s "convenience method" for delete doesn't accept a body
50
+ request = Net::HTTP::Delete.new(uri_string)
51
+ request.body = req[:body] if req[:body]
52
+ if req[:headers]
53
+ req[:headers].each { |k, v| request[k] = v }
54
+ end
55
+
56
+ conn.request(request)
57
+ else
58
+ raise NotImplementedError.new, req[:method]
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement or override those
5
+ # provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or simply pass a Hash
8
+ # with symbol keys matching the attributes on this class.
9
+ class RequestOptions
10
+ # @!visibility private
11
+ def self.options
12
+ @options ||= []
13
+ end
14
+
15
+ # @!visibility private
16
+ def self.option(name)
17
+ define_method(name) { @_values[name] }
18
+ define_method("#{name}=") { |val| @_values[name] = val }
19
+ options.push(name)
20
+ end
21
+
22
+ # Returns a new instance of RequestOptions.
23
+ #
24
+ # @param values [Hash{Symbol => Object}] initial option values to set on the instance.
25
+ def initialize(values = {})
26
+ @_values = values
27
+ end
28
+
29
+ # @!attribute idempotency_key
30
+ # Idempotency key to send with request and all associated retries. Will only be sent for write
31
+ # requests.
32
+ # @return [String]
33
+ option :idempotency_key
34
+
35
+ # @!attribute extra_headers
36
+ # Extra headers to send with the request. These are `.merged`’d into any `extra_headers` given at the
37
+ # client level.
38
+ # @return [Hash{String => String}]
39
+ option :extra_headers
40
+
41
+ # @!attribute extra_query
42
+ # Extra query params to send with the request. These are `.merge`’d into any `query` given at
43
+ # the client level.
44
+ # @return [Hash{Symbol => Object}]
45
+ option :extra_query
46
+
47
+ # @!attribute extra_body
48
+ # Extra data to send with the request. These are deep merged into any data generated as part
49
+ # of the normal request.
50
+ # @return [Hash{Symbol => Object}]
51
+ option :extra_body
52
+
53
+ # @!attribute max_retries
54
+ # Maximum number of retries to attempt after a failed initial request.
55
+ # @return [Integer]
56
+ option :max_retries
57
+
58
+ # Lookup an option previously set on this instance.
59
+ #
60
+ # @return [Object]
61
+ def [](key)
62
+ @_values[key]
63
+ end
64
+
65
+ # Return a Hash containing the options set on this instance.
66
+ #
67
+ # @return [Hash{Symbol => Object}]
68
+ def to_h
69
+ @_values
70
+ end
71
+
72
+ alias_method :to_hash, :to_h
73
+
74
+ # @return [String]
75
+ def inspect
76
+ "#<Sink::RequestOptions:0x#{object_id.to_s(16)} #{@_values.inspect}>"
77
+ end
78
+
79
+ # @return [String]
80
+ def to_s
81
+ @_values.to_s
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ module Resources
5
+ class BodyParams
6
+ class Objects
7
+ def initialize(client:)
8
+ @client = client
9
+ end
10
+
11
+ # Endpoint with an object `requestBody` that has a property that uses
12
+ # `additionalProperties: true` alongside defined properties
13
+ #
14
+ # @param params [Hash] Attributes to send in this request.
15
+ # @option params [MixedProp, nil] :mixed_prop
16
+ #
17
+ # @param opts [Hash, Sink::RequestOptions] Options to specify HTTP behaviour for this request.
18
+ #
19
+ # @return [nil]
20
+ def mixed_known_and_unknown(params = {}, opts = {})
21
+ req = {}
22
+ req[:method] = :post
23
+ req[:path] = "/body_params/objects/mixed_known_and_unknown"
24
+ req[:body] = params
25
+ req[:model] = NilClass
26
+ @client.request(req, opts)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sink
4
+ module Resources
5
+ class BodyParams
6
+ class Unions
7
+ def initialize(client:)
8
+ @client = client
9
+ end
10
+
11
+ # Defines a request parameter that is configured to generate a `NewType` type in
12
+ # Python and is used in a union type alongside an enum.
13
+ #
14
+ # @param params [Hash] Attributes to send in this request.
15
+ # @option params [String, Symbol, Model::UnnamedTypeWithunionParent13, nil] :model
16
+ #
17
+ # @param opts [Hash, Sink::RequestOptions] Options to specify HTTP behaviour for this request.
18
+ #
19
+ # @return [nil]
20
+ def param_union_enum_new_type(params = {}, opts = {})
21
+ req = {}
22
+ req[:method] = :post
23
+ req[:path] = "/body_params/unions/param_union_enum_new_type"
24
+ req[:body] = params
25
+ req[:model] = NilClass
26
+ @client.request(req, opts)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end