Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class {{classname}} {
{{#hasFormParams}}
final _bodyMap = <String, dynamic>{
{{#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}}
Expand All @@ -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}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
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<Object?> encodeFormParameter<T extends Object?>(
Object? encodeFormParameter<T extends Object?>(
SerializationRepositoryBase repository,
T value,
TypeInfo type,
) async {
) {
return repository.serialize(
value,
type,
);
}

Future<String?> encodeStringParameter<T extends Object?>(
String? encodeStringParameter<T extends Object?>(
SerializationRepositoryBase repository,
T value,
TypeInfo type,
) async {
return (await repository.serialize(value, type)).toString();
) {
return repository.serialize(value, type).toString();
}

Future<Object?> encodeBodyParameter<T extends Object?>(
SerializationRepositoryBase repository,
T value,
TypeInfo type,
) async {
return await repository.serialize(
return await repository.serializeAsync(
value,
type,
);
}

Future<Object?> encodeQueryParameter<T extends Object?>(
Object? encodeQueryParameter<T extends Object?>(
SerializationRepositoryBase repository,
T value,
TypeInfo type, {
ListFormat format = ListFormat.multi,
}) async {
}) {
if (value == null) {
return null;
}
Expand All @@ -58,13 +58,13 @@ Future<Object?> encodeQueryParameter<T extends Object?>(
return serialized;
}

Future<ListParam<Object?>> encodeCollectionQueryParameter<T extends Object?>(
ListParam<Object?> encodeCollectionQueryParameter<T extends Object?>(
SerializationRepositoryBase repository,
Iterable<T> value,
TypeInfo type, {
ListFormat format = ListFormat.multi,
}) async {
final serialized = await repository.serialize(
}) {
final serialized = repository.serialize(
value,
type,
);
Expand All @@ -78,5 +78,5 @@ Future<ListParam<Object?>> encodeCollectionQueryParameter<T extends Object?>(
}

Future<TOutput?> decodeResponse<TOutput, TInput extends Object>(SerializationRepositoryBase repository, TInput value, TypeInfo type) async {
return await repository.deserialize(value, type);
}
return await repository.deserializeAsync(value, type);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class BuiltValueJsonRepository extends SerializationRepositoryBase {
const BuiltValueJsonRepository(this.serializers);

@override
FutureOr<T> deserialize<T>(Object? value, TypeInfo targetTypeInfo, {Object? context}) {
T deserialize<T>(Object? value, TypeInfo targetTypeInfo, {Object? context}) {
if (value is T) {
return value;
}
Expand All @@ -36,7 +36,7 @@ class BuiltValueJsonRepository extends SerializationRepositoryBase {
}

@override
FutureOr<Object?> serialize<T>(T src, TypeInfo inputTypeInfo, {Object? context}) {
Object? serialize<T>(T src, TypeInfo inputTypeInfo, {Object? context}) {
if (src == null) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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}}
{{#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}}
Original file line number Diff line number Diff line change
Expand Up @@ -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<Object?> serialize<T>(T src, TypeInfo inputTypeInfo, {Object? context}) {
Object? serialize<T>(T src, TypeInfo inputTypeInfo, {Object? context}) {
if (src == null) {
return null;
}
Expand Down Expand Up @@ -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()`
''');
Expand All @@ -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
Expand Down Expand Up @@ -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}}
Expand All @@ -116,7 +116,7 @@ class JsonSerializableRepository extends SerializationRepositoryBase {
if (value is T) {
return value;
}
throw Exception('Cannot deserialize');
}
throw Exception('Cannot deserialize');
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,29 @@ import 'dart:async';
abstract class SerializationRepositoryBase {
const SerializationRepositoryBase();

FutureOr<Object?> serialize<T extends Object?>(T src, TypeInfo inputTypeInfo, {Object? context,});
FutureOr<T> deserialize<T extends Object?>(Object? value, TypeInfo targetTypeInfo, {Object? context,});
Object? serialize<T extends Object?>(
T src,
TypeInfo inputTypeInfo, {
Object? context,
});

T deserialize<T extends Object?>(
Object? value,
TypeInfo targetTypeInfo, {
Object? context,
});

Future<Object?> serializeAsync<T extends Object?>(
T src,
TypeInfo inputTypeInfo, {
Object? context,
}) async => serialize(src, inputTypeInfo, context: context);

Future<T> deserializeAsync<T extends Object?>(
Object? value,
TypeInfo targetTypeInfo, {
Object? context,
}) async => deserialize(value, targetTypeInfo, context: context);
}

/// A modified version of `built_value`'s `FullType` class, found here
Expand Down
109 changes: 0 additions & 109 deletions samples/client/echo_api/dart/dio/built_value/.openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading