/// <summary>Generates the file.</summary> /// <param name="document">The document.</param> /// <param name="type">The type.</param> /// <returns>The code.</returns> protected string GenerateFile(SwaggerDocument document, ClientGeneratorOutputType type) { var clientCode = string.Empty; var operations = GetOperations(document); var clientClasses = new List <string>(); if (BaseSettings.OperationNameGenerator.SupportsMultipleClients) { foreach (var controllerOperations in operations.GroupBy(o => o.ControllerName)) { var controllerName = controllerOperations.Key; var controllerClassName = BaseSettings.GenerateControllerName(controllerOperations.Key); clientCode += GenerateClientClass(controllerName, controllerClassName, controllerOperations.ToList(), type) + "\n\n"; clientClasses.Add(controllerClassName); } } else { var controllerName = string.Empty; var controllerClassName = BaseSettings.GenerateControllerName(controllerName); clientCode = GenerateClientClass(controllerName, controllerClassName, operations, type); clientClasses.Add(controllerClassName); } return(GenerateFile(clientCode, clientClasses, type) .Replace("\r", string.Empty) .Replace("\n\n\n\n", "\n\n") .Replace("\n\n\n", "\n\n")); }
internal string GenerateFile(SwaggerDocument document, ClientGeneratorOutputType type) { var clientCode = string.Empty; var operations = GetOperations(document); var clientClasses = new List<string>(); if (BaseSettings.OperationNameGenerator.SupportsMultipleClients) { foreach (var controllerOperations in operations.GroupBy(o => BaseSettings.OperationNameGenerator.GetClientName(document, o.Path, o.HttpMethod, o.Operation))) { var controllerName = controllerOperations.Key; var controllerClassName = GetClassName(controllerOperations.Key); clientCode += GenerateClientClass(controllerName, controllerClassName, controllerOperations.ToList(), type) + "\n\n"; clientClasses.Add(controllerClassName); } } else { var controllerName = string.Empty; var controllerClassName = GetClassName(controllerName); clientCode = GenerateClientClass(controllerName, controllerClassName, operations, type); clientClasses.Add(controllerClassName); } return GenerateFile(clientCode, clientClasses, type) .Replace("\r", string.Empty) .Replace("\n\n\n\n", "\n\n") .Replace("\n\n\n", "\n\n"); }
internal string GenerateFile(SwaggerService service, ClientGeneratorOutputType type) { var clientCode = string.Empty; var operations = GetOperations(service); var clientClasses = new List <string>(); if (BaseSettings.OperationNameGenerator.SupportsMultipleClients) { foreach (var controllerOperations in operations.GroupBy(o => BaseSettings.OperationNameGenerator.GetClientName(service, o.Path, o.HttpMethod, o.Operation))) { var controllerName = controllerOperations.Key; var controllerClassName = GetClassName(controllerOperations.Key); clientCode += GenerateClientClass(controllerName, controllerClassName, controllerOperations.ToList(), type) + "\n\n"; clientClasses.Add(controllerClassName); } } else { var controllerName = string.Empty; var controllerClassName = GetClassName(controllerName); clientCode = GenerateClientClass(controllerName, controllerClassName, operations, type); clientClasses.Add(controllerClassName); } return(GenerateFile(clientCode, clientClasses, type) .Replace("\r", string.Empty) .Replace("\n\n\n\n", "\n\n") .Replace("\n\n\n", "\n\n")); }
/// <summary>Generates the the whole file containing all needed types.</summary> /// <param name="outputType">Type of the output.</param> /// <returns>The code</returns> public string GenerateFile(ClientGeneratorOutputType outputType) { if (!OutputRequiresRefresh(BaseSettings.OutputFilePath)) { // just give back the original file as it hasn't changed return(File.ReadAllText(BaseSettings.OutputFilePath)); } var clientTypes = GenerateAllClientTypes(); var dtoTypes = BaseSettings.GenerateDtoTypes ? GenerateDtoTypes() : Enumerable.Empty <CodeArtifact>(); clientTypes = outputType == ClientGeneratorOutputType.Full ? clientTypes : outputType == ClientGeneratorOutputType.Implementation ? clientTypes.Where(t => t.Category != CodeArtifactCategory.Contract) : outputType == ClientGeneratorOutputType.Contracts ? clientTypes.Where(t => t.Category == CodeArtifactCategory.Contract) : Enumerable.Empty <CodeArtifact>(); dtoTypes = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Contracts ? dtoTypes : Enumerable.Empty <CodeArtifact>(); return(GenerateFile(clientTypes, dtoTypes, outputType) .Replace("\r", string.Empty) .Replace("\n\n\n\n", "\n\n") .Replace("\n\n\n", "\n\n")); }
/// <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; }
internal override string GenerateClientClass(string controllerName, string controllerClassName, IList<OperationModel> operations, ClientGeneratorOutputType outputType) { var model = new ControllerTemplateModel(Settings) { Class = controllerClassName, BaseUrl = _document.BaseUrl, Operations = operations }; var template = Settings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Controller", model); return template.Render(); }
/// <summary> /// Gets the client code. /// </summary> /// <param name="outputType">Type of the output.</param> /// <returns></returns> public List <(string ClientName, string Code)> GetClientCode(ClientGeneratorOutputType outputType) { if (Clients == default) { IdentifyClients(); } Console.WriteLine("Creating response object from the generated code."); Clients?.ForEach(c => { c.Code = GenerateClientClass(c, outputType); }); return(Clients?.Select(k => (k.ClientClassName, k.Code)).ToList()); // return (Clients?.Select(c=>c.Code).Aggregate((c, n) => $"{c}\n\n\n{n}"))??string.Empty; }
/// <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, OpenApiDocument document, CSharpGeneratorBaseSettings settings, CSharpGeneratorBase generator, CSharpTypeResolver resolver) { _outputType = outputType; _document = document; _generator = generator; _settings = settings; _resolver = resolver; _clientCode = clientTypes.Concatenate(); Classes = dtoTypes.Concatenate(); }
/// <summary>Generates the the whole file containing all needed types.</summary> /// <param name="outputType">Type of the output.</param> /// <returns>The code</returns> public string GenerateFile(ClientGeneratorOutputType outputType) { var clientTypes = GenerateAllClientTypes(); var dtoTypes = BaseSettings.GenerateDtoTypes ? GenerateDtoTypes() : Enumerable.Empty <CodeArtifact>(); clientTypes = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Implementation ? clientTypes : Enumerable.Empty <CodeArtifact>(); dtoTypes = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Contracts ? dtoTypes : Enumerable.Empty <CodeArtifact>(); return(GenerateFile(clientTypes, dtoTypes, outputType) .Replace("\r", string.Empty) .Replace("\n\n\n\n", "\n\n") .Replace("\n\n\n", "\n\n")); }
/// <summary> /// Generates the client class. /// </summary> /// <param name="csci">The csci.</param> /// <param name="outputType">Type of the output.</param> /// <returns></returns> public string GenerateClientClass(BaseClientInfo csci, ClientGeneratorOutputType outputType) => GenerateClientCode(csci.ClientClassName, csci.ClientControllerName, csci.Operations, outputType);
internal abstract string GenerateFile(string clientCode, IEnumerable <string> clientClasses, ClientGeneratorOutputType outputType);
internal abstract string GenerateClientClass(string controllerName, string controllerClassName, IList <OperationModel> operations, ClientGeneratorOutputType outputType);
internal override string GenerateClientClass(string controllerName, string controllerClassName, IList <OperationModel> operations, ClientGeneratorOutputType outputType) { var model = new ClientTemplateModel(controllerName, controllerClassName, operations, _service, Settings) { GenerateContracts = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Contracts, GenerateImplementation = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Implementation, }; var template = Settings.CSharpGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Client", model); return(template.Render()); }
/// <summary>Generates the the whole file containing all needed types.</summary> /// <param name="outputType">The output type.</param> /// <returns>The code</returns> public string GenerateFile(ClientGeneratorOutputType outputType) { return(GenerateFile(_service, outputType)); }
internal override string GenerateClientClass(string controllerName, string controllerClassName, IList <OperationModel> operations, ClientGeneratorOutputType outputType) { var model = new ControllerTemplateModel(Settings) { Class = controllerClassName, BaseUrl = _document.BaseUrl, Operations = operations }; var template = Settings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Controller", model); return(template.Render()); }
/// <summary>Generates the client class.</summary> /// <param name="controllerName">Name of the controller.</param> /// <param name="controllerClassName">Name of the controller class.</param> /// <param name="operations">The operations.</param> /// <param name="outputType">Type of the output.</param> /// <returns>The code.</returns> protected override string GenerateClientClass(string controllerName, string controllerClassName, IList <CSharpOperationModel> operations, ClientGeneratorOutputType outputType) { var exceptionSchema = (Resolver as CSharpTypeResolver)?.ExceptionSchema; var model = new CSharpClientTemplateModel(controllerName, controllerClassName, operations, exceptionSchema, _document, Settings) { GenerateContracts = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Contracts, GenerateImplementation = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Implementation, }; var template = Settings.CSharpGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Client", model); return(template.Render()); }
/// <summary>Generates the file.</summary> /// <param name="clientCode">The client code.</param> /// <param name="clientClasses">The client classes.</param> /// <param name="outputType">Type of the output.</param> /// <returns>The code.</returns> protected override string GenerateFile(string clientCode, IEnumerable <string> clientClasses, ClientGeneratorOutputType outputType) { var model = new CSharpFileTemplateModel(clientCode, outputType, _document, _settings, this, (SwaggerToCSharpTypeResolver)Resolver); var template = _settings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "File", model); return(template.Render()); }
/// <summary> /// 生成文件 /// 这里不生成 /// </summary> /// <param name="clientTypes"></param> /// <param name="dtoTypes"></param> /// <param name="outputType"></param> /// <returns></returns> protected override string GenerateFile(IEnumerable <CodeArtifact> clientTypes, IEnumerable <CodeArtifact> dtoTypes, ClientGeneratorOutputType outputType) { return(string.Empty); }
internal override string GenerateClientClass(string controllerName, string controllerClassName, IList <OperationModel> operations, ClientGeneratorOutputType outputType) { UpdateUseDtoClassAndDataConversionCodeProperties(operations); var model = new ClientTemplateModel(GetClassName(controllerClassName), operations, _service, Settings); var template = Settings.CreateTemplate(model); var code = template.Render(); return(AppendExtensionClassIfNecessary(controllerClassName, code)); }
/// <summary>Generates the file.</summary> /// <param name="clientCode">The client code.</param> /// <param name="clientClasses">The client classes.</param> /// <param name="outputType">Type of the output.</param> /// <returns>The code.</returns> protected override string GenerateFile(string clientCode, IEnumerable <string> clientClasses, ClientGeneratorOutputType outputType) { var model = new TypeScriptFileTemplateModel(clientCode, clientClasses, _document, _extensionCode, Settings, _resolver); var template = BaseSettings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("TypeScript", "File", model); return(template.Render()); }
/// <summary> /// 生成文件 /// 这里不生成 /// </summary> /// <param name="clientCode"></param> /// <param name="clientClasses"></param> /// <param name="outputType"></param> /// <returns></returns> protected override string GenerateFile(string clientCode, IEnumerable <string> clientClasses, ClientGeneratorOutputType outputType) { return(string.Empty); }
internal override string GenerateClientClass(string controllerName, string controllerClassName, IList<OperationModel> operations, ClientGeneratorOutputType outputType) { var exceptionSchema = (Resolver as SwaggerToCSharpTypeResolver)?.ExceptionSchema; var model = new ClientTemplateModel(controllerName, controllerClassName, operations, _document, exceptionSchema, Settings) { GenerateContracts = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Contracts, GenerateImplementation = outputType == ClientGeneratorOutputType.Full || outputType == ClientGeneratorOutputType.Implementation, }; var template = Settings.CSharpGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Client", model); return template.Render(); }
internal override string GenerateClientClass(string controllerName, string controllerClassName, IList<OperationModel> operations, ClientGeneratorOutputType outputType) { UpdateUseDtoClassAndDataConversionCodeProperties(operations); var model = new ClientTemplateModel(GetClassName(controllerClassName), operations, _document, Settings); var template = Settings.CreateTemplate(model); var code = template.Render(); return AppendExtensionClassIfNecessary(controllerClassName, code); }
/// <summary>Generates the file.</summary> /// <param name="clientTypes">The client types.</param> /// <param name="dtoTypes">The DTO types.</param> /// <param name="outputType">Type of the output.</param> /// <returns>The code.</returns> protected override string GenerateFile(IEnumerable <CodeArtifact> clientTypes, IEnumerable <CodeArtifact> dtoTypes, ClientGeneratorOutputType outputType) { var model = new CSharpFileTemplateModel(clientTypes, dtoTypes, outputType, _document, _settings, this, (CSharpTypeResolver)Resolver); var template = _settings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "File", model); return(template.Render()); }
/// <summary> /// 生成客户端调用代码 /// 但实际只为了获得HttpApi实例 /// </summary> /// <param name="controllerName"></param> /// <param name="controllerClassName"></param> /// <param name="operations"></param> /// <param name="outputType"></param> /// <returns></returns> protected override string GenerateClientClass(string controllerName, string controllerClassName, IList <CSharpOperationModel> operations, ClientGeneratorOutputType outputType) { var model = new HttpApi(controllerClassName, operations, this.swagger.Document, this.swagger.Settings); this.httpApiList.Add(model); return(string.Empty); }
internal override string GenerateFile(string clientCode, IEnumerable<string> clientClasses, ClientGeneratorOutputType outputType) { var model = new FileTemplateModel(clientCode, outputType, _document, this, _settings, (SwaggerToCSharpTypeResolver)Resolver); var template = _settings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "File", model); return template.Render(); }
/// <summary>Generates the the whole file containing all needed types.</summary> /// <param name="outputType">The output type.</param> /// <returns>The code</returns> public string GenerateFile(ClientGeneratorOutputType outputType) { return GenerateFile(_document, outputType); }
/// <summary>Generates the file.</summary> /// <param name="clientTypes">The client types.</param> /// <param name="dtoTypes">The DTO types.</param> /// <param name="outputType">Type of the output.</param> /// <returns>The code.</returns> protected abstract string GenerateFile(IEnumerable <CodeArtifact> clientTypes, IEnumerable <CodeArtifact> dtoTypes, ClientGeneratorOutputType outputType);
internal override string GenerateFile(string clientCode, IEnumerable<string> clientClasses, ClientGeneratorOutputType outputType) { var model = new FileTemplateModel(_document, clientCode, clientClasses, Settings, _extensionCode, _resolver); var template = BaseSettings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("TypeScript", "File", model); return template.Render(); }
/// <summary>Generates the client class.</summary> /// <param name="controllerName">Name of the controller.</param> /// <param name="controllerClassName">Name of the controller class.</param> /// <param name="operations">The operations.</param> /// <param name="outputType">Type of the output.</param> /// <returns>The code.</returns> protected override string GenerateClientClass(string controllerName, string controllerClassName, IList <CSharpOperationModel> operations, ClientGeneratorOutputType outputType) { var model = new CSharpControllerTemplateModel(controllerClassName, operations, _document, Settings); var template = Settings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Controller", model); return(template.Render()); }
/// <summary>Generates the the whole file containing all needed types.</summary> /// <param name="outputType">The output type.</param> /// <returns>The code</returns> public string GenerateFile(ClientGeneratorOutputType outputType) { return(GenerateFile(_document, outputType)); }
internal override string GenerateFile(string clientCode, IEnumerable <string> clientClasses, ClientGeneratorOutputType outputType) { var model = new FileTemplateModel(_service, clientCode, clientClasses, Settings, _resolver); var template = BaseSettings.CodeGeneratorSettings.TemplateFactory.CreateTemplate("TypeScript", "File", model); return(template.Render()); }
internal abstract string GenerateFile(string clientCode, IEnumerable<string> clientClasses, ClientGeneratorOutputType outputType);
/// <summary>Generates the client class.</summary> /// <param name="controllerName">Name of the controller.</param> /// <param name="controllerClassName">Name of the controller class.</param> /// <param name="operations">The operations.</param> /// <param name="outputType">Type of the output.</param> /// <returns>The code.</returns> protected override string GenerateClientClass(string controllerName, string controllerClassName, IList <TypeScriptOperationModel> operations, ClientGeneratorOutputType outputType) { UpdateUseDtoClassAndDataConversionCodeProperties(operations); var model = new TypeScriptClientTemplateModel(controllerName, controllerClassName, operations, _extensionCode, _document, Settings); var template = Settings.CreateTemplate(model); return(template.Render()); }
internal abstract string GenerateClientClass(string controllerName, string controllerClassName, IList<OperationModel> operations, ClientGeneratorOutputType outputType);