Esempio n. 1
0
        private static async Task GeneratePaymentSdk()
        {
            if (!baseUrl.EndsWith("/"))
            {
                baseUrl += "/";
            }
            var url      = baseUrl + "swagger/v1/swagger.json";
            var document = await SwaggerDocument.FromUrlAsync(url);

            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = "ApiClient",
                GenerateClientInterfaces = true,
                OperationNameGenerator   = new SingleClientFromOperationIdOperationNameGenerator(),
                ExceptionClass           = "ApiClientException",
                InjectHttpClient         = true,
                CSharpGeneratorSettings  =
                {
                    Namespace  = "ServerlessTemplate",
                    ClassStyle = NJsonSchema.CodeGeneration.CSharp.CSharpClassStyle.Poco,
                    ArrayType  = "System.Collections.Generic.List"
                },
            };

            var generator = new SwaggerToCSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile();
            var path      = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..\\..\\..\\..\\Client\\ApiClient.cs"));

            File.WriteAllText(path, code);
            Console.WriteLine("Api client generated");
        }
Esempio n. 2
0
        public static async Task Main(string[] args)
        {
            var document = await SwaggerDocument.FromUrlAsync("http://localhost:49530/swagger/docs/v1");

            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = "CarClient",
                CSharpGeneratorSettings = { Namespace = "Example" }
            };

            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            var code           = generator.GenerateFile();
            var clientFilePath = Path.Combine(Assembly.GetExecutingAssembly().Location, "../../../CarClient.cs");

            if (!File.Exists(clientFilePath))
            {
                File.Create(clientFilePath);
            }

            using (var tw = new StreamWriter(clientFilePath, false))
            {
                await tw.WriteAsync(code).ConfigureAwait(false);
            }
        }
Esempio n. 3
0
        public static (bool isSinlgeClient, string typeName) GenerateCSharp(SwaggerDocument document, ApiClientDefinition definition)
        {
            var nameGenerator = new CustomNameGenerator();
            var settings      = new SwaggerToCSharpClientGeneratorSettings()
            {
                GenerateSyncMethods        = true,
                OperationNameGenerator     = nameGenerator,
                GenerateOptionalParameters = true,
            };

            settings.CSharpGeneratorSettings.ClassStyle            = CSharpClassStyle.Poco;
            settings.CSharpGeneratorSettings.Namespace             = definition.Namespace;
            settings.CSharpGeneratorSettings.ArrayType             = "System.Collections.Generic.List";
            settings.CSharpGeneratorSettings.PropertyNameGenerator =
                new MyPropertyNameGenerator(c => ConversionUtilities.ConvertToUpperCamelCase(c, true));


            var generator = new SwaggerToCSharpClientGenerator(document, settings);
            var csharp    = generator.GenerateFile();

            var newClient = InjectWrapperClass(csharp, Path.GetFileNameWithoutExtension(definition.CSharpClient), document, settings.OperationNameGenerator, out var isSinlgeClient, out var wrapperTypeName);

            definition.IsSingleClient = isSinlgeClient;

            if (definition.GenerateWrapperClass)
            {
                csharp = newClient;
            }

            File.WriteAllText(definition.CSharpClient, csharp);

            return(isSinlgeClient, wrapperTypeName);
        }
 public DotvvmSwaggerToCSharpClientGenerator(SwaggerDocument document, SwaggerToCSharpClientGeneratorSettings settings,
                                             SwaggerToCSharpTypeResolver resolver)
     : base(document, settings, resolver)
 {
     this.document = document;
     this.resolver = resolver;
 }
Esempio n. 5
0
        private static async Task GenerateGlossarySdk()
        {
            if (!baseUrl.EndsWith("/"))
            {
                baseUrl += "/";
            }
            var url      = baseUrl + "swagger/v1/swagger.json";
            var document = await SwaggerDocument.FromUrlAsync(url);

            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = "GlossaryClient",
                GenerateClientInterfaces = true,
                OperationNameGenerator   = new SingleClientFromOperationIdOperationNameGenerator(),
                ExceptionClass           = "GlossaryClientException",
                InjectHttpClient         = true,
                CSharpGeneratorSettings  =
                {
                    Namespace  = "Glossary.Client",
                    ClassStyle = NJsonSchema.CodeGeneration.CSharp.CSharpClassStyle.Poco,
                    ArrayType  = "System.Collections.Generic.List"
                }
            };

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

            code = code.Replace("Required = Newtonsoft.Json.Required.Always", "Required = Newtonsoft.Json.Required.Default");
            var path = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..\\..\\..\\..\\Client\\GlossaryClient.cs"));

            File.WriteAllText(path, code);
            Console.WriteLine("Glossary sdk generated");
        }
