ChipDNAClientCLI/ExtraParameter.cs
2025-06-23 19:53:54 +01:00

73 lines
2.0 KiB
C#

using System;
using System.Xml;
namespace Creditcall.ChipDna.Client
{
internal class ExtraParameter
{
public ExtraParameter(XmlNode paramNode) :
this(paramNode.InnerText,
ParseAttributeValue(paramNode, "description"),
ParseAttributeValue(paramNode, "default"),
ParseTypeValue(paramNode))
{
}
private static string ParseAttributeValue(XmlNode param, string attributeName)
{
if (param.Attributes == null || param.Attributes[attributeName] == null)
{
return null;
}
return param.Attributes[attributeName].Value;
}
private static bool ParseTypeValue(XmlNode param)
{
string type = ParseAttributeValue(param, "type");
if(type == null)
{
throw new InvalidOperationException("'type' attribute is not optional");
}
switch (type)
{
case "preset": return false;
case "input": return true;
default: throw new InvalidOperationException("'type' attribute must be either 'preset' or 'input'");
}
}
public ExtraParameter(string key, string description, string defaultValue, bool getInput)
{
this.key = key;
this.description = description;
this.defaultValue = defaultValue;
this.getInput = getInput;
}
public string Key
{
get { return key; }
}
public string Description
{
get { return description; }
}
public string DefaultValue
{
get { return defaultValue; }
}
public bool GetInput
{
get { return getInput; }
}
private readonly string description;
private readonly string key;
private readonly string defaultValue;
private readonly bool getInput;
}
}