Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // TODO: Implement BanEventArgs, ItemEventArgs, PostEventArgs, and RatingEventArgs.
- // TODO: Implement Length and Ratings.
- // Should we route these events based on user?
- // What about tense?
- // Events are handled by SynchronizationHandler.
- using HtmlAgilityPack;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- namespace Facepunch
- {
- internal static class Helpers
- {
- internal static int GetQuery (this IEnumerable<HtmlNode> node, int index, string key)
- {
- return int.Parse (HttpUtility.ParseQueryString (node.ElementAt (index).Attributes ("href")).Get (key));
- }
- internal static string GetText (this IEnumerable<HtmlNode> node, int index)
- {
- return string.Intern (node.ElementAt (index).InnerText);
- }
- }
- public class BanEventArgs : ItemEventArgs
- {
- public int ModeratorId { get; }
- public int PostId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- /*public Length Length { get; }*/
- public string Reason { get; }
- internal BanEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ModeratorId = a.GetQuery (0, "u");
- PostId = a.GetQuery (4, "p");
- ThreadId = a.GetQuery (4, "t");
- UserId = a.GetQuery (2, "u");
- ModeratorName = a.GetText (0);
- ThreadName = a.GetText (4);
- UserName = a.GetText (2);
- /*Length = b.GetText (0);*/
- Reason = b.GetText (1);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} banned {UserName} for {/**/} in {ThreadName} with the reason {Reason}.";
- }
- }
- public class BanPermanentEventArgs : ItemEventArgs
- {
- public int ModeratorId { get; }
- public int PostId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- public string Reason { get; }
- internal BanPermanentEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ModeratorId = a.GetQuery (0, "u");
- PostId = a.GetQuery (4, "p");
- ThreadId = a.GetQuery (4, "t");
- UserId = a.GetQuery (2, "u");
- ModeratorName = a.GetText (0);
- ThreadName = a.GetText (4);
- UserName = a.GetText (2);
- Reason = b.GetText (0);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} permabanned {UserName} in {ThreadName} with the reason {Reason}.";
- }
- }
- public class CloseBigEventArgs : ItemEventArgs
- {
- public int ThreadId { get; }
- public string ThreadName { get; }
- internal CloseBigEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- ThreadId = a.GetQuery (0, "t");
- ThreadName = a.GetText (0);
- }
- public override string ToString ()
- {
- return $"The thread {ThreadName} was closed because it had over 5000 posts.";
- }
- }
- public class CloseEventArgs : ItemEventArgs
- {
- public int ForumId { get; }
- public int ModeratorId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ForumName { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- public string Reason { get; }
- internal CloseEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ForumId = a.GetQuery (5, "f");
- ModeratorId = a.GetQuery (0, "u");
- ThreadId = a.GetQuery (4, "t");
- UserId = a.GetQuery (2, "u");
- ForumName = a.GetText (5);
- ModeratorName = a.GetText (0);
- ThreadName = a.GetText (4);
- UserName = a.GetText (2);
- Reason = b.GetText (0);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} closed {UserName}'s thread called {ThreadName} in {ForumName} with the reason {Reason}.";
- }
- }
- public class DeleteHardEventArgs : ItemEventArgs
- {
- public int ForumOldId { get; }
- public int ModeratorId { get; }
- public string ForumOldName { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string Reason { get; }
- internal DeleteHardEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ForumOldId = a.GetQuery (2, "f");
- ModeratorId = a.GetQuery (0, "f");
- ForumOldName = a.GetText (2);
- ModeratorName = a.GetText (0);
- ThreadName = b.GetText (0);
- Reason = b.GetText (1);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} removed the thread {ThreadName} in {ForumOldName} with the reason {Reason}.";
- }
- }
- public class DeleteSoftEventArgs : ItemEventArgs
- {
- public int ForumId { get; }
- public int ModeratorId { get; }
- public int ThreadId { get; }
- public string ForumName { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string Reason { get; }
- internal DeleteSoftEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ForumId = a.GetQuery (3, "f");
- ModeratorId = a.GetQuery (0, "u");
- ThreadId = a.GetQuery (2, "t");
- ForumName = a.GetText (3);
- ModeratorName = a.GetText (0);
- ThreadName = a.GetText (2);
- Reason = b.GetText (0);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} deleted the thread {ThreadName} in {ForumName} with the reason {Reason}.";
- }
- }
- public class DropDeadThreadEventArgs : ItemEventArgs
- {
- public int ForumOldId { get; }
- public int ModeratorId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ForumOldName { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- public string Reason { get; }
- internal DropDeadThreadEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ForumOldId = a.GetQuery (5, "f");
- ModeratorId = a.GetQuery (0, "u");
- ThreadId = a.GetQuery (4, "t");
- UserId = a.GetQuery (2, "u");
- ForumOldName = a.GetText (5);
- ModeratorName = a.GetText (0);
- ThreadName = a.GetText (4);
- UserName = a.GetText (2);
- Reason = b.GetText (0);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} DDT'd {UserName}'s thread called {ThreadName} in {ForumOldName} with the reason {Reason}.";
- }
- }
- public class ItemEventArgs : EventArgs
- {
- public int Time { get; }
- internal ItemEventArgs (int time)
- {
- Time = time;
- }
- public override string ToString ()
- {
- return $"";
- }
- }
- public class JoinEventArgs : ItemEventArgs
- {
- public int UserId { get; }
- public string UserName { get; }
- internal JoinEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- UserId = a.GetQuery (0, "u");
- UserName = a.GetText (0);
- }
- public override string ToString ()
- {
- return $"{UserName} has joined.";
- }
- }
- public class MoveEventArgs : ItemEventArgs
- {
- public int ForumNewId { get; }
- public int ForumOldId { get; }
- public int ModeratorId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ForumNewName { get; }
- public string ForumOldName { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- internal MoveEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- ForumNewId = a.GetQuery (6, "f");
- ForumOldId = a.GetQuery (5, "f");
- ModeratorId = a.GetQuery (0, "u");
- ThreadId = a.GetQuery (4, "t");
- UserId = a.GetQuery (2, "u");
- ForumNewName = a.GetText (6);
- ForumOldName = a.GetText (5);
- ModeratorName = a.GetText (0);
- ThreadName = a.GetText (4);
- UserName = a.GetText (2);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} moved {UserName}'s thread called {ThreadName} from {ForumOldName} to {ForumNewName}.";
- }
- }
- public class OpenEventArgs : ItemEventArgs
- {
- public int ForumId { get; }
- public int ModeratorId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ForumName { get; }
- public string ModeratorName { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- public string Reason { get; }
- internal OpenEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ForumId = a.GetQuery (5, "f");
- ModeratorId = a.GetQuery (0, "u");
- ThreadId = a.GetQuery (4, "t");
- UserId = a.GetQuery (2, "u");
- ForumName = a.GetText (5);
- ModeratorName = a.GetText (0);
- ThreadName = a.GetText (4);
- UserName = a.GetText (2);
- Reason = b.GetText (0);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} opened {UserName}'s thread called {ThreadName} in {ForumName} with the reason {Reason}.";
- }
- }
- public class PostEventArgs : ItemEventArgs
- {
- public int ForumId { get; }
- public int PostId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ForumName { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- public bool Mentioned { get; }
- internal PostEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var div = html.Descendants ("div");
- ForumId = a.GetQuery (0, "f");
- PostId = a.GetQuery (2, "p");
- ThreadId = a.GetQuery (2, "t");
- UserId = a.GetQuery (1, "u");
- ForumName = a.GetText (0);
- ThreadName = a.GetText (2);
- UserName = a.GetText (1);
- Mentioned = div.GetText (5) == "Mentioned";
- }
- public override string ToString ()
- {
- return $"";
- }
- }
- public class RatingEventArgs : ItemEventArgs
- {
- public int PostId { get; }
- public int ThreadId { get; }
- public int UserId { get; }
- public string ThreadName { get; }
- public string UserName { get; }
- /*public Rating Rating { get; }*/
- internal RatingEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- PostId = a.GetQuery (1, "p");
- ThreadId = a.GetQuery (1, "t");
- UserId = a.GetQuery (0, "u");
- ThreadName = a.GetText (1);
- UserName = a.GetText (0);
- }
- public override string ToString ()
- {
- return $"{UserName} rated your post in {ThreadName}.";
- }
- }
- public class UnbanEventArgs : ItemEventArgs
- {
- public int ModeratorId { get; }
- public int UserId { get; }
- public string ModeratorName { get; }
- public string UserName { get; }
- public string Reason { get; }
- internal UnbanEventArgs (int time, HtmlNode html) : base (time)
- {
- var a = html.Descendants ("a");
- var b = html.Descendants ("b");
- ModeratorId = a.GetQuery (0, "u");
- UserId = a.GetQuery (2, "u");
- ModeratorName = a.GetText (0);
- UserName = a.GetText (2);
- Reason = b.GetText (0);
- }
- public override string ToString ()
- {
- return $"{ModeratorName} unbanned {UserName} with the reason {Reason}.";
- }
- }
- public delegate void BanEventHandler (object sender, BanEventArgs args);
- public delegate void BanPermanentEventHandler (object sender, BanPermanentEventArgs args);
- public delegate void CloseEventHandler (object sender, CloseEventArgs args);
- public delegate void CloseBigEventHandler (object sender, CloseBigEventArgs args);
- public delegate void DeleteHardEventHandler (object sender, DeleteHardEventArgs args);
- public delegate void DeleteSoftEventHandler (object sender, DeleteSoftEventArgs args);
- public delegate void DropDeadThreadEventHandler (object sender, DropDeadThreadEventArgs args);
- public delegate void ItemEventHandler (object sender, ItemEventArgs args);
- public delegate void JoinEventHandler (object sender, JoinEventArgs args);
- public delegate void MoveEventHandler (object sender, MoveEventArgs args);
- public delegate void OpenEventHandler (object sender, OpenEventArgs args);
- public delegate void PostEventHandler (object sender, PostEventArgs args);
- public delegate void RatingEventHandler (object sender, RatingEventArgs args);
- public delegate void UnbanEventHandler (object sender, UnbanEventArgs args);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement