/// <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();
        }
Beispiel #2
0
        /// <summary>
        /// Swagger描述
        /// </summary>
        /// <param name="document">Swagger文档</param>
        public Swagger(SwaggerDocument document)
        {
            this.Document = document;
            this.Settings = new HttpApiSettings();

            this.resolver = SwaggerToCSharpGeneratorBase
                            .CreateResolverWithExceptionSchema(this.Settings.CSharpGeneratorSettings, document);
        }
Beispiel #3
0
 /// <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,
     SwaggerToCSharpTypeResolver resolver)
 {
     _clientCode = clientCode;
     _outputType = outputType;
     _document   = document;
     _generator  = generator;
     _settings   = settings;
     _resolver   = resolver;
 }
Beispiel #4
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();
        }
        /// <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 DotvvmCSharpOperationModel(SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, SwaggerToCSharpTypeResolver resolver) : base(operation, settings, generator, resolver)
 {
     RewriteParameters(operation, settings, generator);
 }
 /// <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)
 {
 }