Browse Source

Merge pull request #248 from Leptopoda/feature/built_value_split

header serialization
pull/254/head
Kate 2 years ago committed by GitHub
parent
commit
12c479f65c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 48
      packages/dynamite/lib/src/openapi_builder.dart

48
packages/dynamite/lib/src/openapi_builder.dart

@ -879,20 +879,6 @@ class OpenAPIBuilder implements Builder {
if (response.headers != null) { if (response.headers != null) {
final identifier = final identifier =
'${tag != null ? _toDartName(tag, uppercaseFirstCharacter: true) : null}${_toDartName(operationId, uppercaseFirstCharacter: true)}Headers'; '${tag != null ? _toDartName(tag, uppercaseFirstCharacter: true) : null}${_toDartName(operationId, uppercaseFirstCharacter: true)}Headers';
final headerParseFunctions = <String, String>{};
for (final headerName in response.headers!.keys) {
final functionIdentifier = '_${_toDartName('${identifier}Parse$headerName')}';
headerParseFunctions[headerName] = functionIdentifier;
final result = resolveType(
spec,
state,
identifier,
response.headers![headerName]!.schema!,
);
output.add(
'${result.name} $functionIdentifier(final Map data, final String key) => ${result.deserialize(result.decode('data[key]'))};',
);
}
final result = resolveType( final result = resolveType(
spec, spec,
state, state,
@ -905,13 +891,6 @@ class OpenAPIBuilder implements Builder {
}, },
}, },
), ),
extraJsonKeyValues: {
for (final headerName in response.headers!.keys) ...{
headerName.toLowerCase(): {
'readValue': headerParseFunctions[headerName]!,
},
},
},
); );
headersType = result.name; headersType = result.name;
headersValue = result.deserialize('response.headers'); headersValue = result.deserialize('response.headers');
@ -1423,9 +1402,8 @@ TypeResult resolveObject(
final OpenAPI spec, final OpenAPI spec,
final State state, final State state,
final String identifier, final String identifier,
final Schema schema, { final Schema schema,
required final Map<String, Map<String, String>>? extraJsonKeyValues, ) {
}) {
if (!state.resolvedTypes.contains('${state.prefix}$identifier')) { if (!state.resolvedTypes.contains('${state.prefix}$identifier')) {
state.resolvedTypes.add('${state.prefix}$identifier'); state.resolvedTypes.add('${state.prefix}$identifier');
state.registeredJsonObjects.add('${state.prefix}$identifier'); state.registeredJsonObjects.add('${state.prefix}$identifier');
@ -1505,24 +1483,12 @@ TypeResult resolveObject(
) )
..type = MethodType.getter ..type = MethodType.getter
..docs.addAll(_descriptionToDocs(propertySchema.description)); ..docs.addAll(_descriptionToDocs(propertySchema.description));
final hasDifferentName = _toDartName(propertyName) != propertyName;
final hasExtraJsonKeyValues =
extraJsonKeyValues != null && extraJsonKeyValues.containsKey(propertyName);
final arguments = <String, Expression>{
if (hasDifferentName) ...{
'wireName': literalString(propertyName),
},
if (hasExtraJsonKeyValues) ...{
for (final key in extraJsonKeyValues[propertyName]!.keys) ...{
key: refer(extraJsonKeyValues[propertyName]![key]!),
},
},
};
if (arguments.isNotEmpty) { if (_toDartName(propertyName) != propertyName) {
b.annotations.add( b.annotations.add(
refer('BuiltValueField').call([], arguments), refer('BuiltValueField').call([], {
'wireName': literalString(propertyName),
}),
); );
} }
}, },
@ -1597,7 +1563,6 @@ TypeResult resolveType(
final State state, final State state,
final String identifier, final String identifier,
final Schema schema, { final Schema schema, {
final Map<String, Map<String, String>>? extraJsonKeyValues,
final bool ignoreEnum = false, final bool ignoreEnum = false,
}) { }) {
TypeResult? result; TypeResult? result;
@ -1935,7 +1900,6 @@ TypeResult resolveType(
state, state,
identifier, identifier,
schema, schema,
extraJsonKeyValues: extraJsonKeyValues,
); );
break; break;
} }

Loading…
Cancel
Save