示例#1
0
        public static void Main()
        {
            var document = OpenApiDocument.FromUrlAsync("https://*****:*****@"..\..\..\..\Squidex.ClientLibrary\Management\Generated.cs", code);
        }
示例#2
0
        private static void GenerateCSharp(OpenApiDocument document)
        {
            var generatorSettings = new CSharpClientGeneratorSettings
            {
                ExceptionClass             = "NotifoException",
                GenerateOptionalParameters = true,
                GenerateClientInterfaces   = true,
                GenerateBaseUrlProperty    = true,
                OperationNameGenerator     = new TagNameGenerator(),
                UseBaseUrl = true
            };

            generatorSettings.CSharpGeneratorSettings.ExcludedTypeNames               = new[] { "JsonInheritanceConverter" };
            generatorSettings.CSharpGeneratorSettings.ArrayBaseType                   = "System.Collections.Generic.List";
            generatorSettings.CSharpGeneratorSettings.ArrayInstanceType               = "System.Collections.Generic.List";
            generatorSettings.CSharpGeneratorSettings.ArrayType                       = "System.Collections.Generic.List";
            generatorSettings.CSharpGeneratorSettings.DictionaryBaseType              = "System.Collections.Generic.Dictionary";
            generatorSettings.CSharpGeneratorSettings.DictionaryInstanceType          = "System.Collections.Generic.Dictionary";
            generatorSettings.CSharpGeneratorSettings.DictionaryType                  = "System.Collections.Generic.Dictionary";
            generatorSettings.CSharpGeneratorSettings.Namespace                       = "Notifo.SDK";
            generatorSettings.CSharpGeneratorSettings.RequiredPropertiesMustBeDefined = false;

            var codeGenerator = new CSharpClientGenerator(document, generatorSettings);

            var code = codeGenerator.GenerateFile();

            code = code.Replace("https://*****:*****@"..\..\..\..\Notifo.SDK\Generated.cs", code);
        }
示例#3
0
        static async Task Main(string[] args)
        {
            System.Net.WebClient wclient = new System.Net.WebClient();

            var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString("https://app.amphoradata.com/swagger/v1/swagger.json"));

            wclient.Dispose();

            var settings = new CSharpClientGeneratorSettings
            {
                //ClassName = "AmphoraClient",
                CSharpGeneratorSettings =
                {
                    Namespace = "AmphoraData.Client",
                }
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();
            var directory = System.IO.Directory.GetCurrentDirectory();
            var filePath  = $"{directory}/client/AmphoraClient.cs";

            System.IO.File.Delete(filePath);
            Console.WriteLine($"Deleted {filePath}");
            System.IO.File.WriteAllText(filePath, code);
            Console.WriteLine($"Wrote {filePath}");
        }
示例#4
0
        private CSharpClientGenerator CreateCSharpGenerator(OpenApiDocument apiDoc)
        {
            var settings = new CSharpClientGeneratorSettings
            {
                GenerateDtoTypes = true,
                AdditionalContractNamespaceUsages = _usings,
                AdditionalNamespaceUsages         = _usings
            };

            settings.CodeGeneratorSettings.InlineNamedAny = true;
            settings.CSharpGeneratorSettings.Namespace    = Config.OutputNamespace;
            settings.CSharpGeneratorSettings.ClassStyle   = CSharpClassStyle.Inpc;

            var generator =
                new NSwag.CodeGeneration.OperationNameGenerators.
                MultipleClientsFromFirstTagAndPathSegmentsOperationNameGenerator();

            var csgen = new CSharpClientGenerator(apiDoc, settings);

            csgen.Settings.GenerateOptionalParameters = true;
            csgen.Settings.GenerateResponseClasses    = true;
            csgen.Settings.SerializeTypeInformation   = true;
            csgen.Settings.OperationNameGenerator     = generator;
            return(csgen);
        }
示例#5
0
        /// <summary>
        /// Generates a
        /// </summary>
        /// <param name="outputFile"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public NSwagRunner GenerateCSharpClient(FilePath outputFile, Action <CSharpClientGeneratorSettings> handler)
        {
            var settings = new CSharpClientGeneratorSettings();

            handler?.Invoke(settings);
            return(GenerateCSharpClient(outputFile, settings));
        }
示例#6
0
        public static async Task Main(string[] args)
        {
            // Read the Open API YAML specification
            OpenApiDocument document = await OpenApiYamlDocument.FromUrlAsync("https://raw.githubusercontent.com/netlify/open-api/master/swagger.yml");

            // Generate the code
            CSharpClientGeneratorSettings clientSettings = new CSharpClientGeneratorSettings
            {
                ClassName = nameof(NetlifyClient),
                CSharpGeneratorSettings =
                {
                    Namespace             = nameof(NetlifySharp),
                    PropertyNameGenerator = new PascalCasePropertyNameGenerator()
                },
                ParameterNameGenerator      = new CamelCaseParameterNameGenerator(),
                ExceptionClass              = nameof(NetlifyException),
                InjectHttpClient            = false,
                UseHttpClientCreationMethod = true
            };

            clientSettings.CSharpGeneratorSettings.TemplateFactory = new CustomTemplateFactory(
                clientSettings.CSharpGeneratorSettings.TemplateFactory,
                clientSettings);
            CSharpClientGenerator generator = new CSharpClientGenerator(document, clientSettings);
            string code = generator.GenerateFile();

            // Make the constructor private so we can write our own
            code = code.Replace($"public {clientSettings.ClassName}(", $"private {clientSettings.ClassName}(");

            // Write to a file in the client project
            System.IO.File.WriteAllText($"../../src/NetlifySharp/{clientSettings.ClassName}.Generated.cs", code);
        }
        static void Main(string[] args)
        {
            var serviceSettings = new CSharpClientGeneratorSettings
            {
                ClassName                = "ContentAppService",
                ClientBaseClass          = "ContentManagementAppService",
                ClientBaseInterface      = "IApplicationService",
                GenerateClientClasses    = true,
                GenerateClientInterfaces = true,
                GenerateDtoTypes         = true,
                CSharpGeneratorSettings  =
                {
                    Namespace = "ContentManagement.Content"
                }
            };

            GenerateCodeInterfaceAndService(serviceSettings, "ContentAppService.cs");


            //var serviceSettingsDtos = new CSharpClientGeneratorSettings
            //{
            //    ClassName = "ContentAppServiceDto",
            //    ClientBaseClass = "",
            //    ClientBaseInterface = "",
            //    GenerateClientClasses = false,
            //    GenerateClientInterfaces = false,
            //    GenerateDtoTypes = true,
            //    CSharpGeneratorSettings =
            //    {
            //        Namespace = "ContentManagement.Content"
            //    }
            //};
            //GenerateCode(serviceSettingsDtos, "ContentAppServiceDto.cs");
        }
示例#8
0
        public string ToCSharpCode(OpenApiDocument document)
        {
            //System.Net.WebClient wclient = new System.Net.WebClient();
            //var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString("Https://SwaggerSpecificationURL.json"));
            //wclient.Dispose();

            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = "AlibabaApiClient",
                CSharpGeneratorSettings =
                {
                    Namespace = "AlibabaSDK"
                },
                GenerateSyncMethods = true
            };

            //settings.CodeGeneratorSettings.TemplateDirectory = "";
            settings.CodeGeneratorSettings.GenerateDefaultValues = true;
            settings.CodeGeneratorSettings.PropertyNameGenerator = new MyCSharpPropertyNameGenerator();

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            return(code);
        }
示例#9
0
        public string ToCSharpCodeClient(OpenApiDocument document, string _namespace, string className, string[] namespaceUsages)
        {
            //System.Net.WebClient wclient = new System.Net.WebClient();
            //var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString("Https://SwaggerSpecificationURL.json"));
            //wclient.Dispose();

            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = className,//"AlibabaApiClient",
                CSharpGeneratorSettings =
                {
                    Namespace = _namespace//"AlibabaSDK"
                },
                GenerateSyncMethods        = true,
                GenerateDtoTypes           = false,
                GenerateClientInterfaces   = true,
                GenerateExceptionClasses   = false,
                GenerateOptionalParameters = true,
                AdditionalNamespaceUsages  = namespaceUsages//new[] { "AlibabaSDK.Models" }
            };

            //settings.CodeGeneratorSettings.TemplateDirectory = "";
            settings.CodeGeneratorSettings.GenerateDefaultValues = true;
            settings.CodeGeneratorSettings.PropertyNameGenerator = new MyCSharpPropertyNameGenerator();
            settings.CodeGeneratorSettings.TemplateDirectory     = @"D:\Users\mccj\Source\Repos\AlibabaSDKFor1688\src\tools\AlibabaSDKFor1688GenerationApp\Templates";

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            return(code);
        }