Esempio n. 6
0
        public async Task GenerateAsync()
        {
            //var httpClient = new System.Net.Http.HttpClient();

            //string content = await httpClient.GetStringAsync("https://qa.trunovate.com/entitymanager/swagger/1.1.0.0/swagger.json");

            string content = File.ReadAllText(Swagger);

            var dir = Path.GetFullPath(Output);

            var fileSink = new FileSink(dir);

            var document = await SwaggerDocument.FromJsonAsync(content);

            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                CSharpGeneratorSettings =
                {
                    TemplateFactory = new SwaggerTemplateFactory(document, fileSink, Subsystem, ServiceName)
                }
            };

            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            _ = generator.GenerateFile();

            Console.WriteLine(dir);
        }
Esempio n. 7
0
        private static void BuildAssemblySingleClientFromOpId(SwaggerDocument document, string location, AssemblyName name, string nameSpace, ref string typeName, ConnectionProperties props)
        {
            typeName = "Client";
            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                GenerateClientClasses      = true,
                GenerateOptionalParameters = true,

                ClassName = "{controller}Client",
                OperationNameGenerator  = new SingleClientFromOperationIdOperationNameGenerator(),
                CSharpGeneratorSettings =
                {
                    Namespace = nameSpace
                },
            };

            if (props.InjectHttpClient)
            {
                settings.DisposeHttpClient           = false;
                settings.ClientBaseClass             = nameSpace + ".MyClient";
                settings.UseHttpClientCreationMethod = true;
                settings.DisposeHttpClient           = props.DisposeHttpClient;
            }

            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            var code = generator.GenerateFile();

            code = AddHttpClientInjectCode(code, props, nameSpace);

            CompilerResults results;
            var             assemblyNames = new List <string>()
            {
                "System.dll",
                "System.Core.dll",
                "System.Xml.dll",
                "System.Xml.Linq.dll",
                "System.Runtime.Serialization.dll",
                "System.Net.Http.dll",
                "LINQPad.exe",
                "System.ComponentModel.DataAnnotations.dll",
            };

            assemblyNames.Add(Path.Combine(location, "Newtonsoft.Json.dll"));

            using (var codeProvider = new CSharpCodeProvider())
            {
                var options = new CompilerParameters(
                    assemblyNames.ToArray(),
                    name.CodeBase,
                    true);
                results = codeProvider.CompileAssemblyFromSource(options, code);
            }

            if (results.Errors.Count > 0)
            {
                throw new Exception
                          ("Cannot compile typed context: " + results.Errors[0].ErrorText + " (line " + results.Errors[0].Line + ")");
            }
        }
Esempio n. 8
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, SwaggerToCSharpClientGeneratorSettings settings)
        {
            _type           = type;
            _settings       = settings;
            _controllerName = controllerName;

            Description = !string.IsNullOrEmpty(description) ? description : "A server side error occurred.";
        }
Esempio n. 9
0
        public ClientTemplateModel(string controllerName, IList <OperationModel> operations, SwaggerService service, SwaggerToCSharpClientGeneratorSettings settings)
        {
            _service  = service;
            _settings = settings;

            Class      = controllerName;
            Operations = operations;
        }
Esempio n. 10
0
 /// <summary>Initializes a new instance of the <see cref="SwaggerToCSharpClientGenerator" /> class.</summary>
 /// <param name="document">The Swagger document.</param>
 /// <param name="settings">The settings.</param>
 /// <param name="resolver">The resolver.</param>
 /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception>
 public CSharpCodeGen(SwaggerDocument document, SwaggerToCSharpClientGeneratorSettings settings, CSharpTypeResolver resolver)
     : base(document, settings, resolver)
 {
     if (document == null)
     {
         throw new ArgumentNullException(nameof(document));
     }
     Document = document;
 }
