public void GenerateFullClientCSharpFile() { var configuration = new GraphQlGeneratorConfiguration { CommentGeneration = CommentGenerationOption.CodeSummary | CommentGenerationOption.DescriptionAttribute }; var generator = new GraphQlGenerator(configuration); var generatedSourceCode = generator.GenerateFullClientCSharpFile(TestSchema, "GraphQlGenerator.Test"); var expectedOutput = GetTestResource("ExpectedSingleFileGenerationContext.FullClientCSharpFile"); generatedSourceCode.ShouldBe(expectedOutput); }
public async Task RunAsync() { var config = new GraphQlGeneratorConfiguration() { IncludeDeprecatedFields = options.GenerateDeprecatedTypes, JsonPropertyGeneration = options.JsonPropertyGeneration, CSharpVersion = options.UseNullable ? CSharpVersion.NewestWithNullableReferences : CSharpVersion.Compatible }; var schema = await SchemaConverter.ReadAsync(options.Source).ConfigureAwait(false); var generator = new GraphQlGenerator(config); var content = generator.GenerateFullClientCSharpFile(schema, options.Namespace); Console.WriteLine($"writing client-code to {options.DestinationFile}"); File.WriteAllText(options.DestinationFile, content); }
public async Task GenerateAsync() { var schema = await GraphQlGenerator.RetrieveSchema("https://*****:*****@"C:\projects\SuSoClient\Repository\src\SurveySolutionsClient\Graphql.cs", csharpCode); }
private static async Task GenerateClientSourceCode(IConsole console, ProgramOptions options, List <FileInfo> generatedFiles) { GraphQlSchema schema; if (String.IsNullOrWhiteSpace(options.ServiceUrl)) { var schemaJson = await File.ReadAllTextAsync(options.SchemaFileName); console.Out.WriteLine($"GraphQL schema file {options.SchemaFileName} loaded ({schemaJson.Length:N0} B). "); schema = GraphQlGenerator.DeserializeGraphQlSchema(schemaJson); } else { if (!KeyValueParameterParser.TryGetCustomHeaders(options.Header, out var headers, out var headerParsingErrorMessage)) { throw new InvalidOperationException(headerParsingErrorMessage); } schema = await GraphQlGenerator.RetrieveSchema(new HttpMethod(options.HttpMethod), options.ServiceUrl, headers); console.Out.WriteLine($"GraphQL Schema retrieved from {options.ServiceUrl}. "); } var generatorConfiguration = new GraphQlGeneratorConfiguration { CSharpVersion = options.CSharpVersion, ClassPrefix = options.ClassPrefix, ClassSuffix = options.ClassSuffix, GeneratePartialClasses = options.PartialClasses, MemberAccessibility = options.MemberAccessibility, IdTypeMapping = options.IdTypeMapping, FloatTypeMapping = options.FloatTypeMapping, JsonPropertyGeneration = options.JsonPropertyAttribute, EnumValueNaming = options.EnumValueNaming }; if (!KeyValueParameterParser.TryGetCustomClassMapping(options.ClassMapping, out var customMapping, out var customMappingParsingErrorMessage)) { throw new InvalidOperationException(customMappingParsingErrorMessage); } foreach (var kvp in customMapping) { generatorConfiguration.CustomClassNameMapping.Add(kvp); } var generator = new GraphQlGenerator(generatorConfiguration); if (options.OutputType == OutputType.SingleFile) { await File.WriteAllTextAsync(options.OutputPath, generator.GenerateFullClientCSharpFile(schema, options.Namespace)); generatedFiles.Add(new FileInfo(options.OutputPath)); } else { var multipleFileGenerationContext = new MultipleFileGenerationContext(schema, options.OutputPath, options.Namespace); generator.Generate(multipleFileGenerationContext); generatedFiles.AddRange(multipleFileGenerationContext.Files); } }
public static async Task <IReadOnlyCollection <FileInfo> > GenerateClientSourceCode(ProgramOptions options) { var isServiceUrlMissing = String.IsNullOrWhiteSpace(options.ServiceUrl); if (isServiceUrlMissing && String.IsNullOrWhiteSpace(options.SchemaFileName)) { System.Console.WriteLine("ERROR: Either \"serviceUrl\" or \"schemaFileName\" parameter must be specified. "); Environment.Exit(4); } if (!isServiceUrlMissing && !String.IsNullOrWhiteSpace(options.SchemaFileName)) { System.Console.WriteLine("ERROR: \"serviceUrl\" and \"schemaFileName\" parameters are mutually exclusive. "); Environment.Exit(5); } GraphQlSchema schema; if (isServiceUrlMissing) { schema = GraphQlGenerator.DeserializeGraphQlSchema(await File.ReadAllTextAsync(options.SchemaFileName)); } else { if (!KeyValueParameterParser.TryGetCustomHeaders(options.Headers, out var headers, out var headerParsingErrorMessage)) { System.Console.WriteLine("ERROR: " + headerParsingErrorMessage); Environment.Exit(3); } schema = await GraphQlGenerator.RetrieveSchema(options.ServiceUrl, headers); } var generatorConfiguration = new GraphQlGeneratorConfiguration { CSharpVersion = options.CSharpVersion, ClassPrefix = options.ClassPrefix, ClassSuffix = options.ClassSuffix, GeneratePartialClasses = options.PartialClasses, MemberAccessibility = options.MemberAccessibility, IdTypeMapping = options.IdTypeMapping, FloatTypeMapping = options.FloatTypeMapping, JsonPropertyGeneration = options.JsonPropertyAttribute }; if (!KeyValueParameterParser.TryGetCustomClassMapping(options.ClassMapping, out var customMapping, out var customMappingParsingErrorMessage)) { System.Console.WriteLine("ERROR: " + customMappingParsingErrorMessage); Environment.Exit(3); } foreach (var kvp in customMapping) { generatorConfiguration.CustomClassNameMapping.Add(kvp); } var generator = new GraphQlGenerator(generatorConfiguration); if (options.OutputType == OutputType.SingleFile) { await File.WriteAllTextAsync(options.OutputPath, generator.GenerateFullClientCSharpFile(schema, options.Namespace)); return(new[] { new FileInfo(options.OutputPath) }); } var multipleFileGenerationContext = new MultipleFileGenerationContext(schema, options.OutputPath, options.Namespace); generator.Generate(multipleFileGenerationContext); return(multipleFileGenerationContext.Files); }