示例#10
0
        public string ToCSharpCode(OpenApiDocument document, string _namespace)
        {
            var settings = new CSharpClientGeneratorSettings
            {
                CSharpGeneratorSettings =
                {
                    Namespace = _namespace,//"AlibabaSDK"
                },
                //GenerateSyncMethods = true,
                ////GenerateDtoTypes = false,
                //GenerateClientInterfaces = true,
                //GenerateExceptionClasses = false,
                //GenerateOptionalParameters = true,
            };

            //settings.CodeGeneratorSettings.TemplateDirectory = "";
            settings.CodeGeneratorSettings.GenerateDefaultValues             = true;
            settings.CodeGeneratorSettings.PropertyNameGenerator             = new MyCSharpPropertyNameGenerator();
            settings.CSharpGeneratorSettings.GenerateJsonMethods             = false;
            settings.CSharpGeneratorSettings.RequiredPropertiesMustBeDefined = false;

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            return(code);
        }
        public static async void GenerateCodeInterfaceAndService(CSharpClientGeneratorSettings settings, string serviceName)
        {
            System.Net.WebClient wclient = new System.Net.WebClient();

            string url = @"https://cloud.squidex.io/api/content/ilearn/swagger/v1/swagger.json";

            var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString(url));

            wclient.Dispose();

            var    generator = new CSharpClientGenerator(document, settings);
            string allCode   = generator.GenerateFile();

            int indexSplitInterfaceAndApp = IndexOfOccurence(allCode, "[System.CodeDom.Compiler.GeneratedCode(\"NSwag\", \"13.10.1.0 (NJsonSchema v10.3.3.0 (Newtonsoft.Json v12.0.0.0))\")]", 2);
            int indexSplitDto             = IndexOfOccurence(allCode, "[System.CodeDom.Compiler.GeneratedCode(\"NJsonSchema\"", 1);

            string nameSpace = "namespace ContentManagement.Content {\n";

            //Interface Service
            string interfaceCode = allCode.Remove(indexSplitInterfaceAndApp) + "}";

            File.WriteAllText(baseLocation + "I" + serviceName, interfaceCode);

            //ServiceCode
            int    length      = indexSplitDto - indexSplitInterfaceAndApp;
            string serviceCode = nameSpace + allCode.Substring(indexSplitInterfaceAndApp, length) + "}";

            File.WriteAllText(baseLocation + serviceName, serviceCode);

            string dtoCode = nameSpace + allCode.Substring(indexSplitDto);

            File.WriteAllText(baseLocation + "Dto" + serviceName, dtoCode);
        }
