Beispiel #1
0
    public async Task BuildBareDefinitions(Models.OpenApi openApiModel)
    {
        var typeTree = new TypeTree();

        typeTree.CreateSchemasTypeTree(openApiModel);

        await using (var streamWriter = new StreamWriter(Path.Combine(
                                                             _destinationFolder,
                                                             "GlobalUsings.cs"), append: false))
        {
            await streamWriter.WriteAsync(GlobalUsingsText);
        }

        await using (var streamWriter = new StreamWriter(Path.Combine(
                                                             _destinationFolder,
                                                             "DotNetBungieAPIJsonSerializationContext.cs"), append: false))
        {
            await streamWriter.WriteLineAsync("namespace DotNetBungieAPI.Generated.Models;");

            await streamWriter.WriteLineAsync();

            foreach (var(typeName, typeSchema) in openApiModel.Components.Schemas)
            {
                if (typeSchema.Type is "object" && (typeSchema.Properties is null || !typeSchema.Properties.Any()))
                {
                    continue;
                }
                await streamWriter.WriteLineAsync($"[JsonSerializable(typeof({typeName}))]");
            }

            await streamWriter.WriteLineAsync("public partial class DotNetBungieAPIJsonSerializationContext : JsonSerializerContext { }");
        }

        foreach (var treeNode in typeTree.Nodes.Values)
        {
            await IterateThroughTypeTreeBare(openApiModel, treeNode, _destinationFolder);
        }



        foreach (var(responseName, openApiComponentResponse) in openApiModel.Components.Responses)
        {
            var schema = openApiComponentResponse.Content.Schema;
        }
    }