Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
 /// <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;
 }
Exemplo n.º 3
0
 /// <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;
 }
Exemplo n.º 4
0
 /// <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();
        }
Exemplo n.º 6
0
        /// <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();
        }
Exemplo n.º 7
0
        /// <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();
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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"));
        }
Exemplo n.º 10
0
 public SwaggerToCSharpCommand()
 {
     Settings  = new SwaggerToCSharpGeneratorSettings();
     Namespace = "MyNamespace";
 }
Exemplo n.º 11
0
 public DotvvmCSharpOperationModel(SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, SwaggerToCSharpTypeResolver resolver) : base(operation, settings, generator, resolver)
 {
     RewriteParameters(operation, settings, generator);
 }
Exemplo n.º 12
0
        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())); }"));
        }
Exemplo n.º 13
0
 /// <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;
 }
Exemplo n.º 14
0
 /// <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)
 {
 }
Exemplo n.º 15
0
 /// <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;
 }