Fixed namespaces

This commit is contained in:
Cameron
2024-03-20 19:27:24 -05:00
parent 9a69404c66
commit 8302b2639b
17 changed files with 40 additions and 22 deletions

View File

@@ -5,7 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC namespace TwitchIrcClient.IRC
{ {
public record struct Badge(string Name, string Version) public record struct Badge(string Name, string Version)
{ {

View File

@@ -3,9 +3,9 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using TwitchLogger.IRC.Messages; using TwitchIrcClient.IRC.Messages;
namespace TwitchLogger.IRC namespace TwitchIrcClient.IRC
{ {
//public class IrcMessageEventArgs(ReceivedMessage message) : EventArgs //public class IrcMessageEventArgs(ReceivedMessage message) : EventArgs
//{ //{

View File

@@ -13,9 +13,9 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Timers; using System.Timers;
using TwitchIrcClient.IRC.Messages; using TwitchIrcClient.IRC.Messages;
using TwitchLogger.IRC.Messages; using TwitchIrcClient.IRC.Messages;
namespace TwitchLogger.IRC namespace TwitchIrcClient.IRC
{ {
/// <summary> /// <summary>
/// Connects to a single Twitch chat channel via limited IRC implementation. /// Connects to a single Twitch chat channel via limited IRC implementation.

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC namespace TwitchIrcClient.IRC
{ {
public enum IrcMessageType public enum IrcMessageType
{ {

View File

@@ -8,7 +8,7 @@ using System.Security.Cryptography;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC namespace TwitchIrcClient.IRC
{ {
/// <summary> /// <summary>
/// Holds key-value pairs of tags. Tag names are case-sensitive and DO NOT parse /// Holds key-value pairs of tags. Tag names are case-sensitive and DO NOT parse

View File

@@ -5,7 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
public class ClearChat : ReceivedMessage public class ClearChat : ReceivedMessage
{ {

View File

@@ -5,7 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
/// <summary> /// <summary>
/// Indicates that a message was deleted. /// Indicates that a message was deleted.
@@ -34,7 +34,7 @@ namespace TwitchLogger.IRC.Messages
string s = TryGetTag("tmi-sent-ts"); string s = TryGetTag("tmi-sent-ts");
if (!double.TryParse(s, out double d)) if (!double.TryParse(s, out double d))
return null; return null;
return DateTime.UnixEpoch.AddSeconds(d); return DateTime.UnixEpoch.AddSeconds(d / 1000);
} }
} }
public ClearMsg(ReceivedMessage message) : base(message) public ClearMsg(ReceivedMessage message) : base(message)

View File

@@ -5,11 +5,12 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
public class Join : ReceivedMessage public class Join : ReceivedMessage
{ {
public string Username => Prefix?.Split('!', 2).First() ?? ""; public string Username => Prefix?.Split('!', 2).First() ?? "";
public string ChannelName => Parameters.Single().TrimStart('#');
public Join(ReceivedMessage message) : base(message) public Join(ReceivedMessage message) : base(message)
{ {
Debug.Assert(MessageType == IrcMessageType.JOIN, Debug.Assert(MessageType == IrcMessageType.JOIN,

View File

@@ -5,14 +5,14 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
public class NamReply : ReceivedMessage public class NamReply : ReceivedMessage
{ {
public IEnumerable<string> Users => public IEnumerable<string> Users =>
Parameters.Last().Split(' ', StringSplitOptions.TrimEntries Parameters.Last().Split(' ', StringSplitOptions.TrimEntries
| StringSplitOptions.RemoveEmptyEntries); | StringSplitOptions.RemoveEmptyEntries);
public string ChannelName => Parameters.TakeLast(2).First().TrimStart('#');
public NamReply(ReceivedMessage message) : base(message) public NamReply(ReceivedMessage message) : base(message)
{ {
Debug.Assert(MessageType == IrcMessageType.RPL_NAMREPLY, Debug.Assert(MessageType == IrcMessageType.RPL_NAMREPLY,

View File

@@ -6,7 +6,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
public class Notice : ReceivedMessage public class Notice : ReceivedMessage
{ {

View File

@@ -5,11 +5,12 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
public class Part : ReceivedMessage public class Part : ReceivedMessage
{ {
public string Username => Prefix?.Split('!', 2).First() ?? ""; public string Username => Prefix?.Split('!', 2).First() ?? "";
public string ChannelName => Parameters.Single().TrimStart('#');
public Part(ReceivedMessage message) : base(message) public Part(ReceivedMessage message) : base(message)
{ {
Debug.Assert(MessageType == IrcMessageType.PART, Debug.Assert(MessageType == IrcMessageType.PART,

View File

@@ -7,7 +7,7 @@ using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
/// <summary> /// <summary>
/// ///
@@ -109,6 +109,15 @@ namespace TwitchLogger.IRC.Messages
return value == "1"; return value == "1";
} }
} }
public DateTime Timestamp
{ get
{
var s = TryGetTag("tmi-sent-ts");
if (!double.TryParse(s, out double result))
throw new InvalidDataException();
return DateTime.UnixEpoch.AddSeconds(result / 1000);
}
}
/// <summary> /// <summary>
/// A Boolean value that indicates whether the user has site-wide commercial /// A Boolean value that indicates whether the user has site-wide commercial
/// free mode enabled /// free mode enabled
@@ -157,6 +166,7 @@ namespace TwitchLogger.IRC.Messages
/// A Boolean value that determines whether the user that sent the chat is a VIP. /// A Boolean value that determines whether the user that sent the chat is a VIP.
/// </summary> /// </summary>
public bool Vip => MessageTags.ContainsKey("vip"); public bool Vip => MessageTags.ContainsKey("vip");
public bool FirstMessage => TryGetTag("first-msg") == "1";
public string ChatMessage => Parameters.Last(); public string ChatMessage => Parameters.Last();
public Privmsg(ReceivedMessage message) : base(message) public Privmsg(ReceivedMessage message) : base(message)
{ {

View File

@@ -6,7 +6,7 @@ using System.Reflection.Metadata.Ecma335;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
/// <summary> /// <summary>
/// ///
@@ -109,6 +109,8 @@ namespace TwitchLogger.IRC.Messages
return new Part(message); return new Part(message);
case IrcMessageType.RPL_NAMREPLY: case IrcMessageType.RPL_NAMREPLY:
return new NamReply(message); return new NamReply(message);
case IrcMessageType.ROOMSTATE:
return new Roomstate(message);
default: default:
return message; return message;
} }

View File

@@ -6,8 +6,8 @@ using System.Linq;
using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.X509Certificates;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using TwitchLogger.IRC; using TwitchIrcClient.IRC;
using TwitchLogger.IRC.Messages; using TwitchIrcClient.IRC.Messages;
namespace TwitchIrcClient.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
@@ -86,6 +86,10 @@ namespace TwitchIrcClient.IRC.Messages
throw new InvalidDataException($"tag \"subs-only\" does not have a proper value: {value}"); throw new InvalidDataException($"tag \"subs-only\" does not have a proper value: {value}");
} }
} }
/// <summary>
///
/// </summary>
public string ChannelName => Parameters.Last().TrimStart('#');
public Roomstate(ReceivedMessage other) : base(other) public Roomstate(ReceivedMessage other) : base(other)
{ {
Debug.Assert(MessageType == IrcMessageType.ROOMSTATE, Debug.Assert(MessageType == IrcMessageType.ROOMSTATE,

View File

@@ -8,7 +8,7 @@ using System.Net.WebSockets;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC.Messages namespace TwitchIrcClient.IRC.Messages
{ {
public class UserNotice : ReceivedMessage public class UserNotice : ReceivedMessage
{ {

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC namespace TwitchIrcClient.IRC
{ {
/// <summary> /// <summary>
/// Prevents sending too many messages in a time period. A single rate limiter can /// Prevents sending too many messages in a time period. A single rate limiter can

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TwitchLogger.IRC namespace TwitchIrcClient.IRC
{ {
public enum UserType public enum UserType
{ {