generateTypesFromSwagger function
void
generateTypesFromSwagger()
Implementation
void generateTypesFromSwagger() {
final swaggerMain =
jsonDecode(File(swaggerPath).readAsStringSync()) as Map<String, dynamic>;
final swaggerAuth = jsonDecode(File(authProxySwaggerPath).readAsStringSync())
as Map<String, dynamic>;
final out = StringBuffer()..write(header);
// ----- DEFINITIONS (Enums + Classes) -----
out.writeln('// --- Base definitions ---');
final defs = (swaggerMain['definitions'] as Map).cast<String, dynamic>();
// Emit enums first so classes can reference them
for (final entry in defs.entries) {
final name = entry.key;
final def = (entry.value as Map).cast<String, dynamic>();
if (def['type'] == 'string' && def['enum'] is List) {
out.write(generateEnumHelpers(name, (def['enum'] as List)));
}
}
// Emit classes
for (final entry in defs.entries) {
final name = entry.key.replaceAll(r'.', '');
final def = (entry.value as Map).cast<String, dynamic>();
if (def['type'] == 'object' && def['properties'] is Map) {
out.write(generateClass(name, def, defs));
} else if (!(def['type'] == 'string' && def['enum'] is List)) {
// Unknown/empty -> minimal stub
out.writeln('class $name {');
out.writeln(' const $name();');
out.writeln(
' factory $name.fromJson(Map<String, dynamic> json) => const $name();');
out.writeln(' Map<String, dynamic> toJson() => {};');
out.writeln('}\n');
}
}
// ----- API TYPES -----
out.writeln('// --- API shapes ---\n');
out.write(generateApiTypes(swaggerMain, ""));
out.write(generateApiTypes(swaggerAuth, "Proxy"));
// Write file
final f = File(outPath);
f.parent.createSync(recursive: true);
f.writeAsStringSync(out.toString());
stdout.writeln('Wrote ${f.path}');
}