mirror of
https://github.com/openbullet/openbullet.git
synced 2023-10-21 07:33:42 -05:00
First commit - OpenBullet 1.0.0
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
using Extreme.Net;
|
||||
using RuriLib.Models;
|
||||
using System;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace RuriLib.LS
|
||||
{
|
||||
/// <summary>
|
||||
/// Parses a SET command.
|
||||
/// </summary>
|
||||
class SetParser
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the Action that needs to be executed.
|
||||
/// </summary>
|
||||
/// <param name="line">The data line to parse</param>
|
||||
/// <param name="data">The BotData needed for variable replacement</param>
|
||||
/// <returns>The Action to execute</returns>
|
||||
public static Action Parse(string line, BotData data)
|
||||
{
|
||||
var input = line.Trim();
|
||||
var field = LineParser.ParseToken(ref input, TokenType.Parameter, true).ToUpper();
|
||||
|
||||
return new Action(() =>
|
||||
{
|
||||
switch (field)
|
||||
{
|
||||
case "SOURCE":
|
||||
data.ResponseSource = LineParser.ParseLiteral(ref input, "SOURCE", true, data);
|
||||
break;
|
||||
|
||||
case "STATUS":
|
||||
data.Status = (BotStatus)LineParser.ParseEnum(ref input, "STATUS", typeof(BotStatus));
|
||||
if (data.Status == BotStatus.CUSTOM) data.CustomStatus = LineParser.ParseLiteral(ref input, "CUSTOM STATUS");
|
||||
break;
|
||||
|
||||
case "RESPONSECODE":
|
||||
data.ResponseCode = LineParser.ParseInt(ref input, "RESPONSECODE").ToString();
|
||||
break;
|
||||
|
||||
case "COOKIE":
|
||||
var name = LineParser.ParseLiteral(ref input, "NAME", true, data);
|
||||
data.Cookies.Add(name, LineParser.ParseLiteral(ref input, "VALUE", true, data));
|
||||
break;
|
||||
|
||||
case "ADDRESS":
|
||||
data.Address = LineParser.ParseLiteral(ref input, "ADDRESS", true, data);
|
||||
break;
|
||||
|
||||
case "PROXY":
|
||||
data.Proxy = new CProxy(LineParser.ParseLiteral(ref input, "PROXY", true, data), data.Proxy.Type);
|
||||
break;
|
||||
|
||||
case "PROXYTYPE":
|
||||
data.Proxy.Type = (ProxyType)LineParser.ParseEnum(ref input, "PROXYTYPE", typeof(ProxyType));
|
||||
break;
|
||||
|
||||
case "DATA":
|
||||
data.Data = new CData(LineParser.ParseLiteral(ref input, "DATA", true, data), new WordlistType());
|
||||
break;
|
||||
|
||||
case "VAR":
|
||||
data.Variables.Set(new CVar(
|
||||
LineParser.ParseLiteral(ref input, "NAME", true, data),
|
||||
LineParser.ParseLiteral(ref input, "VALUE", true, data),
|
||||
false
|
||||
));
|
||||
break;
|
||||
|
||||
case "CAP":
|
||||
data.Variables.Set(new CVar(
|
||||
LineParser.ParseLiteral(ref input, "NAME", true, data),
|
||||
LineParser.ParseLiteral(ref input, "VALUE", true, data),
|
||||
true
|
||||
));
|
||||
break;
|
||||
|
||||
case "GVAR":
|
||||
try
|
||||
{
|
||||
data.GlobalVariables.Set(new CVar(
|
||||
LineParser.ParseLiteral(ref input, "NAME", true, data),
|
||||
LineParser.ParseLiteral(ref input, "VALUE", true, data),
|
||||
false
|
||||
));
|
||||
}
|
||||
catch { }
|
||||
break;
|
||||
|
||||
case "NEWGVAR":
|
||||
try
|
||||
{
|
||||
data.GlobalVariables.SetNew(new CVar(
|
||||
LineParser.ParseLiteral(ref input, "NAME", true, data),
|
||||
LineParser.ParseLiteral(ref input, "VALUE", true, data),
|
||||
false
|
||||
));
|
||||
}
|
||||
catch { }
|
||||
break;
|
||||
|
||||
case "GCOOKIES":
|
||||
data.GlobalCookies.Clear();
|
||||
foreach (var cookie in data.Cookies)
|
||||
data.GlobalCookies.Add(cookie.Key, cookie.Value);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new ArgumentException($"Invalid identifier {field}");
|
||||
}
|
||||
|
||||
data.Log(new LogEntry($"SET command executed on field {field}", Colors.White));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user