示例#12
0
        private static string GenerateNSwagTemplateFromDocument(OpenApiDocument document)
        {
            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = UrsaApplication.PackingParameters.ClassName,
                GenerateClientInterfaces = true,
                CSharpGeneratorSettings  =
                {
                    Namespace         = UrsaApplication.PackingParameters.Namespace,
                    TypeNameGenerator = new DefaultTypeNameGenerator
                    {
                        ReservedTypeNames                = new[]
                        {
                            UrsaApplication.PackingParameters.Namespace,
                            UrsaApplication.PackingParameters.ClassName
                        },
                    },
                    GenerateOptionalPropertiesAsNullable = false
                }
            };

            var generator = new CSharpClientGenerator(document, settings);

            return(generator.GenerateFile());
        }
示例#13
0
        public async Task When_generating_csharp_with_any_inheritance_then_inheritance_is_generated()
        {
            // Arrange
            var json     = @"{
    ""openapi"": ""3.0.0"",
    ""components"": {
        ""schemas"": {
            ""SessionStateResent"": {
                ""allOf"": [
                    {
                        ""$ref"": ""#/components/schemas/SportsbookEventBody""
                    },
                    {
                        ""type"": ""object"",
                        ""additionalProperties"": false
                    }
                ]
            },
            ""SportsbookEventBody"": {
                ""type"": ""object"",
                ""additionalProperties"": false
            }
        }
    }
}";
            var document = await OpenApiDocument.FromJsonAsync(json);

            // Act
            var settings  = new CSharpClientGeneratorSettings();
            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            // Assert
            Assert.Contains("class SessionStateResent : SportsbookEventBody", code);
        }
