using AutoBet.ApiGenerator.Extensions; using System; using System.IO; using System.Text; using System.Xml.Linq; namespace AutoBet.ApiGenerator { internal class ApiClassessGenerator { public string _inputXmlFile { get; } public string _outputFilesDirectory { get; } public ApiClassessGenerator(string inputXmlFile, string outputFilesDirectory) { _inputXmlFile = inputXmlFile; _outputFilesDirectory = outputFilesDirectory; } internal void Process(string namespaceValue, string modelFolder) { var doc = XDocument.Load(_inputXmlFile); var nodes = doc.Root.Elements("dataType"); namespaceValue += "." + modelFolder; var modelsDirectory = Path.Combine(_outputFilesDirectory, modelFolder); Directory.CreateDirectory(modelsDirectory); foreach (var node in nodes) { var sb = new StringBuilder(); CSharpClassBuilder.UsingHeader(sb, namespaceValue, namespaceValue + ".Enums"); var descriptionNode = node.Element("description"); if (descriptionNode != null && !String.IsNullOrWhiteSpace(descriptionNode.Value)) { CSharpClassBuilder.Summary(sb, descriptionNode.Value, isClassSummary: true); } var name = node.Attribute("name").Value; CSharpClassBuilder.ClassHeader(sb, name); var parameters = node.Elements("parameter"); foreach(var parameter in parameters) { sb.AppendWithIndent(8, "public "); var parameterReturnType = CSharpClassBuilder.GetDataType(parameter.Attribute("type").Value); sb.Append(parameterReturnType); sb.Append(" "); var parameterName = parameter.Attribute("name").Value; for(var i = 0; i < parameterName.Length; i++) { if(i == 0) { sb.Append(Char.ToUpper(parameterName[i])); continue; } sb.Append(parameterName[i]); } sb.Append(" { get; set; }"); sb.AppendLine(); } CSharpClassBuilder.ClassFooter(sb); CSharpClassBuilder.UsingFooter(sb); File.WriteAllText(Path.Combine(modelsDirectory, $"{name}.cs"), sb.ToString()); } } } }