Changeset 382

Show
Ignore:
Timestamp:
05/15/08 03:16:52 (8 months ago)
Author:
tomoyo
Message:

とりあえずXMPPを使ったステータスの取得に対応してみた。

Location:
TwitterIrcGateway/branches/im-support/TwitterIrcGatewayCore
Files:
1 added
3 modified

Legend:

Unmodified
Added
Removed
  • TwitterIrcGateway/branches/im-support/TwitterIrcGatewayCore/Session.cs

    r376 r382  
    2727        private String _clientHost; 
    2828        private TwitterService _twitter; 
     29        private TwitterIMService _twitterIm; 
    2930        private LinkedList<Int32> _lastStatusIdsFromGateway; 
    3031        private Timer _timer; 
     
    6869            MessageRecieved += new EventHandler<MessageRecievedEventArgs>(MessageRecieved_TOPIC); 
    6970            MessageRecieved += new EventHandler<MessageRecievedEventArgs>(MessageRecieved_MODE); 
     71            MessageRecieved += new EventHandler<MessageRecievedEventArgs>(MessageRecieved_TIGIMENABLE); 
    7072 
    7173            _groups = new Groups(); 
     
    921923            } 
    922924        } 
     925 
     926        void MessageRecieved_TIGIMENABLE(object sender, MessageRecievedEventArgs e) 
     927        { 
     928            if (String.Compare(e.Message.Command, "TIGIMENABLE", true) != 0) return; 
     929            if (String.IsNullOrEmpty(e.Message.CommandParams[3])) 
     930            { 
     931                SendTwitterGatewayServerMessage("TIGIMENABLE コマンドは4つの引数(ServiceServerName, ServerName, UserName, Password)が必要です。"); 
     932                return; 
     933            } 
     934 
     935            if (_twitterIm != null) 
     936            { 
     937                _twitterIm.Close(); 
     938            } 
     939            _twitterIm = new TwitterIMService(e.Message.CommandParams[0], e.Message.CommandParams[1], e.Message.CommandParams[2], e.Message.CommandParams[3]); 
     940            _twitterIm.StatusUpdateReceived += new EventHandler<TwitterIMService.StatusUpdateReceivedEventArgs>(twitterIm_StatusUpdateReceived); 
     941            _twitterIm.Logined += new EventHandler(twitterIm_Logined); 
     942            _twitterIm.AuthErrored += new EventHandler(twitterIm_AuthErrored); 
     943            _twitterIm.Open(); 
     944        } 
     945        void twitterIm_Logined(object sender, EventArgs e) 
     946        { 
     947            SendTwitterGatewayServerMessage("インスタントメッセージングサービスにログインしました。"); 
     948        } 
     949        void twitterIm_AuthErrored(object sender, EventArgs e) 
     950        { 
     951            SendTwitterGatewayServerMessage("インスタントメッセージングサービスのログインに失敗しました。ユーザ名とパスワードが正しくありません。"); 
     952        } 
     953        void twitterIm_StatusUpdateReceived(object sender, TwitterIMService.StatusUpdateReceivedEventArgs e) 
     954        { 
     955            if (ProcessDropProtection(_statusBuffer, e.Status)) 
     956            { 
     957                Boolean friendsCheckRequired = false; 
     958                ProcessTimelineStatus(e.Status, ref friendsCheckRequired); 
     959            } 
     960        } 
    923961        #endregion 
    924962 
  • TwitterIrcGateway/branches/im-support/TwitterIrcGatewayCore/TwitterIrcGatewayCore.csproj

    r373 r382  
    5555    <Compile Include="Server.cs" /> 
    5656    <Compile Include="Session.cs" /> 
     57    <Compile Include="TwitterIMService.cs" /> 
    5758    <Compile Include="TwitterService.cs"> 
    5859    </Compile> 
    5960    <Compile Include="Utility.cs" /> 
     61  </ItemGroup> 
     62  <ItemGroup> 
     63    <ProjectReference Include="agsXMPP\agsXMPP2008.csproj"> 
     64      <Project>{DC39021C-FA24-4E34-AB4A-3260BB5314AF}</Project> 
     65      <Name>agsXMPP2008</Name> 
     66    </ProjectReference> 
    6067  </ItemGroup> 
    6168  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 
  • TwitterIrcGateway/branches/im-support/TwitterIrcGatewayCore/TwitterService.cs

    r378 r382  
    871871    { 
    872872        [XmlElement("created_at")] 
    873         public String _createdAt; 
     873        public String _createdAtOriginal; 
    874874        [XmlElement("id")] 
    875875        public Int32 Id; 
    876876        [XmlElement("text")] 
    877         public String _text; 
     877        public String _textOriginal; 
    878878        [XmlElement("user")] 
    879879        public User User; 
    880880 
    881881        [XmlIgnore] 
     882        private String _text; 
     883        [XmlIgnore] 
     884        private DateTime _createdAt; 
     885         
     886        [XmlIgnore] 
    882887        public String Text 
    883888        { 
    884889            get 
    885890            { 
    886                 if (String.IsNullOrEmpty(_text)) 
    887                     return String.Empty; 
    888  
    889                 return Utility.UnescapeCharReference(_text); 
     891                if (!String.IsNullOrEmpty(_textOriginal) && _text == null) 
     892                { 
     893                    _text = Utility.UnescapeCharReference(_textOriginal); 
     894                } 
     895 
     896                return _text; 
     897            } 
     898            set 
     899            { 
     900                _text = value; 
    890901            } 
    891902        } 
     
    895906            get 
    896907            { 
    897                 return Utility.ParseDateTime(_createdAt); 
     908                if (!String.IsNullOrEmpty(_createdAtOriginal) && _createdAt == DateTime.MinValue) 
     909                { 
     910                    _createdAt = Utility.ParseDateTime(_createdAtOriginal); 
     911                } 
     912                return _createdAt; 
     913            } 
     914            set 
     915            { 
     916                _createdAt = value; 
    898917            } 
    899918        }