Esempio n. 11
0
        /// <summary>Initializes a new instance of the <see cref="ClientTemplateModel" /> 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="service">The service.</param>
        /// <param name="settings">The settings.</param>
        public ClientTemplateModel(string controllerName, string controllerClassName, IList <OperationModel> operations, SwaggerService service, SwaggerToCSharpClientGeneratorSettings settings)
        {
            _service  = service;
            _settings = settings;

            Class          = controllerClassName;
            ExceptionClass = _settings.ExceptionClass.Replace("{controller}", controllerName);
            Operations     = operations;
        }
Esempio n. 12
0
        /// <summary>Initializes a new instance of the <see cref="ClientTemplateModel" /> 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="document">The Swagger document.</param>
        /// <param name="exceptionSchema">The exception schema.</param>
        /// <param name="settings">The settings.</param>
        public ClientTemplateModel(string controllerName, string controllerClassName, IList <OperationModel> operations,
                                   SwaggerDocument document, JsonSchema4 exceptionSchema, SwaggerToCSharpClientGeneratorSettings settings)
        {
            _document        = document;
            _exceptionSchema = exceptionSchema;
            _settings        = settings;

            Class          = controllerClassName;
            ExceptionClass = _settings.ExceptionClass.Replace("{controller}", controllerName);
            Operations     = operations;
        }
Esempio n. 13
0
        /// <summary>Initializes a new instance of the <see cref="ClientTemplateModel" /> 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="document">The Swagger document.</param>
        /// <param name="exceptionSchema">The exception schema.</param>
        /// <param name="settings">The settings.</param>
        public ClientTemplateModel(string controllerName, string controllerClassName, IList<OperationModel> operations,
            SwaggerDocument document, JsonSchema4 exceptionSchema, SwaggerToCSharpClientGeneratorSettings settings)
        {
            _document = document;
            _exceptionSchema = exceptionSchema;
            _settings = settings;

            Class = controllerClassName;
            ExceptionClass = _settings.ExceptionClass.Replace("{controller}", controllerName);
            Operations = operations;
        }
Esempio n. 14
0
        public string Gen(SwaggerDocument service, SwaggerToolSettings setting)
        {
            var settings = new SwaggerToCSharpClientGeneratorSettings()
            {
                ClassName = setting.CSharpGen.ClassName,
                CSharpGeneratorSettings = { Namespace = setting.CSharpGen.Namespace }
            };
            var generator = new SwaggerToCSharpClientGenerator(service, settings);
            var code      = generator.GenerateFile();

            return(code);
        }
Esempio n. 15
0
        public static (bool isSingleClient, string typeName) GenerateCSharp(SwaggerDocument document, ApiClientDefinition definition, bool promptOnFileOverwrite)
        {
            var className = Path.GetFileNameWithoutExtension(definition.CSharpClient);

            var settings = new SwaggerToCSharpClientGeneratorSettings()
            {
                GenerateSyncMethods        = true,
                OperationNameGenerator     = new CustomOperationNameGenerator(),
                GenerateOptionalParameters = true,
                CSharpGeneratorSettings    =
                {
                    ClassStyle            = CSharpClassStyle.Poco,
                    Namespace             = definition.Namespace,
                    ArrayType             = "System.Collections.Generic.List",
                    PropertyNameGenerator = new CustomPropertyNameGenerator(c => ConversionUtilities.ConvertToUpperCamelCase(c,true)),
                }
            };

            // detect whether there will be multiple clients or just one
            var clientNames = document.Operations
                              .Select(o => settings.OperationNameGenerator.GetClientName(document, o.Path, o.Method, o.Operation))
                              .Distinct()
                              .ToArray();

            definition.IsSingleClient = clientNames.Length == 1;

            if (definition.IsSingleClient)
            {
                // set the class name only when Swagger generates one client, otherwise all classes would have the same name
                settings.ClassName = className;
            }

            settings.CSharpGeneratorSettings.TypeNameGenerator =
                new DotvmmCSharpTypeNameGenerator(settings.CSharpGeneratorSettings, document);
            settings.CSharpGeneratorSettings.TemplateFactory = new DotvvmClientTemplateFactory(settings.CodeGeneratorSettings, new[] {
                typeof(CSharpGeneratorSettings).Assembly,
                typeof(SwaggerToCSharpGeneratorSettings).Assembly
            });

            var resolver  = SwaggerToCSharpTypeResolver.CreateWithDefinitions(settings.CSharpGeneratorSettings, document);
            var generator = new DotvvmSwaggerToCSharpClientGenerator(document, settings, resolver);
            var csharp    = generator.GenerateFile();

            if (definition.GenerateWrapperClass && !definition.IsSingleClient)
            {
                csharp = ApiClientUtils.InjectWrapperClass(csharp, className, clientNames);
            }

            FileSystemHelpers.WriteFile(definition.CSharpClient, csharp, promptOnFileOverwrite);

            return(definition.IsSingleClient, className);
        }
