/// <summary>Initializes a new instance of the <see cref="CSharpOperationModel" /> class.</summary> /// <param name="operation">The operation.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The generator.</param> /// <param name="resolver">The resolver.</param> public CSharpOperationModel( SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, SwaggerToCSharpTypeResolver resolver) : base(resolver.ExceptionSchema, operation, resolver, generator, settings) { _settings = settings; _operation = operation; _generator = generator; _resolver = resolver; var parameters = _operation.ActualParameters.ToList(); if (settings.GenerateOptionalParameters) { parameters = parameters.OrderBy(p => !p.IsRequired).ToList(); } Parameters = parameters.Select(parameter => new CSharpParameterModel(parameter.Name, GetParameterVariableName(parameter, _operation.Parameters), ResolveParameterType(parameter), parameter, parameters, _settings.CodeGeneratorSettings, _generator)) .ToList(); }
/// <summary>Initializes a new instance of the <see cref="FileTemplateModel" /> class.</summary> /// <param name="clientCode"></param> /// <param name="outputType"></param> /// <param name="service">The service.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> public FileTemplateModel(string clientCode, ClientGeneratorOutputType outputType, SwaggerService service, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpTypeResolver resolver) { _clientCode = clientCode; _outputType = outputType; _service = service; _settings = settings; _resolver = resolver; }
/// <summary>Initializes a new instance of the <see cref="FileTemplateModel" /> class.</summary> /// <param name="clientCode">The client code.</param> /// <param name="outputType">Type of the output.</param> /// <param name="document">The Swagger document.</param> /// <param name="clientGeneratorBase">The client generator base.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> public FileTemplateModel(string clientCode, ClientGeneratorOutputType outputType, SwaggerDocument document, ClientGeneratorBase clientGeneratorBase, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpTypeResolver resolver) { _clientCode = clientCode; _outputType = outputType; _document = document; _clientGeneratorBase = clientGeneratorBase; _settings = settings; _resolver = resolver; }
/// <summary>Initializes a new instance of the <see cref="FileTemplateModel" /> class.</summary> /// <param name="clientCode">The client code.</param> /// <param name="outputType">Type of the output.</param> /// <param name="document">The Swagger document.</param> /// <param name="clientGeneratorBase">The client generator base.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> public FileTemplateModel(string clientCode, ClientGeneratorOutputType outputType, SwaggerDocument document, ClientGeneratorBase clientGeneratorBase, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpTypeResolver resolver) { _clientCode = clientCode; _outputType = outputType; _document = document; _clientGeneratorBase = clientGeneratorBase; _settings = settings; _resolver = resolver; }
/// <summary>Initializes a new instance of the <see cref="CSharpFileTemplateModel" /> class.</summary> /// <param name="clientCode">The client code.</param> /// <param name="outputType">Type of the output.</param> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The client generator base.</param> /// <param name="resolver">The resolver.</param> public CSharpFileTemplateModel( string clientCode, ClientGeneratorOutputType outputType, SwaggerDocument document, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, CSharpTypeResolver resolver) { _clientCode = clientCode; _outputType = outputType; _document = document; _generator = generator; _settings = settings; _resolver = resolver; Classes = GenerateDtoTypes(); }
/// <summary>Initializes a new instance of the <see cref="CSharpFileTemplateModel" /> class.</summary> /// <param name="clientTypes">The client types.</param> /// <param name="dtoTypes">The DTO types.</param> /// <param name="outputType">Type of the output.</param> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The client generator base.</param> /// <param name="resolver">The resolver.</param> public CSharpFileTemplateModel( IEnumerable <CodeArtifact> clientTypes, IEnumerable <CodeArtifact> dtoTypes, ClientGeneratorOutputType outputType, SwaggerDocument document, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, CSharpTypeResolver resolver) { _outputType = outputType; _document = document; _generator = generator; _settings = settings; _resolver = resolver; _clientCode = clientTypes.Concatenate(); Classes = dtoTypes.Concatenate(); }
/// <summary>Initializes a new instance of the <see cref="CSharpOperationModel" /> class.</summary> /// <param name="operation">The operation.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The generator.</param> /// <param name="resolver">The resolver.</param> public CSharpOperationModel( SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, CSharpTypeResolver resolver) : base(resolver.ExceptionSchema, operation, resolver, generator, settings) { _settings = settings; _operation = operation; _generator = generator; _resolver = resolver; var parameters = _operation.ActualParameters.ToList(); if (settings.GenerateOptionalParameters) { // TODO: Move to CSharpControllerOperationModel if (generator is SwaggerToCSharpControllerGenerator) { parameters = parameters .OrderBy(p => p.Position ?? 0) .OrderBy(p => !p.IsRequired) .ThenBy(p => p.Default == null).ToList(); } else { parameters = parameters .OrderBy(p => p.Position ?? 0) .OrderBy(p => !p.IsRequired) .ToList(); } } Parameters = parameters .Where(p => !settings.ExcludedParameterNames.Contains(p.Name)) .Select(parameter => new CSharpParameterModel(parameter.Name, GetParameterVariableName(parameter, _operation.Parameters), ResolveParameterType(parameter), parameter, parameters, _settings.CodeGeneratorSettings, _generator, _resolver)) .ToList(); }
private void RewriteParameters(SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator) { var parameters = operation.ActualParameters.ToList(); if (settings.GenerateOptionalParameters) { parameters = parameters.OrderBy(p => !p.IsRequired).ToList(); } var newParameters = parameters.Select(parameter => new DotvvmCSharpParameterModel(parameter.Name, GetParameterVariableName(parameter, operation.Parameters), ResolveParameterType(parameter), parameter, parameters, settings.CodeGeneratorSettings, generator, this) ); Parameters = new List <CSharpParameterModel>(newParameters); }
public void When_generating_CSharp_code_then_output_contains_expected_classes() { // Arrange var service = CreateService(); //// Act var settings = new SwaggerToCSharpGeneratorSettings { ClassName = "MyClass" }; settings.CSharpGeneratorSettings.Namespace = "MyNamespace"; var generator = new SwaggerToCSharpGenerator(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")); }
public SwaggerToCSharpCommand() { Settings = new SwaggerToCSharpGeneratorSettings(); Namespace = "MyNamespace"; }
public DotvvmCSharpOperationModel(SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, SwaggerToCSharpTypeResolver resolver) : base(operation, settings, generator, resolver) { RewriteParameters(operation, settings, generator); }
public void When_parameter_is_array_then_CSharp_is_correct() { //// Arrange var swagger = @"{ ""swagger"" : ""2.0"", ""info"" : { ""version"" : ""1.0.2"", ""title"" : ""Test API"" }, ""host"" : ""localhost:8080"", ""basePath"" : ""/"", ""tags"" : [ { ""name"" : ""api"" } ], ""schemes"" : [ ""http"" ], ""paths"" : { ""/removeElement"" : { ""delete"" : { ""tags"" : [ ""api"" ], ""summary"" : ""Removes elements"", ""description"" : ""Removes elements"", ""operationId"" : ""removeElement"", ""consumes"" : [ ""application/json"" ], ""produces"" : [ ""application/json"" ], ""parameters"" : [ { ""name"" : ""X-User"", ""in"" : ""header"", ""description"" : ""User identifier"", ""required"" : true, ""type"" : ""string"" }, { ""name"" : ""elementId"", ""in"" : ""query"", ""description"" : ""The ids of existing elements that should be removed"", ""required"" : false, ""type"" : ""array"", ""items"" : { ""type"" : ""integer"", ""format"" : ""int64"" }, } ], ""responses"" : { ""default"" : { ""description"" : ""successful operation"" } } } } }, ""definitions"" : { } } "; var service = SwaggerService.FromJson(swagger); //// Act var settings = new SwaggerToCSharpGeneratorSettings { ClassName = "MyClass" }; var generator = new SwaggerToCSharpGenerator(service, settings); var code = generator.GenerateFile(); //// Assert Assert.IsTrue(code.Contains(@"foreach(var item in elementId) { url += string.Format(""elementId={0}&"", Uri.EscapeUriString(item.ToString())); }")); }
/// <summary>Initializes a new instance of the <see cref="CSharpTemplateModelBase"/> class.</summary> /// <param name="controllerName">Name of the controller.</param> /// <param name="settings">The settings.</param> protected CSharpTemplateModelBase(string controllerName, SwaggerToCSharpGeneratorSettings settings) { ResponseClass = settings.ResponseClass.Replace("{controller}", controllerName); WrapResponses = settings.WrapResponses; }
/// <summary> /// WebApiClient的请求方法数据模型 /// </summary> /// <param name="operation">Swagger操作</param> /// <param name="settings">设置项</param> /// <param name="generator">代码生成器</param> /// <param name="resolver">语法解析器</param> public HttpApiMethod(SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, CSharpTypeResolver resolver) : base(operation, settings, generator, resolver) { }
/// <summary>Initializes a new instance of the <see cref="CSharpTemplateModelBase"/> class.</summary> /// <param name="controllerName">Name of the controller.</param> /// <param name="settings">The settings.</param> protected CSharpTemplateModelBase(string controllerName, SwaggerToCSharpGeneratorSettings settings) { _controllerName = controllerName; _settings = settings; }