示例#14
0
        public async Task <IActionResult> GenerateCSharpClient(GenerateCSharpClientRequest request)
        {
            try
            {
                OpenApiDocument document;
                try
                {
                    document = await OpenApiDocument.FromUrlAsync(request.SwaggerContractEndpoint.AbsoluteUri);
                }
                catch (HttpRequestException ex)
                {
                    return(StatusCode(404, ex.Message));
                }

                var settings = new CSharpClientGeneratorSettings
                {
                    ClassName = "{controller}Client",
                };

                var generator = new CSharpClientGenerator(document, settings);
                var code      = generator.GenerateFile();
                return(StatusCode(200, code));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new ServerError500Response(ex)
                {
                    Endpoint = request.SwaggerContractEndpoint
                }));
            }
        }
示例#15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="outputFile"></param>
        /// <param name="settings"></param>
        /// <returns></returns>
        public NSwagRunner GenerateCSharpClient(FilePath outputFile, CSharpClientGeneratorSettings settings = null)
        {
            settings = settings ?? new CSharpClientGeneratorSettings();
            var generator = new CSharpClientGenerator(Document, settings);

            WriteToFile(outputFile, generator.GenerateFile());
            return(this);
        }
示例#16
0
        /// <summary>Initializes a new instance of the <see cref="CSharpExceptionDescriptionModel" /> class.</summary>
        /// <param name="type">The type.</param>
        /// <param name="description">The description.</param>
        /// <param name="controllerName">Name of the controller.</param>
        /// <param name="settings">The settings.</param>
        public CSharpExceptionDescriptionModel(string type, string description, string controllerName, CSharpClientGeneratorSettings settings)
        {
            _type           = type;
            _settings       = settings;
            _controllerName = controllerName;

            Description = !string.IsNullOrEmpty(description) ? description : "A server side error occurred.";
        }
