All pastes #723216 Raw Edit

atsushieno

public diff v1 · immutable
#723216 ·published 2007-10-02 16:48 UTC
rendered paste body
--- TwitterIrcGateway/src/TwitterIrcGatewayCore/Session.cs	2007-09-29 03:03:48.000000000 +0900+++ TwitterIrcGateway-eno/src/TwitterIrcGatewayCore/Session.cs	2007-10-03 01:44:21.546875000 +0900@@ -969,17 +969,55 @@             {                 Statuses statuses = _twitter.GetTimeline(_lastAccessTimeline);                 Array.Reverse(statuses.Status);+                foreach (Status status in statuses.Status)+                {+                    ProcessTimelineStatus (status, ref friendsCheckRequired);+                }++                statuses = _twitter.GetReplies();+                Array.Reverse(statuses.Status);+                bool dummy = false;+                foreach (Status status in statuses.Status)+                {+                    if (status.CreatedAt < _lastAccessTimeline)+                        continue;+                    // Here I pass dummy, because no matter how the replier flags+                    // friendsCheckRequired, we cannot receive his or her info+                    // through get_friends.+                    ProcessTimelineStatus (status, ref dummy);+                }+                 if (_isFirstTime && _server.EnableDropProtection)                 {                     _lastAccessTimeline = DateTime.Now;                 }-                foreach (Status status in statuses.Status)+                _isFirstTime = false;+            }+            catch (WebException ex)+            {+                if (ex.Response == null || !(ex.Response is HttpWebResponse) || ((HttpWebResponse)(ex.Response)).StatusCode != HttpStatusCode.NotModified)                 {+                    // not-modified 以外+                    SendServerErrorMessage(ex.Message);+                }+                return false;+            }+            catch (TwitterServiceException ex2)+            {+                SendServerErrorMessage(ex2.Message);+                return false;+            }++            return true;+        }++        private void ProcessTimelineStatus (Status status, ref Boolean friendsCheckRequired)+        {                     // 差分チェック                     if (_server.EnableDropProtection)                     {                         if (_statusBuffer.Contains(status))-                            continue;+                            return;                          _statusBuffer.AddLast(status);                         if (_statusBuffer.Count > 100)@@ -1001,7 +1039,7 @@                     // チェック                     if (status.User == null || String.IsNullOrEmpty(status.User.ScreenName))                     {-                        continue;+                        return;                     }                      // friends チェックが必要かどうかを確かめる@@ -1013,13 +1051,13 @@                     if (!_filter.ExecuteFilters(filterArgs))                     {                         // 捨てる-                        continue;+                        return;                     }                      // 自分がゲートウェイを通して発言したものは捨てる                     if (_lastStatusIdsFromGateway.Contains(status.Id))                     {-                        continue;+                        return;                     }                      // TinyURL@@ -1094,25 +1132,6 @@                             _lastAccessTimeline = status.CreatedAt;                         }                     }-                }-                _isFirstTime = false;-            }-            catch (WebException ex)-            {-                if (ex.Response == null || !(ex.Response is HttpWebResponse) || ((HttpWebResponse)(ex.Response)).StatusCode != HttpStatusCode.NotModified)-                {-                    // not-modified 以外-                    SendServerErrorMessage(ex.Message);-                }-                return false;-            }-            catch (TwitterServiceException ex2)-            {-                SendServerErrorMessage(ex2.Message);-                return false;-            }--            return true;         }