diff options
Diffstat (limited to 'IrcStates/ISupport.cs')
-rw-r--r-- | IrcStates/ISupport.cs | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/IrcStates/ISupport.cs b/IrcStates/ISupport.cs deleted file mode 100644 index f481f5f..0000000 --- a/IrcStates/ISupport.cs +++ /dev/null @@ -1,114 +0,0 @@ -// ReSharper disable InconsistentNaming - -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; - -namespace IrcStates -{ - public class ISupport - { - public ISupport() - { - Raw = new Dictionary<string, string>(); - Modes = 3; - CaseMapping = Casemap.CaseMapping.Rfc1459; - Prefix = new ISupportPrefix("(ov)@+"); - ChanModes = new ISupportChanModes("b,k,l,imnpst"); - ChanTypes = new List<string> {"#"}; - StatusMsg = new List<string>(); - Whox = false; - } - - public Dictionary<string, string> Raw { get; set; } - public string Network { get; set; } - public ISupportChanModes ChanModes { get; set; } - public ISupportPrefix Prefix { get; set; } - public int? Modes { get; set; } - public Casemap.CaseMapping CaseMapping { get; set; } - public List<string> ChanTypes { get; set; } - public List<string> StatusMsg { get; set; } - public string CallerId { get; set; } - public string Excepts { get; set; } - public string Invex { get; set; } - public int? Monitor { get; set; } - public int? Watch { get; set; } - public bool Whox { get; set; } - - public void Parse(IEnumerable<string> tokens) - { - if (tokens == null) return; - - // remove first and last - tokens = tokens.Skip(1).SkipLast(1); - - foreach (var token in tokens) - { - var split = token.Split('=', 2); - var key = split[0]; - - var value = string.Empty; - if (split.Length > 1) - { - value = split[1]; - Raw[key] = value; - } - - switch (split[0]) - { - case "NETWORK": - Network = value; - break; - case "CHANMODES": - ChanModes = new ISupportChanModes(value); - break; - case "PREFIX": - Prefix = new ISupportPrefix(value); - break; - case "STATUSMSG": - StatusMsg = new List<string>(); - StatusMsg.AddRange(value.Select(c => c.ToString(CultureInfo.InvariantCulture))); - break; - case "MODES": - if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var modes)) - Modes = modes; - else - Modes = -1; - break; - case "MONITOR": - if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var monitor)) - Monitor = monitor; - else - Monitor = -1; - break; - case "WATCH": - if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var watch)) - Watch = watch; - else - Watch = -1; - break; - case "CASEMAPPING": - if (Enum.TryParse(value, true, out Casemap.CaseMapping caseMapping)) CaseMapping = caseMapping; - break; - case "CHANTYPES": - ChanTypes = new List<string>(); - ChanTypes.AddRange(value.Select(c => c.ToString(CultureInfo.InvariantCulture))); - break; - case "CALLERID": - CallerId = string.IsNullOrEmpty(value) ? "g" : value; - break; - case "EXCEPTS": - Excepts = string.IsNullOrEmpty(value) ? "e" : value; - break; - case "INVEX": - Invex = string.IsNullOrEmpty(value) ? "I" : value; - break; - case "WHOX": - Whox = true; - break; - } - } - } - } -} |