First commit - OpenBullet 1.0.0

This commit is contained in:
ruri
2019-03-31 12:18:26 +02:00
parent 1a0775b648
commit 422079782d
296 changed files with 31668 additions and 0 deletions
+116
View File
@@ -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));
});
}
}
}