示例#17
0
        public async Task When_same_response_is_referenced_multiple_times_in_operation_then_class_is_generated()
        {
            // Arrange
            string json = @"{
  ""openapi"": ""3.0.0"",
  ""paths"": {
    ""/v1/exceptions/get"": {
      ""get"": {
        ""operationId"": ""Exceptions_GetException"",
        ""responses"": {
          ""200"": {
            ""$ref"": ""#/components/responses/BusinessExceptionResponse"",
            },
          ""400"": {
            ""$ref"": ""#/components/responses/BusinessExceptionResponse"",
          }
        }
      }
    }
  },
  ""components"": {
    ""schemas"": {
      ""BusinessException"": {
        ""type"": ""object"",
        ""additionalProperties"": false
      }
    },
    ""responses"": {
      ""BusinessExceptionResponse"": {
        ""description"": ""List of NSwagStudio bugs"",
        ""content"": {
          ""application/json"": {
            ""schema"": {
              ""type"": ""array"",
              ""items"": {
                ""$ref"": ""#/components/schemas/BusinessException""
              }
            }
          }
        }
      }
    }
  }
}";

            var document = await OpenApiDocument.FromJsonAsync(json);

            // Act
            var settings = new CSharpClientGeneratorSettings {
                ClassName = "MyClass"
            };
            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            // Assert
            Assert.Contains("System.Threading.Tasks.Task<System.Collections.Generic.ICollection<BusinessException>>", code);
            Assert.Contains("class BusinessException", code);
        }
示例#18
0
        private static int GenerateCSharpClient(GenerateClientOptions options)
        {
            try
            {
                var swaggerJson = GetSwaggerJson();
#pragma warning disable S4462
                var document = OpenApiDocument.FromJsonAsync(swaggerJson).Result;
#pragma warning restore S4462

                var filePath = options.CsFilePath.GetRootedPath();
                Console.WriteLine($"Start generate client code with nswag. OutputPath: {filePath}");

                var settings = new CSharpClientGeneratorSettings
                {
                    GenerateClientInterfaces    = true,
                    OperationNameGenerator      = new SingleClientFromOperationIdOperationNameGenerator(),
                    ExceptionClass              = "MetadataIntegrationServiceClientException",
                    UseHttpClientCreationMethod = true,
                    InjectHttpClient            = true,
                    ClassName = "MetadataIntegrationServiceClient",
                    GenerateBaseUrlProperty = false,
                    UseBaseUrl      = false,
                    ClientBaseClass = "ClientBaseClass",
                    UseHttpRequestMessageCreationMethod        = true,
                    GenerateUpdateJsonSerializerSettingsMethod = true,
                    CSharpGeneratorSettings =
                    {
                        Namespace           = "SimairaDigital.Backend.ItemManagement.Client",
                        InlineNamedTuples   = true,
                        GenerateJsonMethods = true,
                    },
                };

                var generator = new CSharpClientGenerator(document, settings);
                var code      = generator.GenerateFile();

                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }

                File.WriteAllText(filePath, code);
                return(0);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(-1);
            }
        }
        public static async void GenerateCode(CSharpClientGeneratorSettings settings, string serviceName)
        {
            System.Net.WebClient wclient = new System.Net.WebClient();

            string url = @"https://cloud.squidex.io/api/content/ilearn/swagger/v1/swagger.json";

            var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString(url));

            wclient.Dispose();

            var    generator = new CSharpClientGenerator(document, settings);
            string allCode   = generator.GenerateFile();

            File.WriteAllText(baseLocation + serviceName, allCode);
        }
示例#20
0
        async static Task GenerateCSharpClient(string url, string generatePath) =>
        await GenerateClient(
            document : await OpenApiDocument.FromUrlAsync(url),
            generatePath : generatePath,
            generateCode : (OpenApiDocument document) =>
        {
            var settings = new CSharpClientGeneratorSettings
            {
                UseBaseUrl = false
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();
            return(code);
        }
            );
示例#21
0
        public void When_generating_CSharp_code_with_SystemTextJson_then_output_contains_expected_code()
        {
            // Arrange
            var document = CreateDocument();

            // Act
            var settings = new CSharpClientGeneratorSettings();

            settings.CSharpGeneratorSettings.JsonLibrary = NJsonSchema.CodeGeneration.CSharp.CSharpJsonLibrary.SystemTextJson;

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            // Assert
            Assert.Contains("new System.Text.Json.JsonSerializerOptions()", code);
        }
示例#22
0
        public async Task When_response_is_referenced_any_then_class_is_generated()
        {
            // Arrange
            var json     = @"{
  ""openapi"": ""3.0.0"",
  ""paths"": {
    ""/v1/exceptions/get"": {
      ""post"": {
        ""operationId"": ""Exceptions_GetException"",
        ""responses"": {
          ""200"": {
            ""content"": {
              ""application/json"": {
                ""schema"": {
                  ""$ref"": ""#/components/schemas/BusinessException""
                }
              }
            }
          }
        }
      }
    }
  }, 
  ""components"": {
    ""schemas"": {
      ""BusinessException"": {
        ""type"": ""object"",
        ""additionalProperties"": false
      }
    }
  }
}";
            var document = await OpenApiDocument.FromJsonAsync(json);

            // Act
            var settings = new CSharpClientGeneratorSettings {
                ClassName = "MyClass"
            };
            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            // Assert
            Assert.Contains("System.Threading.Tasks.Task<BusinessException>", code);
            Assert.DoesNotContain("System.Threading.Tasks.Task<object>", code);
            Assert.Contains("class BusinessException", code);
        }