Esempio n. 16
0
        public async Task GenerateCSharp()
        {
            var document = await GetSwaggerDocument();

            var settings = new SwaggerToCSharpClientGeneratorSettings()
            {
                GenerateSyncMethods = true
            };

            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            File.WriteAllText(CSharpPath, generator.GenerateFile());
        }
Esempio n. 17
0
        private static void BuildAssemblyMultiClientFromOpId(SwaggerDocument document, string location, AssemblyName name, string nameSpace, ref string typeName)
        {
            typeName = "Api";
            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = "{controller}Client",
                OperationNameGenerator  = new MultipleClientsFromOperationIdOperationNameGenerator(), // this is default
                CSharpGeneratorSettings =
                {
                    Namespace = nameSpace
                },
            };

            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            var code = generator.GenerateFile();

            code  = code.Replace(nameSpace + "\n{", nameSpace + "\n{" + " public class " + typeName + "{ ");
            code += " }";
            CompilerResults results;
            var             assemblyNames = new List <string>()
            {
                "System.dll",
                "System.Core.dll",
                "System.Xml.dll",
                "System.Runtime.Serialization.dll",
                "System.Net.Http.dll",
                "System.ComponentModel.DataAnnotations.dll",
            };

            assemblyNames.Add(Path.Combine(location, "Newtonsoft.Json.dll"));

            using (var codeProvider = new CSharpCodeProvider(new Dictionary <string, string>()
            {
                { "CompilerVersion", "v4.0" }
            }))
            {
                var options = new CompilerParameters(
                    assemblyNames.ToArray(),
                    name.CodeBase,
                    true);
                results = codeProvider.CompileAssemblyFromSource(options, code);
            }

            if (results.Errors.Count > 0)
            {
                throw new Exception
                          ("Cannot compile typed context: " + results.Errors[0].ErrorText + " (line " + results.Errors[0].Line + ")");
            }
        }
Esempio n. 18
0
        public async Task GenerateCSharp()
        {
            var document = await GetSwaggerDocument();

            var settings = new SwaggerToCSharpClientGeneratorSettings()
            {
                GenerateSyncMethods = true,
            };

            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            Context.ReturnFile(Encoding.UTF8.GetBytes(generator.GenerateFile()), "ApiClient.cs", "text/plain");
            //File.WriteAllText(CSharpPath, generator.GenerateFile());
        }
Esempio n. 19
0
        public async static Task <string> GenerateFromUrl(string url, string namespaceName, string className)
        {
            var document = await SwaggerDocument.FromUrlAsync(url);

            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = className,
                CSharpGeneratorSettings =
                {
                    Namespace = namespaceName
                }
            };
            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            return(generator.GenerateFile());
        }
Esempio n. 20
0
        public byte[] GetContent(string documentPath)
        {
            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = _className,
                CSharpGeneratorSettings =
                {
                    Namespace = _ns
                }
            };

            var document = SwaggerDocument.FromFileAsync(documentPath).Result;

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

            return(Encoding.UTF8.GetBytes(code));
        }
