diff --git a/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_typed.mustache b/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_typed.mustache index d5419ffac53c..20c539380ed6 100644 --- a/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_typed.mustache +++ b/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_typed.mustache @@ -43,7 +43,7 @@ class {{classname}} { {{#hasFormParams}} final _bodyMap = { {{#formParams}} - {{^required}}if ({{{paramName}}} != null) {{/required}}r'{{{baseName}}}': await encodeFormParameter(_repository, {{{paramName}}}, {{>types/recursion_type_info}}), + {{^required}}if ({{{paramName}}} != null) {{/required}}r'{{{baseName}}}': encodeFormParameter(_repository, {{{paramName}}}, {{>types/recursion_type_info}}), {{/formParams}} }; {{#isMultipart}} @@ -60,9 +60,9 @@ class {{classname}} { final _response = await rawApi.{{nickname}}( {{#allParams}}{{#isPathParam}} - {{paramName}}: await encodeStringParameter(_repository, {{paramName}}, {{>types/recursion_type_info}}),{{/isPathParam}}{{#isQueryParam}} - {{paramName}}: await encodeQueryParameter(_repository, {{paramName}}, {{>types/recursion_type_info}}, {{#collectionFormat}}format: ListFormat.{{.}},{{/collectionFormat}}),{{/isQueryParam}}{{#isHeaderParam}} - {{paramName}}: await encodeStringParameter(_repository, {{paramName}}, {{>types/recursion_type_info}}), {{/isHeaderParam}}{{/allParams}} + {{paramName}}: encodeStringParameter(_repository, {{paramName}}, {{>types/recursion_type_info}},){{^isNullable}}!{{/isNullable}},{{/isPathParam}}{{#isQueryParam}} + {{paramName}}: encodeQueryParameter(_repository, {{paramName}}, {{>types/recursion_type_info}}, {{#collectionFormat}}format: ListFormat.{{.}},{{/collectionFormat}}){{^isNullable}}!{{/isNullable}},{{/isQueryParam}}{{#isHeaderParam}} + {{paramName}}: encodeStringParameter(_repository, {{paramName}}, {{>types/recursion_type_info}},){{^isNullable}}!{{/isNullable}}, {{/isHeaderParam}}{{/allParams}} {{#hasConsumes}} body: _bodyData, requestContentType: '{{#prioritizedContentTypes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/prioritizedContentTypes}}',{{/hasConsumes}} diff --git a/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_util.mustache b/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_util.mustache index e6357fd191b6..098c036b7446 100644 --- a/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_util.mustache +++ b/modules/openapi-generator/src/main/resources/dart-next/libraries/dio/api_util.mustache @@ -1,27 +1,27 @@ -import 'package:dio/dio.dart'; import 'dart:async'; -import 'dart:convert'; -import 'package:openapi/models.dart'; import 'dart:typed_data'; +import 'package:dio/dio.dart'; +import 'package:{{pubName}}/models.dart'; + /// Format the given form parameter object into something that Dio can handle. -Future encodeFormParameter( +Object? encodeFormParameter( SerializationRepositoryBase repository, T value, TypeInfo type, -) async { +) { return repository.serialize( value, type, ); } -Future encodeStringParameter( +String? encodeStringParameter( SerializationRepositoryBase repository, T value, TypeInfo type, -) async { - return (await repository.serialize(value, type)).toString(); +) { + return repository.serialize(value, type).toString(); } Future encodeBodyParameter( @@ -29,18 +29,18 @@ Future encodeBodyParameter( T value, TypeInfo type, ) async { - return await repository.serialize( + return await repository.serializeAsync( value, type, ); } -Future encodeQueryParameter( +Object? encodeQueryParameter( SerializationRepositoryBase repository, T value, TypeInfo type, { ListFormat format = ListFormat.multi, -}) async { +}) { if (value == null) { return null; } @@ -58,13 +58,13 @@ Future encodeQueryParameter( return serialized; } -Future> encodeCollectionQueryParameter( +ListParam encodeCollectionQueryParameter( SerializationRepositoryBase repository, Iterable value, TypeInfo type, { ListFormat format = ListFormat.multi, -}) async { - final serialized = await repository.serialize( +}) { + final serialized = repository.serialize( value, type, ); @@ -78,5 +78,5 @@ Future> encodeCollectionQueryParameter( } Future decodeResponse(SerializationRepositoryBase repository, TInput value, TypeInfo type) async { - return await repository.deserialize(value, type); -} \ No newline at end of file + return await repository.deserializeAsync(value, type); +} diff --git a/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/repository_impl.mustache b/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/repository_impl.mustache index 2c7beee1e417..bcab946b42cf 100644 --- a/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/repository_impl.mustache +++ b/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/repository_impl.mustache @@ -25,7 +25,7 @@ class BuiltValueJsonRepository extends SerializationRepositoryBase { const BuiltValueJsonRepository(this.serializers); @override - FutureOr deserialize(Object? value, TypeInfo targetTypeInfo, {Object? context}) { + T deserialize(Object? value, TypeInfo targetTypeInfo, {Object? context}) { if (value is T) { return value; } @@ -36,7 +36,7 @@ class BuiltValueJsonRepository extends SerializationRepositoryBase { } @override - FutureOr serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { + Object? serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { if (src == null) { return null; } diff --git a/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/variable_builder_type.mustache b/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/variable_builder_type.mustache index 87e6197af25f..cc3921a7ac9b 100644 --- a/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/variable_builder_type.mustache +++ b/modules/openapi-generator/src/main/resources/dart-next/serialization/built_value/variable_builder_type.mustache @@ -1 +1 @@ -{{#isContainer}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}{{#isMap}}Map{{/isMap}}Builder<{{#isMap}}String, {{/isMap}}{{#items}}{{>types/recursion_type}}{{/items}}>{{/isContainer}}{{^isContainer}}{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{dataType}}}{{/datatypeWithEnum}}{{/isContainer}}{{#isNullable}}?{{/isNullable}} \ No newline at end of file +{{#isContainer}}{{#isArray}}{{#uniqueItems}}Set{{/uniqueItems}}{{^uniqueItems}}List{{/uniqueItems}}{{/isArray}}{{#isMap}}Map{{/isMap}}Builder<{{#isMap}}String, {{/isMap}}{{#items}}{{>types/recursion_type}}{{/items}}>{{/isContainer}}{{^isContainer}}{{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{{dataType}}}{{/datatypeWithEnum}}(){{/isContainer}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/dart-next/serialization/json_serializable/repository_impl.mustache b/modules/openapi-generator/src/main/resources/dart-next/serialization/json_serializable/repository_impl.mustache index 85b20e8b3ae3..84188858f186 100644 --- a/modules/openapi-generator/src/main/resources/dart-next/serialization/json_serializable/repository_impl.mustache +++ b/modules/openapi-generator/src/main/resources/dart-next/serialization/json_serializable/repository_impl.mustache @@ -9,7 +9,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase { /// Transforms an object of arbitrary type [T] (whose information is passed in inputTypeInfo) to a dart primitive @override - FutureOr serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { + Object? serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { if (src == null) { return null; } @@ -43,10 +43,10 @@ class JsonSerializableRepository extends SerializationRepositoryBase { return context(src); } - try { + try { return (src as dynamic).toJson(); } on NoSuchMethodError { - assert(false, + assert(false, ''' Failed to serialize the object properly, falling back to `toString()` '''); @@ -60,7 +60,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase { //Don't rely on T being accurate here, since it won't get passed for generic arguments. if (value == null) { return null as T; - } + } final targetRootType = targetTypeInfo.root; if (targetRootType == T) { //short circuit if we already have the output as the input @@ -103,7 +103,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase { {{#models}} {{#model}} case {{{classname}}}: - {{#isEnum}} + {{#isEnum}} //TODO: find a way to support enums return value as T; {{/isEnum}} @@ -116,7 +116,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase { if (value is T) { return value; } - throw Exception('Cannot deserialize'); - } + throw Exception('Cannot deserialize'); + } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/dart-next/serialization/repository_base.mustache b/modules/openapi-generator/src/main/resources/dart-next/serialization/repository_base.mustache index fa1f81f13c5b..beab7ee38566 100644 --- a/modules/openapi-generator/src/main/resources/dart-next/serialization/repository_base.mustache +++ b/modules/openapi-generator/src/main/resources/dart-next/serialization/repository_base.mustache @@ -8,8 +8,29 @@ import 'dart:async'; abstract class SerializationRepositoryBase { const SerializationRepositoryBase(); - FutureOr serialize(T src, TypeInfo inputTypeInfo, {Object? context,}); - FutureOr deserialize(Object? value, TypeInfo targetTypeInfo, {Object? context,}); + Object? serialize( + T src, + TypeInfo inputTypeInfo, { + Object? context, + }); + + T deserialize( + Object? value, + TypeInfo targetTypeInfo, { + Object? context, + }); + + Future serializeAsync( + T src, + TypeInfo inputTypeInfo, { + Object? context, + }) async => serialize(src, inputTypeInfo, context: context); + + Future deserializeAsync( + Object? value, + TypeInfo targetTypeInfo, { + Object? context, + }) async => deserialize(value, targetTypeInfo, context: context); } /// A modified version of `built_value`'s `FullType` class, found here diff --git a/samples/client/echo_api/dart/dio/built_value/.openapi-generator/FILES b/samples/client/echo_api/dart/dio/built_value/.openapi-generator/FILES index 18008f8208c3..58cb7a2275e9 100644 --- a/samples/client/echo_api/dart/dio/built_value/.openapi-generator/FILES +++ b/samples/client/echo_api/dart/dio/built_value/.openapi-generator/FILES @@ -236,112 +236,3 @@ lib/src/repository_base.dart lib/src/repository_impl.dart lib/src/serializers.dart pubspec.yaml -test/additional_properties_class_test.dart -test/addressable_test.dart -test/all_of_with_single_ref_test.dart -test/animal_test.dart -test/another_fake_api_test.dart -test/api_response_test.dart -test/apple_all_of_disc_test.dart -test/apple_grandparent_disc_test.dart -test/apple_one_of_disc_test.dart -test/apple_req_disc_test.dart -test/apple_test.dart -test/apple_variant1_test.dart -test/array_of_array_of_number_only_test.dart -test/array_of_number_only_test.dart -test/array_test_test.dart -test/banana_all_of_disc_test.dart -test/banana_grandparent_disc_test.dart -test/banana_one_of_disc_test.dart -test/banana_req_disc_test.dart -test/banana_test.dart -test/bar_api_test.dart -test/bar_create_test.dart -test/bar_ref_or_value_test.dart -test/bar_ref_test.dart -test/bar_test.dart -test/capitalization_test.dart -test/cat_test.dart -test/category_test.dart -test/class_model_test.dart -test/composed_disc_missing_from_properties_test.dart -test/composed_disc_optional_type_correct_test.dart -test/composed_disc_optional_type_inconsistent_test.dart -test/composed_disc_optional_type_incorrect_test.dart -test/composed_disc_required_inconsistent_test.dart -test/composed_disc_type_inconsistent_test.dart -test/composed_disc_type_incorrect_test.dart -test/default_api_test.dart -test/deprecated_object_test.dart -test/disc_missing_from_properties_test.dart -test/disc_optional_type_correct_test.dart -test/disc_optional_type_incorrect_test.dart -test/disc_type_incorrect_test.dart -test/dog_test.dart -test/entity_ref_test.dart -test/entity_test.dart -test/enum_arrays_test.dart -test/enum_test_test.dart -test/extensible_test.dart -test/fake_api_test.dart -test/fake_classname_tags123_api_test.dart -test/file_schema_test_class_test.dart -test/foo_api_test.dart -test/foo_basic_get_default_response_test.dart -test/foo_ref_or_value_test.dart -test/foo_ref_test.dart -test/foo_test.dart -test/format_test_test.dart -test/fruit_all_of_disc_test.dart -test/fruit_any_of_disc_test.dart -test/fruit_grandparent_disc_test.dart -test/fruit_inline_disc_one_of1_test.dart -test/fruit_inline_disc_one_of_test.dart -test/fruit_inline_disc_test.dart -test/fruit_inline_inline_disc_one_of1_test.dart -test/fruit_inline_inline_disc_one_of_one_of_test.dart -test/fruit_inline_inline_disc_one_of_test.dart -test/fruit_inline_inline_disc_test.dart -test/fruit_one_of_disc_test.dart -test/fruit_req_disc_test.dart -test/fruit_test.dart -test/fruit_type_test.dart -test/fruit_variant1_test.dart -test/giga_one_of_test.dart -test/grape_variant1_test.dart -test/has_only_read_only_test.dart -test/health_check_result_test.dart -test/map_test_test.dart -test/mixed_properties_and_additional_properties_class_test.dart -test/model200_response_test.dart -test/model_client_test.dart -test/model_enum_class_test.dart -test/model_file_test.dart -test/model_list_test.dart -test/model_return_test.dart -test/name_test.dart -test/nullable_class_test.dart -test/number_only_test.dart -test/object_with_deprecated_fields_test.dart -test/one_of_primitive_child_test.dart -test/order_test.dart -test/outer_composite_test.dart -test/outer_enum_default_value_test.dart -test/outer_enum_integer_default_value_test.dart -test/outer_enum_integer_test.dart -test/outer_enum_test.dart -test/outer_object_with_enum_property_test.dart -test/parent_test.dart -test/pasta_test.dart -test/pet_api_test.dart -test/pet_test.dart -test/pizza_speziale_test.dart -test/pizza_test.dart -test/read_only_first_test.dart -test/single_ref_type_test.dart -test/special_model_name_test.dart -test/store_api_test.dart -test/tag_test.dart -test/user_api_test.dart -test/user_test.dart diff --git a/samples/client/echo_api/dart/dio/built_value/lib/src/api/fake_api.dart b/samples/client/echo_api/dart/dio/built_value/lib/src/api/fake_api.dart index 0f374540241a..c8450797789d 100644 --- a/samples/client/echo_api/dart/dio/built_value/lib/src/api/fake_api.dart +++ b/samples/client/echo_api/dart/dio/built_value/lib/src/api/fake_api.dart @@ -134,21 +134,21 @@ class FakeApi { ); final _response = await rawApi.fakeHttpSignatureTest( - - query1: await encodeQueryParameter(_repository, query1, const TypeInfo( + + query1: encodeQueryParameter(_repository, query1, const TypeInfo( String ) -, ), - header1: await encodeStringParameter(_repository, header1, const TypeInfo( +, )!, + header1: encodeStringParameter(_repository, header1, const TypeInfo( String ) -), +,)!, body: _bodyData, requestContentType: 'application/json', cancelToken: cancelToken, @@ -676,14 +676,14 @@ class FakeApi { ); final _response = await rawApi.testBodyWithQueryParams( - - query: await encodeQueryParameter(_repository, query, const TypeInfo( + + query: encodeQueryParameter(_repository, query, const TypeInfo( String ) -, ), +, )!, body: _bodyData, requestContentType: 'application/json', cancelToken: cancelToken, @@ -825,98 +825,98 @@ class FakeApi { }) async { Object? _bodyData; final _bodyMap = { - if (integer != null) r'integer': await encodeFormParameter(_repository, integer, const TypeInfo( + if (integer != null) r'integer': encodeFormParameter(_repository, integer, const TypeInfo( int ) ), - if (int32 != null) r'int32': await encodeFormParameter(_repository, int32, const TypeInfo( + if (int32 != null) r'int32': encodeFormParameter(_repository, int32, const TypeInfo( int ) ), - if (int64 != null) r'int64': await encodeFormParameter(_repository, int64, const TypeInfo( + if (int64 != null) r'int64': encodeFormParameter(_repository, int64, const TypeInfo( int ) ), - r'number': await encodeFormParameter(_repository, number, const TypeInfo( + r'number': encodeFormParameter(_repository, number, const TypeInfo( num ) ), - if (float != null) r'float': await encodeFormParameter(_repository, float, const TypeInfo( + if (float != null) r'float': encodeFormParameter(_repository, float, const TypeInfo( double ) ), - r'double': await encodeFormParameter(_repository, double_, const TypeInfo( + r'double': encodeFormParameter(_repository, double_, const TypeInfo( double ) ), - if (string != null) r'string': await encodeFormParameter(_repository, string, const TypeInfo( + if (string != null) r'string': encodeFormParameter(_repository, string, const TypeInfo( String ) ), - r'pattern_without_delimiter': await encodeFormParameter(_repository, patternWithoutDelimiter, const TypeInfo( + r'pattern_without_delimiter': encodeFormParameter(_repository, patternWithoutDelimiter, const TypeInfo( String ) ), - r'byte': await encodeFormParameter(_repository, byte, const TypeInfo( + r'byte': encodeFormParameter(_repository, byte, const TypeInfo( String ) ), - if (binary != null) r'binary': await encodeFormParameter(_repository, binary, const TypeInfo( + if (binary != null) r'binary': encodeFormParameter(_repository, binary, const TypeInfo( Uint8List ) ), - if (date != null) r'date': await encodeFormParameter(_repository, date, const TypeInfo( + if (date != null) r'date': encodeFormParameter(_repository, date, const TypeInfo( Date ) ), - if (dateTime != null) r'dateTime': await encodeFormParameter(_repository, dateTime, const TypeInfo( + if (dateTime != null) r'dateTime': encodeFormParameter(_repository, dateTime, const TypeInfo( DateTime ) ), - if (password != null) r'password': await encodeFormParameter(_repository, password, const TypeInfo( + if (password != null) r'password': encodeFormParameter(_repository, password, const TypeInfo( String ) ), - if (callback != null) r'callback': await encodeFormParameter(_repository, callback, const TypeInfo( + if (callback != null) r'callback': encodeFormParameter(_repository, callback, const TypeInfo( String @@ -982,7 +982,7 @@ class FakeApi { }) async { Object? _bodyData; final _bodyMap = { - if (enumFormStringArray != null) r'enum_form_string_array': await encodeFormParameter(_repository, enumFormStringArray, const TypeInfo( + if (enumFormStringArray != null) r'enum_form_string_array': encodeFormParameter(_repository, enumFormStringArray, const TypeInfo( BuiltList, [ const TypeInfo( @@ -995,7 +995,7 @@ class FakeApi { ]) ), - if (enumFormString != null) r'enum_form_string': await encodeFormParameter(_repository, enumFormString, const TypeInfo( + if (enumFormString != null) r'enum_form_string': encodeFormParameter(_repository, enumFormString, const TypeInfo( EnumFormStringEnum @@ -1007,7 +1007,7 @@ class FakeApi { final _response = await rawApi.testEnumParameters( - enumHeaderStringArray: await encodeStringParameter(_repository, enumHeaderStringArray, const TypeInfo( + enumHeaderStringArray: encodeStringParameter(_repository, enumHeaderStringArray, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1019,15 +1019,15 @@ class FakeApi { , ]) -), - enumHeaderString: await encodeStringParameter(_repository, enumHeaderString, const TypeInfo( +,)!, + enumHeaderString: encodeStringParameter(_repository, enumHeaderString, const TypeInfo( EnumHeaderStringEnum ) -), - enumQueryStringArray: await encodeQueryParameter(_repository, enumQueryStringArray, const TypeInfo( +,)!, + enumQueryStringArray: encodeQueryParameter(_repository, enumQueryStringArray, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1039,29 +1039,29 @@ class FakeApi { , ]) -, format: ListFormat.multi,), - enumQueryString: await encodeQueryParameter(_repository, enumQueryString, const TypeInfo( +, format: ListFormat.multi,)!, + enumQueryString: encodeQueryParameter(_repository, enumQueryString, const TypeInfo( EnumQueryStringEnum ) -, ), - enumQueryInteger: await encodeQueryParameter(_repository, enumQueryInteger, const TypeInfo( +, )!, + enumQueryInteger: encodeQueryParameter(_repository, enumQueryInteger, const TypeInfo( EnumQueryIntegerEnum ) -, ), - enumQueryDouble: await encodeQueryParameter(_repository, enumQueryDouble, const TypeInfo( +, )!, + enumQueryDouble: encodeQueryParameter(_repository, enumQueryDouble, const TypeInfo( EnumQueryDoubleEnum ) -, ), - enumQueryModelArray: await encodeQueryParameter(_repository, enumQueryModelArray, const TypeInfo( +, )!, + enumQueryModelArray: encodeQueryParameter(_repository, enumQueryModelArray, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1073,7 +1073,7 @@ class FakeApi { , ]) -, format: ListFormat.multi,), +, format: ListFormat.multi,)!, body: _bodyData, requestContentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, @@ -1122,49 +1122,49 @@ class FakeApi { }) async { final _response = await rawApi.testGroupParameters( - - requiredStringGroup: await encodeQueryParameter(_repository, requiredStringGroup, const TypeInfo( + + requiredStringGroup: encodeQueryParameter(_repository, requiredStringGroup, const TypeInfo( int ) -, ), - requiredBooleanGroup: await encodeStringParameter(_repository, requiredBooleanGroup, const TypeInfo( +, )!, + requiredBooleanGroup: encodeStringParameter(_repository, requiredBooleanGroup, const TypeInfo( bool ) -), - requiredInt64Group: await encodeQueryParameter(_repository, requiredInt64Group, const TypeInfo( +,)!, + requiredInt64Group: encodeQueryParameter(_repository, requiredInt64Group, const TypeInfo( int ) -, ), - stringGroup: await encodeQueryParameter(_repository, stringGroup, const TypeInfo( +, )!, + stringGroup: encodeQueryParameter(_repository, stringGroup, const TypeInfo( int ) -, ), - booleanGroup: await encodeStringParameter(_repository, booleanGroup, const TypeInfo( +, )!, + booleanGroup: encodeStringParameter(_repository, booleanGroup, const TypeInfo( bool ) -), - int64Group: await encodeQueryParameter(_repository, int64Group, const TypeInfo( +,)!, + int64Group: encodeQueryParameter(_repository, int64Group, const TypeInfo( int ) -, ), +, )!, cancelToken: cancelToken, headers: headers, @@ -1257,14 +1257,14 @@ class FakeApi { }) async { Object? _bodyData; final _bodyMap = { - r'param': await encodeFormParameter(_repository, param, const TypeInfo( + r'param': encodeFormParameter(_repository, param, const TypeInfo( String ) ), - r'param2': await encodeFormParameter(_repository, param2, const TypeInfo( + r'param2': encodeFormParameter(_repository, param2, const TypeInfo( String @@ -1326,8 +1326,8 @@ class FakeApi { }) async { final _response = await rawApi.testQueryParameterCollectionFormat( - - pipe: await encodeQueryParameter(_repository, pipe, const TypeInfo( + + pipe: encodeQueryParameter(_repository, pipe, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1339,8 +1339,8 @@ class FakeApi { , ]) -, format: ListFormat.pipes,), - ioutil: await encodeQueryParameter(_repository, ioutil, const TypeInfo( +, format: ListFormat.pipes,)!, + ioutil: encodeQueryParameter(_repository, ioutil, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1352,8 +1352,8 @@ class FakeApi { , ]) -, format: ListFormat.csv,), - http: await encodeQueryParameter(_repository, http, const TypeInfo( +, format: ListFormat.csv,)!, + http: encodeQueryParameter(_repository, http, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1365,8 +1365,8 @@ class FakeApi { , ]) -, format: ListFormat.ssv,), - url: await encodeQueryParameter(_repository, url, const TypeInfo( +, format: ListFormat.ssv,)!, + url: encodeQueryParameter(_repository, url, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1378,8 +1378,8 @@ class FakeApi { , ]) -, format: ListFormat.csv,), - context: await encodeQueryParameter(_repository, context, const TypeInfo( +, format: ListFormat.csv,)!, + context: encodeQueryParameter(_repository, context, const TypeInfo( BuiltList, [ const TypeInfo( @@ -1391,15 +1391,15 @@ class FakeApi { , ]) -, format: ListFormat.multi,), - allowEmpty: await encodeQueryParameter(_repository, allowEmpty, const TypeInfo( +, format: ListFormat.multi,)!, + allowEmpty: encodeQueryParameter(_repository, allowEmpty, const TypeInfo( String ) -, ), - language: await encodeQueryParameter(_repository, language, const TypeInfo( +, )!, + language: encodeQueryParameter(_repository, language, const TypeInfo( BuiltMap, [ TypeInfo(String), const TypeInfo( @@ -1411,7 +1411,7 @@ class FakeApi { , ]) -, ), +, )!, cancelToken: cancelToken, headers: headers, diff --git a/samples/client/echo_api/dart/dio/built_value/lib/src/api/pet_api.dart b/samples/client/echo_api/dart/dio/built_value/lib/src/api/pet_api.dart index 435aa41e2c3b..9c79a451f175 100644 --- a/samples/client/echo_api/dart/dio/built_value/lib/src/api/pet_api.dart +++ b/samples/client/echo_api/dart/dio/built_value/lib/src/api/pet_api.dart @@ -98,20 +98,20 @@ class PetApi { final _response = await rawApi.deletePet( - petId: await encodeStringParameter(_repository, petId, const TypeInfo( + petId: encodeStringParameter(_repository, petId, const TypeInfo( int ) -), - apiKey: await encodeStringParameter(_repository, apiKey, const TypeInfo( +,)!, + apiKey: encodeStringParameter(_repository, apiKey, const TypeInfo( String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -149,8 +149,8 @@ class PetApi { }) async { final _response = await rawApi.findPetsByStatus( - - status: await encodeQueryParameter(_repository, status, const TypeInfo( + + status: encodeQueryParameter(_repository, status, const TypeInfo( BuiltList, [ const TypeInfo( @@ -162,7 +162,7 @@ class PetApi { , ]) -, format: ListFormat.csv,), +, format: ListFormat.csv,)!, cancelToken: cancelToken, headers: headers, @@ -237,8 +237,8 @@ class PetApi { }) async { final _response = await rawApi.findPetsByTags( - - tags: await encodeQueryParameter(_repository, tags, const TypeInfo( + + tags: encodeQueryParameter(_repository, tags, const TypeInfo( BuiltSet, [ const TypeInfo( @@ -250,7 +250,7 @@ class PetApi { , ]) -, format: ListFormat.csv,), +, format: ListFormat.csv,)!, cancelToken: cancelToken, headers: headers, @@ -325,13 +325,13 @@ class PetApi { final _response = await rawApi.getPetById( - petId: await encodeStringParameter(_repository, petId, const TypeInfo( + petId: encodeStringParameter(_repository, petId, const TypeInfo( int ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -450,14 +450,14 @@ class PetApi { }) async { Object? _bodyData; final _bodyMap = { - if (name != null) r'name': await encodeFormParameter(_repository, name, const TypeInfo( + if (name != null) r'name': encodeFormParameter(_repository, name, const TypeInfo( String ) ), - if (status != null) r'status': await encodeFormParameter(_repository, status, const TypeInfo( + if (status != null) r'status': encodeFormParameter(_repository, status, const TypeInfo( String @@ -469,13 +469,13 @@ class PetApi { final _response = await rawApi.updatePetWithForm( - petId: await encodeStringParameter(_repository, petId, const TypeInfo( + petId: encodeStringParameter(_repository, petId, const TypeInfo( int ) -), +,)!, body: _bodyData, requestContentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, @@ -518,14 +518,14 @@ class PetApi { }) async { Object? _bodyData; final _bodyMap = { - if (additionalMetadata != null) r'additionalMetadata': await encodeFormParameter(_repository, additionalMetadata, const TypeInfo( + if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_repository, additionalMetadata, const TypeInfo( String ) ), - if (file != null) r'file': await encodeFormParameter(_repository, file, const TypeInfo( + if (file != null) r'file': encodeFormParameter(_repository, file, const TypeInfo( MultipartFile @@ -537,13 +537,13 @@ class PetApi { final _response = await rawApi.uploadFile( - petId: await encodeStringParameter(_repository, petId, const TypeInfo( + petId: encodeStringParameter(_repository, petId, const TypeInfo( int ) -), +,)!, body: _bodyData, requestContentType: 'multipart/form-data', cancelToken: cancelToken, @@ -616,14 +616,14 @@ class PetApi { }) async { Object? _bodyData; final _bodyMap = { - if (additionalMetadata != null) r'additionalMetadata': await encodeFormParameter(_repository, additionalMetadata, const TypeInfo( + if (additionalMetadata != null) r'additionalMetadata': encodeFormParameter(_repository, additionalMetadata, const TypeInfo( String ) ), - r'requiredFile': await encodeFormParameter(_repository, requiredFile, const TypeInfo( + r'requiredFile': encodeFormParameter(_repository, requiredFile, const TypeInfo( MultipartFile @@ -635,13 +635,13 @@ class PetApi { final _response = await rawApi.uploadFileWithRequiredFile( - petId: await encodeStringParameter(_repository, petId, const TypeInfo( + petId: encodeStringParameter(_repository, petId, const TypeInfo( int ) -), +,)!, body: _bodyData, requestContentType: 'multipart/form-data', cancelToken: cancelToken, diff --git a/samples/client/echo_api/dart/dio/built_value/lib/src/api/store_api.dart b/samples/client/echo_api/dart/dio/built_value/lib/src/api/store_api.dart index be557dc64816..45e064f20f7e 100644 --- a/samples/client/echo_api/dart/dio/built_value/lib/src/api/store_api.dart +++ b/samples/client/echo_api/dart/dio/built_value/lib/src/api/store_api.dart @@ -47,13 +47,13 @@ class StoreApi { final _response = await rawApi.deleteOrder( - orderId: await encodeStringParameter(_repository, orderId, const TypeInfo( + orderId: encodeStringParameter(_repository, orderId, const TypeInfo( String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -164,13 +164,13 @@ class StoreApi { final _response = await rawApi.getOrderById( - orderId: await encodeStringParameter(_repository, orderId, const TypeInfo( + orderId: encodeStringParameter(_repository, orderId, const TypeInfo( int ) -), +,)!, cancelToken: cancelToken, headers: headers, diff --git a/samples/client/echo_api/dart/dio/built_value/lib/src/api/user_api.dart b/samples/client/echo_api/dart/dio/built_value/lib/src/api/user_api.dart index caeb7be4f811..a50e3e40e27b 100644 --- a/samples/client/echo_api/dart/dio/built_value/lib/src/api/user_api.dart +++ b/samples/client/echo_api/dart/dio/built_value/lib/src/api/user_api.dart @@ -200,13 +200,13 @@ class UserApi { final _response = await rawApi.deleteUser( - username: await encodeStringParameter(_repository, username, const TypeInfo( + username: encodeStringParameter(_repository, username, const TypeInfo( String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -245,13 +245,13 @@ class UserApi { final _response = await rawApi.getUserByName( - username: await encodeStringParameter(_repository, username, const TypeInfo( + username: encodeStringParameter(_repository, username, const TypeInfo( String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -321,21 +321,21 @@ class UserApi { }) async { final _response = await rawApi.loginUser( - - username: await encodeQueryParameter(_repository, username, const TypeInfo( + + username: encodeQueryParameter(_repository, username, const TypeInfo( String ) -, ), - password: await encodeQueryParameter(_repository, password, const TypeInfo( +, )!, + password: encodeQueryParameter(_repository, password, const TypeInfo( String ) -, ), +, )!, cancelToken: cancelToken, headers: headers, @@ -450,13 +450,13 @@ class UserApi { final _response = await rawApi.updateUser( - username: await encodeStringParameter(_repository, username, const TypeInfo( + username: encodeStringParameter(_repository, username, const TypeInfo( String ) -), +,)!, body: _bodyData, requestContentType: 'application/json', cancelToken: cancelToken, diff --git a/samples/client/echo_api/dart/dio/built_value/lib/src/api_util.dart b/samples/client/echo_api/dart/dio/built_value/lib/src/api_util.dart index e6357fd191b6..eae33b9c034d 100644 --- a/samples/client/echo_api/dart/dio/built_value/lib/src/api_util.dart +++ b/samples/client/echo_api/dart/dio/built_value/lib/src/api_util.dart @@ -1,27 +1,27 @@ -import 'package:dio/dio.dart'; import 'dart:async'; -import 'dart:convert'; -import 'package:openapi/models.dart'; import 'dart:typed_data'; +import 'package:dio/dio.dart'; +import 'package:openapi/models.dart'; + /// Format the given form parameter object into something that Dio can handle. -Future encodeFormParameter( +Object? encodeFormParameter( SerializationRepositoryBase repository, T value, TypeInfo type, -) async { +) { return repository.serialize( value, type, ); } -Future encodeStringParameter( +String? encodeStringParameter( SerializationRepositoryBase repository, T value, TypeInfo type, -) async { - return (await repository.serialize(value, type)).toString(); +) { + return repository.serialize(value, type).toString(); } Future encodeBodyParameter( @@ -29,18 +29,18 @@ Future encodeBodyParameter( T value, TypeInfo type, ) async { - return await repository.serialize( + return await repository.serializeAsync( value, type, ); } -Future encodeQueryParameter( +Object? encodeQueryParameter( SerializationRepositoryBase repository, T value, TypeInfo type, { ListFormat format = ListFormat.multi, -}) async { +}) { if (value == null) { return null; } @@ -58,13 +58,13 @@ Future encodeQueryParameter( return serialized; } -Future> encodeCollectionQueryParameter( +ListParam encodeCollectionQueryParameter( SerializationRepositoryBase repository, Iterable value, TypeInfo type, { ListFormat format = ListFormat.multi, -}) async { - final serialized = await repository.serialize( +}) { + final serialized = repository.serialize( value, type, ); @@ -78,5 +78,5 @@ Future> encodeCollectionQueryParameter( } Future decodeResponse(SerializationRepositoryBase repository, TInput value, TypeInfo type) async { - return await repository.deserialize(value, type); -} \ No newline at end of file + return await repository.deserializeAsync(value, type); +} diff --git a/samples/client/echo_api/dart/dio/built_value/lib/src/repository_base.dart b/samples/client/echo_api/dart/dio/built_value/lib/src/repository_base.dart index fa1f81f13c5b..beab7ee38566 100644 --- a/samples/client/echo_api/dart/dio/built_value/lib/src/repository_base.dart +++ b/samples/client/echo_api/dart/dio/built_value/lib/src/repository_base.dart @@ -8,8 +8,29 @@ import 'dart:async'; abstract class SerializationRepositoryBase { const SerializationRepositoryBase(); - FutureOr serialize(T src, TypeInfo inputTypeInfo, {Object? context,}); - FutureOr deserialize(Object? value, TypeInfo targetTypeInfo, {Object? context,}); + Object? serialize( + T src, + TypeInfo inputTypeInfo, { + Object? context, + }); + + T deserialize( + Object? value, + TypeInfo targetTypeInfo, { + Object? context, + }); + + Future serializeAsync( + T src, + TypeInfo inputTypeInfo, { + Object? context, + }) async => serialize(src, inputTypeInfo, context: context); + + Future deserializeAsync( + Object? value, + TypeInfo targetTypeInfo, { + Object? context, + }) async => deserialize(value, targetTypeInfo, context: context); } /// A modified version of `built_value`'s `FullType` class, found here diff --git a/samples/client/echo_api/dart/dio/built_value/lib/src/repository_impl.dart b/samples/client/echo_api/dart/dio/built_value/lib/src/repository_impl.dart index 5d7c14063a21..f5e3821b9c8b 100644 --- a/samples/client/echo_api/dart/dio/built_value/lib/src/repository_impl.dart +++ b/samples/client/echo_api/dart/dio/built_value/lib/src/repository_impl.dart @@ -28,7 +28,7 @@ class BuiltValueJsonRepository extends SerializationRepositoryBase { const BuiltValueJsonRepository(this.serializers); @override - FutureOr deserialize(Object? value, TypeInfo targetTypeInfo, {Object? context}) { + T deserialize(Object? value, TypeInfo targetTypeInfo, {Object? context}) { if (value is T) { return value; } @@ -39,7 +39,7 @@ class BuiltValueJsonRepository extends SerializationRepositoryBase { } @override - FutureOr serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { + Object? serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { if (src == null) { return null; } diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/another_fake_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/another_fake_api.dart index 73a338f00c68..33144ab4347a 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/another_fake_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/another_fake_api.dart @@ -11,7 +11,6 @@ import 'package:openapi/src/api_util.dart'; import 'package:openapi/models.dart'; import 'package:openapi/src/model/model_client.dart'; -part 'another_fake_api.g.dart'; class AnotherFakeApi { @@ -44,7 +43,7 @@ class AnotherFakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, modelClient, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, modelClient, const TypeInfo( ModelClient @@ -68,7 +67,7 @@ class AnotherFakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( ModelClient diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/bar_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/bar_api.dart index 7f52bbce1abd..b8ef5286b066 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/bar_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/bar_api.dart @@ -12,7 +12,6 @@ import 'package:openapi/models.dart'; import 'package:openapi/src/model/bar.dart'; import 'package:openapi/src/model/bar_create.dart'; -part 'bar_api.g.dart'; class BarApi { @@ -45,7 +44,7 @@ class BarApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, barCreate, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, barCreate, const TypeInfo( BarCreate @@ -69,7 +68,7 @@ class BarApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( Bar diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/default_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/default_api.dart index 316fac48cad9..87a13a0ee97b 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/default_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/default_api.dart @@ -15,7 +15,6 @@ import 'package:openapi/src/model/fruit_all_of_disc.dart'; import 'package:openapi/src/model/fruit_variant1.dart'; import 'package:openapi/src/model/giga_one_of.dart'; -part 'default_api.g.dart'; class DefaultApi { @@ -61,7 +60,7 @@ class DefaultApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( FooBasicGetDefaultResponse @@ -127,7 +126,7 @@ class DefaultApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( GigaOneOf @@ -193,7 +192,7 @@ class DefaultApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( Fruit @@ -246,7 +245,7 @@ class DefaultApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, body, const TypeInfo.nullable( + _bodyData = await encodeBodyParameter(_repository, body, const TypeInfo.nullable( Object @@ -306,7 +305,7 @@ class DefaultApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( FruitVariant1 @@ -372,7 +371,7 @@ class DefaultApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( FruitAllOfDisc diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_api.dart index 15ce95b2fde7..284966cd9ed7 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_api.dart @@ -64,7 +64,7 @@ class FakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( HealthCheckResult @@ -121,7 +121,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, pet, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, pet, const TypeInfo( Pet @@ -130,21 +130,21 @@ class FakeApi { ); final _response = await rawApi.fakeHttpSignatureTest( - + query1: encodeQueryParameter(_repository, query1, const TypeInfo( String ) -, ), +, )!, header1: encodeStringParameter(_repository, header1, const TypeInfo( String ) -), +,)!, body: _bodyData, requestContentType: 'application/json', cancelToken: cancelToken, @@ -182,7 +182,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, body, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, body, const TypeInfo( bool @@ -206,7 +206,7 @@ class FakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( bool @@ -259,7 +259,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, outerComposite, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, outerComposite, const TypeInfo( OuterComposite @@ -283,7 +283,7 @@ class FakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( OuterComposite @@ -336,7 +336,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, body, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, body, const TypeInfo( num @@ -360,7 +360,7 @@ class FakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( num @@ -413,7 +413,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, body, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, body, const TypeInfo( String @@ -437,7 +437,7 @@ class FakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( String @@ -490,7 +490,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, outerObjectWithEnumProperty, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, outerObjectWithEnumProperty, const TypeInfo( OuterObjectWithEnumProperty @@ -514,7 +514,7 @@ class FakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( OuterObjectWithEnumProperty @@ -567,7 +567,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, body, const TypeInfo.nullable( + _bodyData = await encodeBodyParameter(_repository, body, const TypeInfo.nullable( MultipartFile @@ -614,7 +614,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, fileSchemaTestClass, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, fileSchemaTestClass, const TypeInfo( FileSchemaTestClass @@ -663,7 +663,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, user, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, user, const TypeInfo( User @@ -672,14 +672,14 @@ class FakeApi { ); final _response = await rawApi.testBodyWithQueryParams( - + query: encodeQueryParameter(_repository, query, const TypeInfo( String ) -, ), +, )!, body: _bodyData, requestContentType: 'application/json', cancelToken: cancelToken, @@ -717,7 +717,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, modelClient, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, modelClient, const TypeInfo( ModelClient @@ -741,7 +741,7 @@ class FakeApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( ModelClient @@ -1015,14 +1015,14 @@ class FakeApi { , ]) -), +,)!, enumHeaderString: encodeStringParameter(_repository, enumHeaderString, const TypeInfo( EnumHeaderStringEnum ) -), +,)!, enumQueryStringArray: encodeQueryParameter(_repository, enumQueryStringArray, const TypeInfo( List, [ @@ -1035,28 +1035,28 @@ class FakeApi { , ]) -, format: ListFormat.multi,), +, format: ListFormat.multi,)!, enumQueryString: encodeQueryParameter(_repository, enumQueryString, const TypeInfo( EnumQueryStringEnum ) -, ), +, )!, enumQueryInteger: encodeQueryParameter(_repository, enumQueryInteger, const TypeInfo( EnumQueryIntegerEnum ) -, ), +, )!, enumQueryDouble: encodeQueryParameter(_repository, enumQueryDouble, const TypeInfo( EnumQueryDoubleEnum ) -, ), +, )!, enumQueryModelArray: encodeQueryParameter(_repository, enumQueryModelArray, const TypeInfo( List, [ @@ -1069,7 +1069,7 @@ class FakeApi { , ]) -, format: ListFormat.multi,), +, format: ListFormat.multi,)!, body: _bodyData, requestContentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, @@ -1118,49 +1118,49 @@ class FakeApi { }) async { final _response = await rawApi.testGroupParameters( - + requiredStringGroup: encodeQueryParameter(_repository, requiredStringGroup, const TypeInfo( int ) -, ), +, )!, requiredBooleanGroup: encodeStringParameter(_repository, requiredBooleanGroup, const TypeInfo( bool ) -), +,)!, requiredInt64Group: encodeQueryParameter(_repository, requiredInt64Group, const TypeInfo( int ) -, ), +, )!, stringGroup: encodeQueryParameter(_repository, stringGroup, const TypeInfo( int ) -, ), +, )!, booleanGroup: encodeStringParameter(_repository, booleanGroup, const TypeInfo( bool ) -), +,)!, int64Group: encodeQueryParameter(_repository, int64Group, const TypeInfo( int ) -, ), +, )!, cancelToken: cancelToken, headers: headers, @@ -1197,7 +1197,7 @@ class FakeApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, requestBody, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, requestBody, const TypeInfo( Map, [ TypeInfo(String), const TypeInfo( @@ -1322,7 +1322,7 @@ class FakeApi { }) async { final _response = await rawApi.testQueryParameterCollectionFormat( - + pipe: encodeQueryParameter(_repository, pipe, const TypeInfo( List, [ @@ -1335,7 +1335,7 @@ class FakeApi { , ]) -, format: ListFormat.pipes,), +, format: ListFormat.pipes,)!, ioutil: encodeQueryParameter(_repository, ioutil, const TypeInfo( List, [ @@ -1348,7 +1348,7 @@ class FakeApi { , ]) -, format: ListFormat.csv,), +, format: ListFormat.csv,)!, http: encodeQueryParameter(_repository, http, const TypeInfo( List, [ @@ -1361,7 +1361,7 @@ class FakeApi { , ]) -, format: ListFormat.ssv,), +, format: ListFormat.ssv,)!, url: encodeQueryParameter(_repository, url, const TypeInfo( List, [ @@ -1374,7 +1374,7 @@ class FakeApi { , ]) -, format: ListFormat.csv,), +, format: ListFormat.csv,)!, context: encodeQueryParameter(_repository, context, const TypeInfo( List, [ @@ -1387,14 +1387,14 @@ class FakeApi { , ]) -, format: ListFormat.multi,), +, format: ListFormat.multi,)!, allowEmpty: encodeQueryParameter(_repository, allowEmpty, const TypeInfo( String ) -, ), +, )!, language: encodeQueryParameter(_repository, language, const TypeInfo( Map, [ TypeInfo(String), @@ -1407,7 +1407,7 @@ class FakeApi { , ]) -, ), +, )!, cancelToken: cancelToken, headers: headers, diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_classname_tags123_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_classname_tags123_api.dart index a39749d0be45..a859f5caa7b2 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_classname_tags123_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/fake_classname_tags123_api.dart @@ -11,7 +11,6 @@ import 'package:openapi/src/api_util.dart'; import 'package:openapi/models.dart'; import 'package:openapi/src/model/model_client.dart'; -part 'fake_classname_tags123_api.g.dart'; class FakeClassnameTags123Api { @@ -44,7 +43,7 @@ class FakeClassnameTags123Api { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, modelClient, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, modelClient, const TypeInfo( ModelClient @@ -68,7 +67,7 @@ class FakeClassnameTags123Api { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( ModelClient diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/foo_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/foo_api.dart index 82aa013c1719..7d56d181f639 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/foo_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/foo_api.dart @@ -12,7 +12,6 @@ import 'package:openapi/models.dart'; import 'package:openapi/src/model/foo.dart'; import 'package:openapi/src/model/foo_ref_or_value.dart'; -part 'foo_api.g.dart'; class FooApi { @@ -45,7 +44,7 @@ class FooApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, foo, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, foo, const TypeInfo( Foo @@ -69,7 +68,7 @@ class FooApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( FooRefOrValue @@ -135,7 +134,7 @@ class FooApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( List, [ const TypeInfo( diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/pet_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/pet_api.dart index f5c06fc13e24..02e37ecd69e8 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/pet_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/pet_api.dart @@ -45,7 +45,7 @@ class PetApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, pet, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, pet, const TypeInfo( Pet @@ -102,14 +102,14 @@ class PetApi { int ) -), +,)!, apiKey: encodeStringParameter(_repository, apiKey, const TypeInfo( String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -147,7 +147,7 @@ class PetApi { }) async { final _response = await rawApi.findPetsByStatus( - + status: encodeQueryParameter(_repository, status, const TypeInfo( List, [ @@ -160,7 +160,7 @@ class PetApi { , ]) -, format: ListFormat.csv,), +, format: ListFormat.csv,)!, cancelToken: cancelToken, headers: headers, @@ -174,7 +174,7 @@ class PetApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( List, [ const TypeInfo( @@ -235,7 +235,7 @@ class PetApi { }) async { final _response = await rawApi.findPetsByTags( - + tags: encodeQueryParameter(_repository, tags, const TypeInfo( Set, [ @@ -248,7 +248,7 @@ class PetApi { , ]) -, format: ListFormat.csv,), +, format: ListFormat.csv,)!, cancelToken: cancelToken, headers: headers, @@ -262,7 +262,7 @@ class PetApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( Set, [ const TypeInfo( @@ -329,7 +329,7 @@ class PetApi { int ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -343,7 +343,7 @@ class PetApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( Pet @@ -396,7 +396,7 @@ class PetApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, pet, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, pet, const TypeInfo( Pet @@ -473,7 +473,7 @@ class PetApi { int ) -), +,)!, body: _bodyData, requestContentType: 'application/x-www-form-urlencoded', cancelToken: cancelToken, @@ -541,7 +541,7 @@ class PetApi { int ) -), +,)!, body: _bodyData, requestContentType: 'multipart/form-data', cancelToken: cancelToken, @@ -556,7 +556,7 @@ class PetApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( ApiResponse @@ -639,7 +639,7 @@ class PetApi { int ) -), +,)!, body: _bodyData, requestContentType: 'multipart/form-data', cancelToken: cancelToken, @@ -654,7 +654,7 @@ class PetApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( ApiResponse diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/store_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/store_api.dart index 7d8d00ab8fca..8cd6c6832c44 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/store_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/store_api.dart @@ -11,7 +11,6 @@ import 'package:openapi/src/api_util.dart'; import 'package:openapi/models.dart'; import 'package:openapi/src/model/order.dart'; -part 'store_api.g.dart'; class StoreApi { @@ -52,7 +51,7 @@ class StoreApi { String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -102,7 +101,7 @@ class StoreApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( Map, [ TypeInfo(String), const TypeInfo( @@ -169,7 +168,7 @@ class StoreApi { int ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -183,7 +182,7 @@ class StoreApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( Order @@ -236,7 +235,7 @@ class StoreApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, order, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, order, const TypeInfo( Order @@ -260,7 +259,7 @@ class StoreApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( Order diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/user_api.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/user_api.dart index f1c1d118e0c3..304e3e3f3ad3 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/user_api.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api/user_api.dart @@ -11,7 +11,6 @@ import 'package:openapi/src/api_util.dart'; import 'package:openapi/models.dart'; import 'package:openapi/src/model/user.dart'; -part 'user_api.g.dart'; class UserApi { @@ -44,7 +43,7 @@ class UserApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, user, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, user, const TypeInfo( User @@ -91,7 +90,7 @@ class UserApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, user, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, user, const TypeInfo( List, [ const TypeInfo( @@ -144,7 +143,7 @@ class UserApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, user, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, user, const TypeInfo( List, [ const TypeInfo( @@ -205,7 +204,7 @@ class UserApi { String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -250,7 +249,7 @@ class UserApi { String ) -), +,)!, cancelToken: cancelToken, headers: headers, @@ -264,7 +263,7 @@ class UserApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( User @@ -320,21 +319,21 @@ class UserApi { }) async { final _response = await rawApi.loginUser( - + username: encodeQueryParameter(_repository, username, const TypeInfo( String ) -, ), +, )!, password: encodeQueryParameter(_repository, password, const TypeInfo( String ) -, ), +, )!, cancelToken: cancelToken, headers: headers, @@ -348,7 +347,7 @@ class UserApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : decodeResponse(_repository, rawResponse, const TypeInfo( + _responseData = rawResponse == null ? null : await decodeResponse(_repository, rawResponse, const TypeInfo( String @@ -439,7 +438,7 @@ class UserApi { ProgressCallback? onReceiveProgress, }) async { Object? _bodyData; - _bodyData = encodeBodyParameter(_repository, user, const TypeInfo( + _bodyData = await encodeBodyParameter(_repository, user, const TypeInfo( User @@ -455,7 +454,7 @@ class UserApi { String ) -), +,)!, body: _bodyData, requestContentType: 'application/json', cancelToken: cancelToken, diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api_util.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api_util.dart index cca5b3427a0a..eae33b9c034d 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/api_util.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/api_util.dart @@ -1,27 +1,22 @@ +import 'dart:async'; +import 'dart:typed_data'; + import 'package:dio/dio.dart'; -import 'dart:convert'; import 'package:openapi/models.dart'; -import 'dart:typed_data'; /// Format the given form parameter object into something that Dio can handle. -/// Returns primitive or String. -/// Returns List/Map if the value is BuildList/BuiltMap. -Object encodeFormParameter( +Object? encodeFormParameter( SerializationRepositoryBase repository, T value, TypeInfo type, ) { - if (value == null) { - return ''; - } - final serialized = repository.serialize( - value, - type, - ); - return serialized; + return repository.serialize( + value, + type, + ); } -String encodeStringParameter( +String? encodeStringParameter( SerializationRepositoryBase repository, T value, TypeInfo type, @@ -29,29 +24,25 @@ String encodeStringParameter( return repository.serialize(value, type).toString(); } -Object encodeBodyParameter( +Future encodeBodyParameter( SerializationRepositoryBase repository, T value, TypeInfo type, -) { - if (value == null) { - return ''; - } - final serialized = repository.serialize( +) async { + return await repository.serializeAsync( value, type, - ); - return serialized; + ); } -Object encodeQueryParameter( +Object? encodeQueryParameter( SerializationRepositoryBase repository, T value, TypeInfo type, { ListFormat format = ListFormat.multi, }) { if (value == null) { - return ''; + return null; } if (value is String || value is num || value is bool) { return value; @@ -67,7 +58,7 @@ Object encodeQueryParameter( return serialized; } -ListParam encodeCollectionQueryParameter( +ListParam encodeCollectionQueryParameter( SerializationRepositoryBase repository, Iterable value, TypeInfo type, { @@ -77,12 +68,15 @@ ListParam encodeCollectionQueryParameter( value, type, ); + if (serialized == null) { + return ListParam([], format); + } if (serialized is Iterable) { return ListParam(serialized.toList(), format); } throw ArgumentError('Invalid value passed to encodeCollectionQueryParameter'); } -TOutput decodeResponse(SerializationRepositoryBase repository, TInput value, TypeInfo type) { - return repository.deserialize(value, type); -} \ No newline at end of file +Future decodeResponse(SerializationRepositoryBase repository, TInput value, TypeInfo type) async { + return await repository.deserializeAsync(value, type); +} diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_base.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_base.dart index c4c2def37aa6..beab7ee38566 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_base.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_base.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + /// The general rule for implementing this class is /// json == serialize(deserialize(json)) /// object == deserialize(serialize(object)) @@ -6,8 +8,29 @@ abstract class SerializationRepositoryBase { const SerializationRepositoryBase(); - FutureOr serialize(T src, TypeInfo inputTypeInfo, {Object? context,}); - FutureOr deserialize(Object? value, TypeInfo targetTypeInfo, {Object? context,}); + Object? serialize( + T src, + TypeInfo inputTypeInfo, { + Object? context, + }); + + T deserialize( + Object? value, + TypeInfo targetTypeInfo, { + Object? context, + }); + + Future serializeAsync( + T src, + TypeInfo inputTypeInfo, { + Object? context, + }) async => serialize(src, inputTypeInfo, context: context); + + Future deserializeAsync( + Object? value, + TypeInfo targetTypeInfo, { + Object? context, + }) async => deserialize(value, targetTypeInfo, context: context); } /// A modified version of `built_value`'s `FullType` class, found here diff --git a/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_impl.dart b/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_impl.dart index b07401f2f3a9..0c2767c24125 100644 --- a/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_impl.dart +++ b/samples/client/echo_api/dart/dio/json_serializable/lib/src/repository_impl.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:async'; import 'dart:typed_data'; import 'repository_base.dart'; import 'package:openapi/models.dart'; @@ -8,7 +9,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase { /// Transforms an object of arbitrary type [T] (whose information is passed in inputTypeInfo) to a dart primitive @override - FutureOr serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { + Object? serialize(T src, TypeInfo inputTypeInfo, {Object? context}) { if (src == null) { return null; } @@ -42,10 +43,10 @@ class JsonSerializableRepository extends SerializationRepositoryBase { return context(src); } - try { + try { return (src as dynamic).toJson(); } on NoSuchMethodError { - assert(false, + assert(false, ''' Failed to serialize the object properly, falling back to `toString()` '''); @@ -59,7 +60,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase { //Don't rely on T being accurate here, since it won't get passed for generic arguments. if (value == null) { return null as T; - } + } final targetRootType = targetTypeInfo.root; if (targetRootType == T) { //short circuit if we already have the output as the input @@ -309,7 +310,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase { if (value is T) { return value; } - throw Exception('Cannot deserialize'); - } + throw Exception('Cannot deserialize'); + } } -} \ No newline at end of file +}