72 lines
2.6 KiB
C#
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());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|