Esempio n. 21
0
        private static string GenerateCode(SwaggerDocument document, string className)
        {
            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = className,
                CSharpGeneratorSettings =
                {
                    Namespace = "OpenEvents.Client"
                },
                GenerateExceptionClasses = false,
                GenerateClientInterfaces = true
            };

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

            return(code);
        }
Esempio n. 22
0
        public string GenerateCode()
        {
            var doc = Task.Run(async() => await GetSwaggerDocAsync()).Result;

            var settings = new SwaggerToCSharpClientGeneratorSettings()
            {
                GenerateClientClasses  = true,
                GenerateDtoTypes       = true,
                OperationNameGenerator = new MultipleClientsFromOperationIdOperationNameGenerator()
            };

            settings.CSharpGeneratorSettings.Namespace = "FSBO.WebServices.Client";

            var generator = new SwaggerToCSharpClientGenerator(doc, settings);
            var code      = generator.GenerateFile();

            return(code);
        }
Esempio n. 23
0
        static void Main(string[] args)
        {
//            var document = SwaggerDocument.FromUrlAsync("https://api.docxmerge.com/api/swagger/v1/swagger.json").Result;
            var document = SwaggerDocument.FromUrlAsync("http://localhost:5101/swagger/v1/swagger.json").Result;

            var clientSettings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = "DocxmergeApi",
                CSharpGeneratorSettings =
                {
                    Namespace = "Docxmerge"
                }
            };
            var clientGenerator = new SwaggerToCSharpClientGenerator(document, clientSettings);

            var code = clientGenerator.GenerateFile();

            File.WriteAllText("../Docxmerge/Api.cs", 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,
            JsonSchema4 exceptionSchema,
            SwaggerDocument document,
            SwaggerToCSharpClientGeneratorSettings 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);
        }
Esempio n. 25
0
        static async Task GenerateClient()
        {
            var document = await SwaggerDocument.FromUrlAsync("http://localhost:58829/swagger/v1/swagger.json");

            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = "PokemonLookupAPIClient",
                CSharpGeneratorSettings =
                {
                    Namespace = "PokemonLookupCSharp"
                }
            };

            var generator = new SwaggerToCSharpClientGenerator(document, settings);
            var code      = generator.GenerateFile(NSwag.CodeGeneration.ClientGeneratorOutputType.Full);
            var appFolder = Path.Combine(Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.Parent.FullName, "PokemonLookupCSharp");

            File.WriteAllText(Path.Combine(appFolder, "Client.cs"), code);
        }