示例#23
0
        public async Task Generate()
        {
            var rig = await new SwaggerIntegration().Start();

            try
            {
                //System.Threading.Thread.Sleep(10000);
                var response = await rig.HttpTestClient.GetAsync("/swagger/v1/swagger.json");

                response.EnsureSuccessStatusCode();
                var responseString = await response.Content.ReadAsStringAsync();

                var document = await OpenApiDocument.FromJsonAsync(responseString);

                var settings = new CSharpClientGeneratorSettings
                {
                    ClassName = "{controller}Api",
                    AdditionalContractNamespaceUsages = new string[] { "" },
                    AdditionalNamespaceUsages         = new string[] { "Echo.Ecommerce.Host.Controllers", "Echo.Ecommerce.Host.Models", "Microsoft.AspNetCore.Mvc.ModelBinding", "Microsoft.AspNetCore.Mvc" },
                    CSharpGeneratorSettings           =
                    {
                        Namespace = "Echo.Ecommerce.Host.WebApi"
                    },
                    GenerateClientClasses   = true,
                    GenerateResponseClasses = false,
                    GenerateDtoTypes        = false
                };

                var generator = new CSharpClientGenerator(document, settings);
                var code      = generator.GenerateFile();
                var json      = document.ToJson();

                json = json.Replace("localhost", "swagger: 2.0");
                string path = System.IO.Path.Join(Environment.CurrentDirectory, "..//..//..//RestApi.cs");
                System.IO.File.WriteAllText(path, code);
                System.IO.File.WriteAllText(System.IO.Path.Join(Environment.CurrentDirectory, "..//..//..//..//Echo-Ecommerce-Web//swagger.json"), json);
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception:" + ex.Message);
            }
            finally
            {
                rig.Stop();
            }
        }
示例#24
0
        public void When_generating_CSharp_code_with_NewtonsoftJson_and_JsonSerializerSettingsTransformationMethod_then_output_contains_expected_code()
        {
            // Arrange
            var document = CreateDocument();

            // Act
            var settings = new CSharpClientGeneratorSettings();

            settings.CSharpGeneratorSettings.JsonLibrary = NJsonSchema.CodeGeneration.CSharp.CSharpJsonLibrary.NewtonsoftJson;
            settings.CSharpGeneratorSettings.JsonSerializerSettingsTransformationMethod = "TestJsonSerializerSettingsTransformationMethod";

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            // Assert
            Assert.Contains("TestJsonSerializerSettingsTransformationMethod(new Newtonsoft.Json.JsonSerializerSettings {  })", code);
        }
