Files
AutoBet/AutoBet.ApiGenerator/ApiClassessGenerator.cs
T
2020-04-13 15:16:46 +01:00

72 lines
2.6 KiB
C#

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());
}
}
}
}