Esempio n. 26
0
        private static void GenerateCode(ExchangeSettings exchangeSettings)
        {
            try
            {
                Console.WriteLine($"Generating Documentation for {exchangeSettings.ExchangeName}");
                var document =
                    SwaggerYamlDocument.FromUrlAsync(exchangeSettings.SwaggerFileUrl).Result;

                var settings = new SwaggerToCSharpClientGeneratorSettings
                {
                    ClassName = $"{exchangeSettings.ExchangeName}Client",
                    CSharpGeneratorSettings =
                    {
                        Namespace  = $"CryptoSharp.Client.Exchanges.{exchangeSettings.ExchangeName}",
                        SchemaType = SchemaType.OpenApi3,
                        ClassStyle = CSharpClassStyle.Poco,
                    },
                    GenerateClientInterfaces = true,
                    CodeGeneratorSettings    = { SchemaType = SchemaType.OpenApi3 },
                };



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

                // hack to replace double by decimal
                var regex = new Regex("\\sdouble\\s", RegexOptions.Multiline);

                code = regex.Replace(code, " decimal ");

                if (!Directory.Exists(_generatedDirectory))
                {
                    Directory.CreateDirectory(_generatedDirectory);
                }

                File.WriteAllText($"{ _generatedDirectory}/{exchangeSettings.ExchangeName}Client.cs", code);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Esempio n. 27
0
        public async Task GenerateCSharp()
        {
            var document = await GetSwaggerDocument();

            var settings = new SwaggerToCSharpClientGeneratorSettings()
            {
                GenerateSyncMethods        = true,
                OperationNameGenerator     = new CustomNameGenerator(),
                GenerateOptionalParameters = true,
            };

            settings.CSharpGeneratorSettings.Namespace             = Namespace;
            settings.CSharpGeneratorSettings.PropertyNameGenerator = new MyPropertyNameGenerator(c => ConversionUtilities.ConvertToUpperCamelCase(c, true));


            var generator = new SwaggerToCSharpClientGenerator(document, settings);

            Context.ReturnFile(Encoding.UTF8.GetBytes(generator.GenerateFile()), "ApiClient.cs", "text/plain");
            //File.WriteAllText(CSharpPath, generator.GenerateFile());
        }
Esempio n. 28
0
        static async Task Generate()
        {
            var document = await SwaggerDocument.FromUrlAsync("https://goldennumber.aiedu.msra.cn/swagger/v1%20-%20English/swagger.json");

            var settings = new SwaggerToCSharpClientGeneratorSettings
            {
                ClassName = "GoldenNumberService",
                CSharpGeneratorSettings =
                {
                    Namespace = "GoldenNumber"
                }
            };

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

            var copyright = "// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\r\n\r\n";

            File.WriteAllText("GoldenNumberService.cs", copyright + code.Replace("\r\n", "\n").Replace("\n", "\r\n"));
        }
Esempio n. 29
0
        public static (bool isSingleClient, string typeName) GenerateCSharp(SwaggerDocument document, ApiClientDefinition definition)
        {
            var settings = new SwaggerToCSharpClientGeneratorSettings()
            {
                GenerateSyncMethods        = true,
                OperationNameGenerator     = new CustomOperationNameGenerator(),
                GenerateOptionalParameters = true,
                CSharpGeneratorSettings    =
                {
                    ClassStyle            = CSharpClassStyle.Poco,
                    Namespace             = definition.Namespace,
                    ArrayType             = "System.Collections.Generic.List",
                    PropertyNameGenerator = new CustomPropertyNameGenerator(c => ConversionUtilities.ConvertToUpperCamelCase(c,true)),
                }
            };

            settings.CSharpGeneratorSettings.TypeNameGenerator =
                new DotvmmCSharpTypeNameGenerator(settings.CSharpGeneratorSettings, document);
            settings.CSharpGeneratorSettings.TemplateFactory = new DotvvmClientTemplateFactory(settings.CodeGeneratorSettings, new[] {
                typeof(CSharpGeneratorSettings).Assembly,
                typeof(SwaggerToCSharpGeneratorSettings).Assembly
            });

            var resolver  = SwaggerToCSharpTypeResolver.CreateWithDefinitions(settings.CSharpGeneratorSettings, document);
            var generator = new DotvvmSwaggerToCSharpClientGenerator(document, settings, resolver);
            var csharp    = generator.GenerateFile();

            var newClient = ApiClientUtils.InjectWrapperClass(csharp, Path.GetFileNameWithoutExtension(definition.CSharpClient),
                                                              document, settings.OperationNameGenerator, out var isSingleClient, out var wrapperTypeName);

            definition.IsSingleClient = isSingleClient;

            if (definition.GenerateWrapperClass)
            {
                csharp = newClient;
            }

            File.WriteAllText(definition.CSharpClient, csharp);

            return(isSingleClient, wrapperTypeName);
        }
Esempio n. 30
0
        public static void Main(string[] args)
        {
            var document = SwaggerDocument.FromUrlAsync("http://*****:*****@"..\..\..\..\Squidex.ClientLibrary\Management\Generated.cs", code);
        }
Esempio n. 31
0
        public void When_generating_CSharp_code_then_output_contains_expected_classes()
        {
            // Arrange
            var service = CreateService();

            //// Act
            var settings = new SwaggerToCSharpClientGeneratorSettings {
                ClassName = "MyClass"
            };

            settings.CSharpGeneratorSettings.Namespace = "MyNamespace";

            var generator = new SwaggerToCSharpClientGenerator(service, settings);

            var code = generator.GenerateFile();

            // Assert
            Assert.IsTrue(code.Contains("namespace MyNamespace"));
            Assert.IsTrue(code.Contains("class MyClass"));
            Assert.IsTrue(code.Contains("class Person"));
            Assert.IsTrue(code.Contains("class Address"));
        }