Initial commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user