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.
- checksums.yaml +7 -0
- data/README.md +128 -0
- data/lib/sink/base_client.rb +383 -0
- data/lib/sink/base_model.rb +203 -0
- data/lib/sink/client.rb +381 -0
- data/lib/sink/fake_page.rb +39 -0
- data/lib/sink/models/allof_base_parent.rb +11 -0
- data/lib/sink/models/allof_multiple_inline_entries.rb +15 -0
- data/lib/sink/models/api_status.rb +11 -0
- data/lib/sink/models/array_float_items_response.rb +6 -0
- data/lib/sink/models/array_missing_items_response.rb +11 -0
- data/lib/sink/models/array_object_items.rb +11 -0
- data/lib/sink/models/array_object_items_response.rb +11 -0
- data/lib/sink/models/array_recursion.rb +6 -0
- data/lib/sink/models/balance.rb +11 -0
- data/lib/sink/models/basic_shared_model_object.rb +15 -0
- data/lib/sink/models/body_param_top_level_all_of_response.rb +20 -0
- data/lib/sink/models/body_param_union_overlapping_prop_response.rb +11 -0
- data/lib/sink/models/card.rb +144 -0
- data/lib/sink/models/card_list_response.rb +26 -0
- data/lib/sink/models/card_provision_foo_response.rb +11 -0
- data/lib/sink/models/child_inlined_response_response.rb +11 -0
- data/lib/sink/models/child_model.rb +21 -0
- data/lib/sink/models/class_.rb +11 -0
- data/lib/sink/models/client.rb +15 -0
- data/lib/sink/models/company.rb +11 -0
- data/lib/sink/models/company_payment.rb +11 -0
- data/lib/sink/models/complex_query_array_query_response.rb +22 -0
- data/lib/sink/models/config_tool_model_ref_from_nested_response_body_response.rb +17 -0
- data/lib/sink/models/currency.rb +23 -0
- data/lib/sink/models/decorator_test_keep_me_response.rb +11 -0
- data/lib/sink/models/docstring_leading_double_quote_response.rb +12 -0
- data/lib/sink/models/docstring_trailing_double_quote_response.rb +22 -0
- data/lib/sink/models/documents.rb +15 -0
- data/lib/sink/models/eeoc.rb +11 -0
- data/lib/sink/models/employment_data.rb +11 -0
- data/lib/sink/models/enum_basic_response.rb +51 -0
- data/lib/sink/models/export.rb +12 -0
- data/lib/sink/models/funding_account.rb +73 -0
- data/lib/sink/models/import.rb +11 -0
- data/lib/sink/models/interface.rb +11 -0
- data/lib/sink/models/keep_this_resource_keep_this_method_response.rb +11 -0
- data/lib/sink/models/make_ambiguous_schemas_explicit_make_ambiguous_schemas_explicit_response.rb +31 -0
- data/lib/sink/models/make_ambiguous_schemas_looser_make_ambiguous_schemas_looser_response.rb +31 -0
- data/lib/sink/models/map_nullable_items_response.rb +19 -0
- data/lib/sink/models/method_config_skipped_tests_all_response.rb +11 -0
- data/lib/sink/models/method_config_skipped_tests_go_response.rb +11 -0
- data/lib/sink/models/method_config_skipped_tests_java_response.rb +11 -0
- data/lib/sink/models/method_config_skipped_tests_kotlin_response.rb +11 -0
- data/lib/sink/models/method_config_skipped_tests_node_and_python_response.rb +11 -0
- data/lib/sink/models/method_config_skipped_tests_node_response.rb +11 -0
- data/lib/sink/models/method_config_skipped_tests_python_response.rb +11 -0
- data/lib/sink/models/method_config_skipped_tests_ruby_response.rb +11 -0
- data/lib/sink/models/model_from_nested_path.rb +30 -0
- data/lib/sink/models/model_from_nested_response_body_ref.rb +11 -0
- data/lib/sink/models/model_from_schemas_ref.rb +11 -0
- data/lib/sink/models/model_from_schemas_ref_openapi_uri.rb +11 -0
- data/lib/sink/models/model_from_schemas_ref_openapi_uri_jmespath.rb +11 -0
- data/lib/sink/models/model_from_schemas_ref_openapi_uri_jsonpath.rb +11 -0
- data/lib/sink/models/model_level_1.rb +15 -0
- data/lib/sink/models/model_level_2.rb +15 -0
- data/lib/sink/models/model_level_3.rb +15 -0
- data/lib/sink/models/model_referenced_in_parent_and_child.rb +11 -0
- data/lib/sink/models/model_with_nested_model.rb +16 -0
- data/lib/sink/models/my_model.rb +11 -0
- data/lib/sink/models/name_child_prop_import_clash_response.rb +21 -0
- data/lib/sink/models/name_properties_common_conflicts_response.rb +59 -0
- data/lib/sink/models/name_properties_illegal_javascript_identifiers_response.rb +6 -0
- data/lib/sink/models/name_response_property_clashes_model_import_response.rb +15 -0
- data/lib/sink/models/name_response_shadows_pydantic_response.rb +15 -0
- data/lib/sink/models/nested_request_model_a.rb +11 -0
- data/lib/sink/models/nested_request_model_b.rb +11 -0
- data/lib/sink/models/nested_request_model_c.rb +17 -0
- data/lib/sink/models/object_missing_items_response.rb +11 -0
- data/lib/sink/models/object_mixed_known_and_unknown_response.rb +11 -0
- data/lib/sink/models/object_multiple_array_properties_same_ref_response.rb +42 -0
- data/lib/sink/models/object_multiple_properties_same_model_response.rb +19 -0
- data/lib/sink/models/object_multiple_properties_same_ref_response.rb +37 -0
- data/lib/sink/models/object_skipped_props.rb +27 -0
- data/lib/sink/models/object_two_dimensional_array_primitive_property_response.rb +23 -0
- data/lib/sink/models/object_with_any_of_null_property.rb +17 -0
- data/lib/sink/models/object_with_child_ref.rb +15 -0
- data/lib/sink/models/object_with_one_of_null_property.rb +17 -0
- data/lib/sink/models/object_with_union_properties.rb +15 -0
- data/lib/sink/models/openapi_format_array_type_one_entry_response.rb +11 -0
- data/lib/sink/models/openapi_format_array_type_one_entry_with_null_response.rb +11 -0
- data/lib/sink/models/openapi_special_used_used_as_property_name_response.rb +11 -0
- data/lib/sink/models/page_cursor_shared_ref_pagination.rb +15 -0
- data/lib/sink/models/parent_model_with_child_ref.rb +19 -0
- data/lib/sink/models/path_param_colon_suffix_response.rb +11 -0
- data/lib/sink/models/path_param_file_extension_response.rb +11 -0
- data/lib/sink/models/path_param_multiple_response.rb +11 -0
- data/lib/sink/models/path_param_query_param_response.rb +11 -0
- data/lib/sink/models/path_param_singular_response.rb +11 -0
- data/lib/sink/models/primitive_strings_response.rb +11 -0
- data/lib/sink/models/private.rb +11 -0
- data/lib/sink/models/public.rb +11 -0
- data/lib/sink/models/recursion_create_envelope_response.rb +11 -0
- data/lib/sink/models/response_allof_simple_response.rb +15 -0
- data/lib/sink/models/response_array_object_with_union_properties_response.rb +6 -0
- data/lib/sink/models/response_array_response_response.rb +6 -0
- data/lib/sink/models/response_missing_required_response.rb +15 -0
- data/lib/sink/models/response_nested_array_response.rb +21 -0
- data/lib/sink/models/response_object_all_properties_response.rb +49 -0
- data/lib/sink/models/response_object_no_properties_response.rb +8 -0
- data/lib/sink/models/response_object_with_additional_properties_prop_response.rb +17 -0
- data/lib/sink/models/response_object_with_heavily_nested_union_response.rb +11 -0
- data/lib/sink/models/response_only_read_only_properties_response.rb +16 -0
- data/lib/sink/models/responses_allof_cross_object.rb +15 -0
- data/lib/sink/models/return_.rb +11 -0
- data/lib/sink/models/root_response.rb +19 -0
- data/lib/sink/models/self_recursion.rb +15 -0
- data/lib/sink/models/shared_cursor_nested_response_prop_meta.rb +18 -0
- data/lib/sink/models/shared_self_recursion.rb +15 -0
- data/lib/sink/models/shipping_address.rb +62 -0
- data/lib/sink/models/simple_allof.rb +20 -0
- data/lib/sink/models/simple_object.rb +19 -0
- data/lib/sink/models/skip_this_resource_i_never_appear_response.rb +11 -0
- data/lib/sink/models/streaming_basic_response.rb +15 -0
- data/lib/sink/models/streaming_nested_params_response.rb +15 -0
- data/lib/sink/models/streaming_no_discriminator_response.rb +15 -0
- data/lib/sink/models/streaming_query_param_discriminator_response.rb +15 -0
- data/lib/sink/models/streaming_with_unrelated_default_param_response.rb +15 -0
- data/lib/sink/models/type_dates_response.rb +27 -0
- data/lib/sink/models/type_datetimes_response.rb +27 -0
- data/lib/sink/models/union_discriminated_variant_a.rb +19 -0
- data/lib/sink/models/union_discriminated_variant_b.rb +19 -0
- data/lib/sink/models/union_response_discriminated_by_property_name_response.rb +6 -0
- data/lib/sink/models/union_response_discriminated_with_basic_mapping_response.rb +6 -0
- data/lib/sink/models/union_type_mixed_types_response.rb +6 -0
- data/lib/sink/models/union_type_nullable_union_response.rb +6 -0
- data/lib/sink/models/union_type_objects_response.rb +6 -0
- data/lib/sink/models/union_type_super_mixed_types_response.rb +6 -0
- data/lib/sink/models/union_type_unknown_variant_response.rb +6 -0
- data/lib/sink/models/version_1_30_name_create_response.rb +11 -0
- data/lib/sink/models/widget.rb +12 -0
- data/lib/sink/models/write_only_response_simple_response.rb +12 -0
- data/lib/sink/page_cursor.rb +49 -0
- data/lib/sink/page_cursor_from_headers.rb +49 -0
- data/lib/sink/page_cursor_id.rb +45 -0
- data/lib/sink/page_cursor_nested_items.rb +65 -0
- data/lib/sink/page_cursor_nested_object_ref.rb +59 -0
- data/lib/sink/page_cursor_shared_ref.rb +59 -0
- data/lib/sink/page_cursor_top_level_array.rb +46 -0
- data/lib/sink/page_cursor_url.rb +46 -0
- data/lib/sink/page_offset.rb +49 -0
- data/lib/sink/page_offset_no_start_field.rb +45 -0
- data/lib/sink/page_offset_total_count.rb +53 -0
- data/lib/sink/page_page_number.rb +53 -0
- data/lib/sink/page_page_number_without_current_page_response.rb +45 -0
- data/lib/sink/pooled_net_requester.rb +63 -0
- data/lib/sink/request_options.rb +84 -0
- data/lib/sink/resources/body_params/objects.rb +31 -0
- data/lib/sink/resources/body_params/unions.rb +31 -0
- data/lib/sink/resources/body_params.rb +475 -0
- data/lib/sink/resources/cards.rb +488 -0
- data/lib/sink/resources/casing/eeoc.rb +32 -0
- data/lib/sink/resources/casing.rb +15 -0
- data/lib/sink/resources/clients.rb +27 -0
- data/lib/sink/resources/company/payments.rb +28 -0
- data/lib/sink/resources/company.rb +17 -0
- data/lib/sink/resources/complex_queries.rb +56 -0
- data/lib/sink/resources/config_tools/parent_with_skip_node_python/child_only_skip_python.rb +96 -0
- data/lib/sink/resources/config_tools/parent_with_skip_node_python.rb +98 -0
- data/lib/sink/resources/config_tools.rb +37 -0
- data/lib/sink/resources/decorator_tests/keep_this_resource.rb +27 -0
- data/lib/sink/resources/decorator_tests/languages.rb +55 -0
- data/lib/sink/resources/decorator_tests/skip_this_resource.rb +26 -0
- data/lib/sink/resources/decorator_tests.rb +36 -0
- data/lib/sink/resources/deeply_nested/level_one/level_two/level_three.rb +31 -0
- data/lib/sink/resources/deeply_nested/level_one/level_two.rb +33 -0
- data/lib/sink/resources/deeply_nested/level_one.rb +31 -0
- data/lib/sink/resources/deeply_nested.rb +15 -0
- data/lib/sink/resources/docstrings.rb +77 -0
- data/lib/sink/resources/empty_body.rb +55 -0
- data/lib/sink/resources/header_params.rb +33 -0
- data/lib/sink/resources/invalid_schemas/arrays.rb +24 -0
- data/lib/sink/resources/invalid_schemas/objects.rb +24 -0
- data/lib/sink/resources/invalid_schemas.rb +19 -0
- data/lib/sink/resources/make_ambiguous_schemas_explicit.rb +24 -0
- data/lib/sink/resources/make_ambiguous_schemas_looser.rb +24 -0
- data/lib/sink/resources/method_config.rb +156 -0
- data/lib/sink/resources/mixed_params/duplicates.rb +73 -0
- data/lib/sink/resources/mixed_params.rb +81 -0
- data/lib/sink/resources/model_referenced_in_parent_and_child/child.rb +24 -0
- data/lib/sink/resources/model_referenced_in_parent_and_child.rb +26 -0
- data/lib/sink/resources/names/can_cause_clashes/employment_data.rb +15 -0
- data/lib/sink/resources/names/can_cause_clashes/response.rb +30 -0
- data/lib/sink/resources/names/can_cause_clashes.rb +22 -0
- data/lib/sink/resources/names/documents.rb +26 -0
- data/lib/sink/resources/names/openapi_specials.rb +24 -0
- data/lib/sink/resources/names/params.rb +47 -0
- data/lib/sink/resources/names/reserved_names/import.rb +29 -0
- data/lib/sink/resources/names/reserved_names/methods.rb +37 -0
- data/lib/sink/resources/names/reserved_names/public/class_.rb +28 -0
- data/lib/sink/resources/names/reserved_names/public/interface.rb +28 -0
- data/lib/sink/resources/names/reserved_names/public/private.rb +28 -0
- data/lib/sink/resources/names/reserved_names/public.rb +38 -0
- data/lib/sink/resources/names/reserved_names.rb +43 -0
- data/lib/sink/resources/names.rb +139 -0
- data/lib/sink/resources/openapi_formats.rb +48 -0
- data/lib/sink/resources/pagination_tests/cursor.rb +32 -0
- data/lib/sink/resources/pagination_tests/items_types.rb +32 -0
- data/lib/sink/resources/pagination_tests/nested_items.rb +32 -0
- data/lib/sink/resources/pagination_tests/offset.rb +70 -0
- data/lib/sink/resources/pagination_tests/schema_types.rb +51 -0
- data/lib/sink/resources/pagination_tests.rb +31 -0
- data/lib/sink/resources/parent/child.rb +28 -0
- data/lib/sink/resources/parent.rb +17 -0
- data/lib/sink/resources/path_params.rb +196 -0
- data/lib/sink/resources/positional_params.rb +219 -0
- data/lib/sink/resources/query_params.rb +157 -0
- data/lib/sink/resources/recursion/shared_responses.rb +24 -0
- data/lib/sink/resources/recursion.rb +61 -0
- data/lib/sink/resources/resource_refs/paginated_model_first_ref.rb +13 -0
- data/lib/sink/resources/resource_refs/paginated_model_second_ref.rb +13 -0
- data/lib/sink/resources/resource_refs/parent/child.rb +29 -0
- data/lib/sink/resources/resource_refs/parent.rb +30 -0
- data/lib/sink/resources/resource_refs.rb +23 -0
- data/lib/sink/resources/resources.rb +24 -0
- data/lib/sink/resources/responses/union_types.rb +91 -0
- data/lib/sink/resources/responses.rb +297 -0
- data/lib/sink/resources/shared_query_params.rb +45 -0
- data/lib/sink/resources/streaming.rb +96 -0
- data/lib/sink/resources/testing.rb +22 -0
- data/lib/sink/resources/tests.rb +24 -0
- data/lib/sink/resources/tools.rb +30 -0
- data/lib/sink/resources/types/allofs.rb +13 -0
- data/lib/sink/resources/types/arrays.rb +57 -0
- data/lib/sink/resources/types/enums.rb +86 -0
- data/lib/sink/resources/types/maps.rb +27 -0
- data/lib/sink/resources/types/objects.rb +98 -0
- data/lib/sink/resources/types/primitives.rb +31 -0
- data/lib/sink/resources/types/read_only_params.rb +31 -0
- data/lib/sink/resources/types/unions.rb +115 -0
- data/lib/sink/resources/types/write_only_responses.rb +26 -0
- data/lib/sink/resources/types.rb +90 -0
- data/lib/sink/resources/undocumented_resource.rb +44 -0
- data/lib/sink/resources/version_1_30_names.rb +38 -0
- data/lib/sink/resources/widgets.rb +28 -0
- data/lib/sink/util.rb +78 -0
- data/lib/sink/version.rb +5 -0
- data/lib/sink.rb +253 -0
- 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
|