示例#25
0
        public async Task <string> Generate()
        {
            var response = await httpClient.GetAsync(swaggerEndpoint);

            var document = await OpenApiDocument.FromJsonAsync(await response.Content.ReadAsStringAsync());

            var settings = new CSharpClientGeneratorSettings
            {
                ClientBaseClass  = ClientBaseClass,
                InjectHttpClient = true,
                UseBaseUrl       = false,
                ExceptionClass   = "SwaggerException"
            };

            settings.CSharpGeneratorSettings.Namespace = ClientNamespace;

            return(new CSharpClientGenerator(document, settings).GenerateFile());
        }
        static async Task Main(string[] args)
        {
            var document = await OpenApiDocument.FromUrlAsync("https://localhost:5001/swagger/v1/swagger.json");

            var settings = new CSharpClientGeneratorSettings
            {
                CSharpGeneratorSettings =
                {
                    Namespace = "ImageRecognition.API.Client",
                }
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();
            var fullPath  = DetermienFullFilePath("ImageRecognitionClient.cs");

            File.WriteAllText(fullPath, code);
        }
示例#27
0
        static async Task Generate(string source, string target, string name, bool repeat = false)
        {
            var document = await OpenApiYamlDocument.FromUrlAsync(source);

            var settings = new CSharpClientGeneratorSettings {
                ClassName = "{controller}Client",
                ExposeJsonSerializerSettings = true,
                CSharpGeneratorSettings      =
                {
                    Namespace = name
                }
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            File.WriteAllText(target, code);
        }
        /// <summary>Initializes a new instance of the <see cref="CSharpClientTemplateModel" /> class.</summary>
        /// <param name="controllerName">Name of the controller.</param>
        /// <param name="controllerClassName">The class name of the controller.</param>
        /// <param name="operations">The operations.</param>
        /// <param name="exceptionSchema">The exception schema.</param>
        /// <param name="document">The Swagger document.</param>
        /// <param name="settings">The settings.</param>
        public CSharpClientTemplateModel(
            string controllerName,
            string controllerClassName,
            IEnumerable <CSharpOperationModel> operations,
            JsonSchema exceptionSchema,
            OpenApiDocument document,
            CSharpClientGeneratorSettings settings)
            : base(controllerName, settings)
        {
            _document        = document;
            _exceptionSchema = exceptionSchema;
            _settings        = settings;

            Class      = controllerClassName;
            Operations = operations;

            BaseClass      = _settings.ClientBaseClass?.Replace("{controller}", controllerName);
            ExceptionClass = _settings.ExceptionClass.Replace("{controller}", controllerName);
        }
示例#29
0
        static async Task Main(string[] args)
        {
            var document = await InputSetting.GetOpenApiDoc();

            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = InputSetting.ClassName,
                CSharpGeneratorSettings =
                {
                    Namespace = InputSetting.NameSpace
                },
                // OperationNameGenerator = new MultipleClientsFromFirstTagAndPathSegmentsOperationNameGenerator()
                OperationNameGenerator = new CustomSingleClientFromPathSegmentsOperationNameGenerator()
                                         // OperationNameGenerator = new MultipleClientsFromPathSegmentsOperationNameGenerator()
            };
            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();
            await File.WriteAllTextAsync($"{settings.ClassName}.cs", code);
        }
示例#30
0
        public void When_generating_CSharp_code_with_SystemTextJson_and_JsonConverters_then_output_contains_expected_code()
        {
            // Arrange
            var document = CreateDocument();

            //// Act
            var settings = new CSharpClientGeneratorSettings();

            settings.CSharpGeneratorSettings.JsonLibrary    = NJsonSchema.CodeGeneration.CSharp.CSharpJsonLibrary.SystemTextJson;
            settings.CSharpGeneratorSettings.JsonConverters = new[] { "CustomConverter1", "CustomConverter2" };

            var generator = new CSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();

            // Assert
            Assert.Contains("new System.Text.Json.JsonSerializerOptions(); var converters = new System.Text.Json.Serialization.JsonConverter[] { new CustomConverter1(), new CustomConverter2() }", code);
            Assert.Contains("foreach(var converter in converters)", code);
            Assert.Contains("settings.Converters.Add(converter)", code);
        }