Changeset 343

Show
Ignore:
Timestamp:
10/24/07 03:51:49 (15 months ago)
Author:
tomoyo
Message:

特定のメッセージを別チャンネルへ転送するフィルタを追加。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • TwitterIrcGateway/TwitterIrcGatewayCore/Filter.cs

    r75 r343  
    55using System.Text.RegularExpressions; 
    66using System.Diagnostics; 
     7using Misuzilla.Net.Irc; 
    78 
    89namespace Misuzilla.Applications.TwitterIrcGateway.Filter 
    910{ 
    1011    [XmlInclude(typeof(Drop))] 
     12    [XmlInclude(typeof(Reroute))] 
    1113    [XmlInclude(typeof(RewriteContent))] 
    1214    public class Filters 
     
    5052 
    5153        /// <summary> 
    52         /// メチE��ージをフィルタしまぁE 
     54        /// メッセージをフィルタします 
    5355        /// </summary> 
    5456        /// <param name="user"></param> 
    5557        /// <param name="message"></param> 
    56         /// <returns>メチE��ージを捨てるかどぁE��</returns> 
     58        /// <returns>メッセージを捨てるかどうか</returns> 
    5759        public Boolean ExecuteFilters(FilterArgs args) 
    5860        { 
     
    201203        } 
    202204    } 
     205     
     206    public class Reroute : FilterItem 
     207    { 
     208        private String _matchPattern = ""; 
     209        public String MatchPattern 
     210        { 
     211            get { return _matchPattern; } 
     212            set { _matchPattern = value; } 
     213        } 
     214 
     215        private String _userMatchPattern = ""; 
     216        public String UserMatchPattern 
     217        { 
     218            get { return _userMatchPattern; } 
     219            set { _userMatchPattern = value; } 
     220        } 
     221 
     222        private String _channelName = ""; 
     223        public String ChannelName 
     224        { 
     225            get { return _channelName; } 
     226            set { _channelName = value; } 
     227        } 
     228 
     229        private Boolean _duplicate = true; 
     230        public Boolean Duplicate 
     231        { 
     232            get { return _duplicate; } 
     233            set { _duplicate = value; } 
     234        } 
     235 
     236        public override void Execute(FilterArgs args) 
     237        { 
     238            if (!String.IsNullOrEmpty(_matchPattern)) 
     239            { 
     240                Boolean rerouteRequired = 
     241                    Regex.IsMatch(args.Content, _matchPattern, RegexOptions.IgnoreCase) && 
     242                    ((String.IsNullOrEmpty(_userMatchPattern)) ? true : Regex.IsMatch(args.User.ScreenName, _userMatchPattern)); 
     243                 
     244                if (!rerouteRequired) 
     245                    return; 
     246                 
     247                IRCMessage msg; 
     248                switch (args.IRCMessageType.ToUpperInvariant()) 
     249                { 
     250                    case "NOTICE": 
     251                        msg = new NoticeMessage(_channelName, args.Content); 
     252                        break; 
     253                    case "PRIVMSG": 
     254                    default: 
     255                        msg = new PrivMsgMessage(_channelName, args.Content); 
     256                        break; 
     257                } 
     258                msg.SenderNick = args.User.ScreenName; 
     259                msg.SenderHost = "twitter@" + Server.ServerName; 
     260                args.Session.Send(msg); 
     261                 
     262                if (!_duplicate) 
     263                    args.Drop = true; 
     264            } 
     265        } 
     266        public override string ToString() 
     267        { 
     268            return "Reroute:" 
     269                + ((Enabled) ? "" : "[DISABLED]") 
     270                + ((String.IsNullOrEmpty(_userMatchPattern)) ? "" : String.Format(" UserMatchPattern={0}", _userMatchPattern)) 
     271                + ((String.IsNullOrEmpty(_matchPattern)) ? "" : String.Format(" MatchPattern={0}", _matchPattern)) 
     272                + ((_duplicate) ? " Duplicate" : "") 
     273            ; 
     274        } 
     275    } 
     276 
    203277}