using System; using System.Text; namespace AsterNET.FastAGI.Command { /// <summary> /// Returns the value of the given channel varible and understands complex /// variable names and builtin variables, unlike the GetVariableCommand.<br/> /// You can also use this command to use custom Asterisk functions. Syntax is "func(args)".<br/> /// Returns 0 if the variable is not set or channel does not exist. Returns 1 if /// the variable is set and returns the variable in parenthesis.<br/> /// Example return code: 200 result=1 (testvariable) /// Available since Asterisk 1.2 /// </summary> public class GetFullVariableCommand : AGICommand { private string varName; private string channel; /// <summary> /// Creates a new GetFullVariableCommand. /// </summary> /// <param name="variable">the name of the variable to retrieve.</param> public GetFullVariableCommand(string variable) { this.varName = variable; } /// <summary> /// Creates a new GetFullVariableCommand. /// </summary> /// <param name="variable">the name of the variable to retrieve.</param> /// <param name="channel">the name of the channel.</param> public GetFullVariableCommand(string variable, string channel) { this.varName = variable; this.channel = channel; } /// <summary> /// Get/Set the name of the variable to retrieve. /// </summary> public string Variable { get { return varName; } set { this.varName = value;} } /// <summary> /// Get/Set the name of the channel. /// </summary> public string Channel { get { return channel; } set { this.channel = value; } } public override string BuildCommand() { StringBuilder sb; sb = new StringBuilder("GET FULL VARIABLE "); sb.Append(EscapeAndQuote(varName)); if (channel != null) { sb.Append(" "); sb.Append(EscapeAndQuote(channel)); } return sb.ToString(); } } }