LINQ To TwitterのUserStreamをもっと使いやすくしようとか妄想してるプロジェクト
Revision | 9efa49f118d8d8f97e2ef9bf6b9abeaf8bbcae6a (tree) |
---|---|
Zeit | 2011-02-09 20:29:48 |
Autor | azyobuzin <azyobuzin@user...> |
Commiter | azyobuzin |
XMLコメントをつけた
@@ -6,22 +6,40 @@ using LinqToTwitter; | ||
6 | 6 | |
7 | 7 | namespace Azyobuzi.UserStreamEx |
8 | 8 | { |
9 | + /// <summary> | |
10 | + /// <see cref="UserStream.Stopped"/>イベントのデータを提供します。 | |
11 | + /// </summary> | |
9 | 12 | public class StoppedEventArgs : EventArgs |
10 | 13 | { |
14 | + /// <summary> | |
15 | + /// 新しい<see cref="StoppedEventArgs"/>クラスのインスタンスを初期化します。 | |
16 | + /// </summary> | |
17 | + /// <param name="reason">切断された理由</param> | |
18 | + /// <param name="ex">発生したエラー。null可。</param> | |
11 | 19 | public StoppedEventArgs(StopReason reason, Exception ex) |
12 | 20 | { |
13 | 21 | this.Reason = reason; |
14 | 22 | this.Exception = ex; |
15 | 23 | } |
16 | 24 | |
25 | + /// <summary> | |
26 | + /// 切断された理由 | |
27 | + /// </summary> | |
17 | 28 | public StopReason Reason { private set; get; } |
29 | + | |
30 | + /// <summary> | |
31 | + /// 発生したエラー。<see cref="Reason"/>が<see cref="StopReason.CloseResponse"/>の場合はnull参照です。 | |
32 | + /// </summary> | |
18 | 33 | public Exception Exception { private set; get; } |
19 | 34 | } |
20 | 35 | |
36 | + /// <summary> | |
37 | + /// 切断された理由 | |
38 | + /// </summary> | |
21 | 39 | public enum StopReason |
22 | 40 | { |
23 | 41 | /// <summary> |
24 | - /// Twitterが切断 | |
42 | + /// Twitterが切断した | |
25 | 43 | /// </summary> |
26 | 44 | CloseResponse, |
27 | 45 | /// <summary> |
@@ -29,45 +47,82 @@ namespace Azyobuzi.UserStreamEx | ||
29 | 47 | /// </summary> |
30 | 48 | UserStop, |
31 | 49 | /// <summary> |
32 | - /// その他の例外 | |
50 | + /// 例外が発生した | |
33 | 51 | /// </summary> |
34 | 52 | Error |
35 | 53 | } |
36 | 54 | |
55 | + /// <summary> | |
56 | + /// Twitterから受信したJSONデータを提供します。 | |
57 | + /// </summary> | |
37 | 58 | public class ReceiveJsonEventArgs : EventArgs |
38 | 59 | { |
60 | + /// <summary> | |
61 | + /// <see cref="ReceiveJsonEventArgs"/>クラスのインスタンスを初期化します。 | |
62 | + /// </summary> | |
63 | + /// <param name="line">1行のJSON形式のデータ</param> | |
39 | 64 | public ReceiveJsonEventArgs(string line) |
40 | 65 | { |
41 | 66 | this.Line = line; |
42 | 67 | } |
43 | 68 | |
69 | + /// <summary> | |
70 | + /// 1行のJSON形式のデータ | |
71 | + /// </summary> | |
44 | 72 | public string Line { private set; get; } |
45 | 73 | } |
46 | 74 | |
75 | + /// <summary> | |
76 | + /// <see cref="UserStream.ReceiveFriends"/>イベントのデータを提供します。 | |
77 | + /// </summary> | |
47 | 78 | public class ReceiveFriendsEventArgs : ReceiveJsonEventArgs |
48 | 79 | { |
80 | + /// <summary> | |
81 | + /// JSONを指定して<see cref="ReceiveFriendsEventArgs"/>クラスのインスタンスを初期化します。 | |
82 | + /// </summary> | |
83 | + /// <param name="line">friendsリストが含まれたJSON形式のデータ</param> | |
49 | 84 | public ReceiveFriendsEventArgs(string line) |
50 | 85 | : base(line) |
51 | 86 | { |
52 | 87 | FriendIds = (string[])DynamicJson.Parse(line).friends; |
53 | 88 | } |
54 | 89 | |
90 | + /// <summary> | |
91 | + /// friends(following)のIDリスト | |
92 | + /// </summary> | |
55 | 93 | public string[] FriendIds { private set; get; } |
56 | 94 | } |
57 | 95 | |
96 | + /// <summary> | |
97 | + /// <see cref="UserStream.NewTweet"/>イベントのデータを提供します。 | |
98 | + /// </summary> | |
58 | 99 | public class NewTweetEventArgs : ReceiveJsonEventArgs |
59 | 100 | { |
101 | + /// <summary> | |
102 | + /// JSONを指定して<see cref="NewTweetEventArgs"/>クラスのインスタンスを初期化します。 | |
103 | + /// </summary> | |
104 | + /// <param name="line">ステータスが含まれたJSON形式のデータ</param> | |
60 | 105 | public NewTweetEventArgs(string line) |
61 | 106 | : base(line) |
62 | 107 | { |
63 | 108 | Status = Status.CreateStatus(line.JsonToXml()); |
64 | 109 | } |
65 | 110 | |
111 | + /// <summary> | |
112 | + /// 新しいツイート | |
113 | + /// </summary> | |
66 | 114 | public Status Status { private set; get; } |
67 | 115 | } |
68 | 116 | |
117 | + /// <summary> | |
118 | + /// <see cref="UserStream.NewDirectMessage"/>イベントのデータを提供します。 | |
119 | + /// </summary> | |
69 | 120 | public class NewDirectMessageEventArgs : ReceiveJsonEventArgs |
70 | 121 | { |
122 | + /// <summary> | |
123 | + /// JSONを指定して<see cref="NewDirectMessageEventArgs"/>クラスのインスタンスを初期化します。 | |
124 | + /// </summary> | |
125 | + /// <param name="line">ダイレクトメッセージが含まれたJSON形式のデータ</param> | |
71 | 126 | public NewDirectMessageEventArgs(string line) |
72 | 127 | : base(line) |
73 | 128 | { |
@@ -86,11 +141,21 @@ namespace Azyobuzi.UserStreamEx | ||
86 | 141 | }; |
87 | 142 | } |
88 | 143 | |
144 | + /// <summary> | |
145 | + /// 新しいダイレクトメッセージ | |
146 | + /// </summary> | |
89 | 147 | public DirectMessage DirectMessage { private set; get; } |
90 | 148 | } |
91 | 149 | |
150 | + /// <summary> | |
151 | + /// <see cref="UserStream.DeleteStatus"/>イベントのデータを提供します。 | |
152 | + /// </summary> | |
92 | 153 | public class DeleteStatusEventArgs : ReceiveJsonEventArgs |
93 | 154 | { |
155 | + /// <summary> | |
156 | + /// JSONを指定して<see cref="DeleteStatusEventArgs"/>クラスのインスタンスを初期化します。 | |
157 | + /// </summary> | |
158 | + /// <param name="line">削除されたステータスのIDが含まれたJSON形式のデータ</param> | |
94 | 159 | public DeleteStatusEventArgs(string line) |
95 | 160 | : base(line) |
96 | 161 | { |
@@ -111,13 +176,31 @@ namespace Azyobuzi.UserStreamEx | ||
111 | 176 | } |
112 | 177 | } |
113 | 178 | |
179 | + /// <summary> | |
180 | + /// 削除されたツイート(ダイレクトメッセージ)のID | |
181 | + /// </summary> | |
114 | 182 | public string StatusId { private set; get; } |
183 | + | |
184 | + /// <summary> | |
185 | + /// 削除したユーザーのID(番号) | |
186 | + /// </summary> | |
115 | 187 | public string UserId { private set; get; } |
188 | + | |
189 | + /// <summary> | |
190 | + /// ダイレクトメッセージか | |
191 | + /// </summary> | |
116 | 192 | public bool IsDirectMessage { private set; get; } |
117 | 193 | } |
118 | 194 | |
195 | + /// <summary> | |
196 | + /// <see cref="UserStream.ReceiveEvent"/>イベントのデータを提供します。 | |
197 | + /// </summary> | |
119 | 198 | public class ReceiveEventEventArgs : ReceiveJsonEventArgs |
120 | 199 | { |
200 | + /// <summary> | |
201 | + /// JSONを指定して<see cref="ReceiveEventEventArgs"/>クラスのインスタンスを初期化します。 | |
202 | + /// </summary> | |
203 | + /// <param name="line">イベント情報が含まれたJSON形式のデータ</param> | |
121 | 204 | public ReceiveEventEventArgs(string line) |
122 | 205 | : base(line) |
123 | 206 | { |
@@ -143,37 +226,101 @@ namespace Azyobuzi.UserStreamEx | ||
143 | 226 | } |
144 | 227 | } |
145 | 228 | |
229 | + /// <summary> | |
230 | + /// イベントの種類 | |
231 | + /// </summary> | |
146 | 232 | public EventTypes EventType { private set; get; } |
233 | + /// <summary> | |
234 | + /// イベントが発生した日時 | |
235 | + /// </summary> | |
147 | 236 | public DateTime CreatedAt { private set; get; } |
237 | + /// <summary> | |
238 | + /// イベントを発生させたユーザー | |
239 | + /// </summary> | |
148 | 240 | public User Source { private set; get; } |
241 | + /// <summary> | |
242 | + /// イベントの対象のユーザー | |
243 | + /// </summary> | |
149 | 244 | public User Target { private set; get; } |
245 | + /// <summary> | |
246 | + /// イベントの対象のツイート | |
247 | + /// </summary> | |
150 | 248 | public Status TargetStatus { private set; get; } |
249 | + /// <summary> | |
250 | + /// イベントの対象のリスト | |
251 | + /// </summary> | |
151 | 252 | public List TargetList { private set; get; } |
152 | 253 | } |
153 | 254 | |
255 | + /// <summary> | |
256 | + /// イベントの種類 | |
257 | + /// </summary> | |
154 | 258 | public enum EventTypes |
155 | 259 | { |
260 | + /// <summary> | |
261 | + /// 不明 | |
262 | + /// </summary> | |
156 | 263 | Unknown, |
264 | + /// <summary> | |
265 | + /// お気に入りに追加した | |
266 | + /// </summary> | |
157 | 267 | Favorite, |
268 | + /// <summary> | |
269 | + /// お気に入りから削除した | |
270 | + /// </summary> | |
158 | 271 | Unfavorite, |
272 | + /// <summary> | |
273 | + /// フォローされた | |
274 | + /// </summary> | |
159 | 275 | Follow, |
276 | + /// <summary> | |
277 | + /// リストに入れられた | |
278 | + /// </summary> | |
160 | 279 | ListMemberAdded, |
280 | + /// <summary> | |
281 | + /// リストから外された | |
282 | + /// </summary> | |
161 | 283 | ListMemberRemoved, |
284 | + /// <summary> | |
285 | + /// ブロックに成功した | |
286 | + /// </summary> | |
162 | 287 | Block, |
288 | + /// <summary> | |
289 | + /// ブロックの解除に成功した | |
290 | + /// </summary> | |
163 | 291 | Unblock, |
292 | + /// <summary> | |
293 | + /// プロフィールを変更した | |
294 | + /// </summary> | |
164 | 295 | UserUpdate, |
296 | + /// <summary> | |
297 | + /// リストを作成した | |
298 | + /// </summary> | |
165 | 299 | ListCreated, |
300 | + /// <summary> | |
301 | + /// リストを削除した | |
302 | + /// </summary> | |
166 | 303 | ListDestroyed |
167 | 304 | } |
168 | 305 | |
306 | + /// <summary> | |
307 | + /// <see cref="UserStream.TrackLimit"/>イベントのデータを提供します。 | |
308 | + /// </summary> | |
169 | 309 | public class TrackLimitEventArgs : ReceiveJsonEventArgs |
170 | 310 | { |
311 | + /// <summary> | |
312 | + /// JSONを指定して<see cref="TrackLimitEventArgs"/>クラスのインスタンスを初期化します。 | |
313 | + /// </summary> | |
314 | + /// <param name="line">JSON形式のデータ</param> | |
171 | 315 | public TrackLimitEventArgs(string line) |
172 | 316 | : base(line) |
173 | 317 | { |
174 | 318 | Track = (ulong)DynamicJson.Parse(line).limit.track; |
175 | 319 | } |
176 | 320 | |
321 | + /// <summary> | |
322 | + /// マッチしたツイートのインデックス | |
323 | + /// </summary> | |
177 | 324 | public ulong Track { private set; get; } |
178 | 325 | } |
179 | 326 | } |
@@ -6,8 +6,15 @@ using LinqToTwitter; | ||
6 | 6 | |
7 | 7 | namespace Azyobuzi.UserStreamEx |
8 | 8 | { |
9 | + /// <summary> | |
10 | + /// LINQ to Twitterへの拡張 | |
11 | + /// </summary> | |
9 | 12 | public static class AddToLinqToTwitter |
10 | 13 | { |
14 | + /// <summary> | |
15 | + /// <see cref="LinqToTwitter.TwitterContext"/>から<see cref="Azyobuzi.UserStreamEx.UserStream"/>のインスタンスを作成します。 | |
16 | + /// </summary> | |
17 | + /// <param name="twCtx">認証済みの<see cref="LinqToTwitter.TwitterContext"/></param> | |
11 | 18 | public static INotStartedUserStream UserStreamEx(this TwitterContext twCtx) |
12 | 19 | { |
13 | 20 | return new UserStream(twCtx.AuthorizedClient); |
@@ -16,7 +23,7 @@ namespace Azyobuzi.UserStreamEx | ||
16 | 23 | |
17 | 24 | internal static class MyExtensions |
18 | 25 | { |
19 | - public static XElement JsonToXml(this string json) | |
26 | + internal static XElement JsonToXml(this string json) | |
20 | 27 | { |
21 | 28 | using (var reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(json), XmlDictionaryReaderQuotas.Max)) |
22 | 29 | { |
@@ -1,39 +1,134 @@ | ||
1 | 1 | using System; |
2 | +using System.IO; | |
2 | 3 | |
3 | 4 | namespace Azyobuzi.UserStreamEx |
4 | 5 | { |
6 | + /// <summary> | |
7 | + /// 接続されていない状態の<see cref="UserStream"/>クラスを表します。 | |
8 | + /// </summary> | |
5 | 9 | public interface INotStartedUserStream |
6 | 10 | { |
11 | + /// <summary> | |
12 | + /// 接続を開始します。 | |
13 | + /// </summary> | |
14 | + /// <param name="track">検索キーワードっぽいもの。null可。</param> | |
15 | + /// <param name="allReplies">friendsに対する返信も含めるかどうか</param> | |
7 | 16 | IStartedUserStream Start(string track, bool allReplies); |
8 | 17 | |
18 | + /// <summary> | |
19 | + /// 取得したデータを書き込む<see cref="System.IO.TextWriter"/> | |
20 | + /// </summary> | |
21 | + TextWriter StreamingWriter { set; get; } | |
22 | + | |
9 | 23 | #region Events |
24 | + /// <summary> | |
25 | + /// 接続を開始するときに発生します。 | |
26 | + /// </summary> | |
10 | 27 | event EventHandler Started; |
28 | + /// <summary> | |
29 | + /// 切断されたときに発生します。 | |
30 | + /// </summary> | |
11 | 31 | event EventHandler<StoppedEventArgs> Stopped; |
32 | + /// <summary> | |
33 | + /// friends(following)のID一覧を受け取ったときに発生します。通常は開始直後に一回だけ発生します。 | |
34 | + /// </summary> | |
12 | 35 | event EventHandler<ReceiveFriendsEventArgs> ReceiveFriends; |
36 | + /// <summary> | |
37 | + /// 新しいツイートを受け取ったときに発生します。 | |
38 | + /// </summary> | |
13 | 39 | event EventHandler<NewTweetEventArgs> NewTweet; |
40 | + /// <summary> | |
41 | + /// 新しいダイレクトメッセージを受信・送信したときに発生します。 | |
42 | + /// </summary> | |
14 | 43 | event EventHandler<NewDirectMessageEventArgs> NewDirectMessage; |
44 | + /// <summary> | |
45 | + /// ツイートまたはダイレクトメッセージが削除されたときに発生します。ハンドラでは直ちに表示から消すような処理をしてください。 | |
46 | + /// </summary> | |
15 | 47 | event EventHandler<DeleteStatusEventArgs> DeleteStatus; |
48 | + /// <summary> | |
49 | + /// イベントを受信したときに発生します。 | |
50 | + /// </summary> | |
16 | 51 | event EventHandler<ReceiveEventEventArgs> ReceiveEvent; |
52 | + /// <summary> | |
53 | + /// Twitter側で処理しきれないツイートがあったときに発生します。 | |
54 | + /// </summary> | |
55 | + /// <remarks>詳細不明</remarks> | |
17 | 56 | event EventHandler<TrackLimitEventArgs> TrackLimit; |
57 | + /// <summary> | |
58 | + /// 対応していないデータを受け取ったときに発生します。 | |
59 | + /// </summary> | |
18 | 60 | event EventHandler<ReceiveJsonEventArgs> ReceiveUnsupportedData; |
19 | 61 | #endregion |
20 | 62 | |
21 | 63 | #region AddHandlerMethod |
64 | + /// <summary> | |
65 | + /// <see cref="Started"/>イベントにイベントハンドラを追加します。 | |
66 | + /// </summary> | |
67 | + /// <param name="handler">イベントハンドラ</param> | |
22 | 68 | INotStartedUserStream SetStartedEvent(EventHandler handler); |
69 | + /// <summary> | |
70 | + /// <see cref="Stopped"/>イベントにイベントハンドラを追加します。 | |
71 | + /// </summary> | |
72 | + /// <param name="handler">イベントハンドラ</param> | |
23 | 73 | INotStartedUserStream SetStoppedEvent(EventHandler<StoppedEventArgs> handler); |
74 | + /// <summary> | |
75 | + /// <see cref="ReceiveFriends"/>イベントにイベントハンドラを追加します。 | |
76 | + /// </summary> | |
77 | + /// <param name="handler">イベントハンドラ</param> | |
24 | 78 | INotStartedUserStream SetReceiveFriendsEvent(EventHandler<ReceiveFriendsEventArgs> handler); |
79 | + /// <summary> | |
80 | + /// <see cref="NewTweet"/>イベントにイベントハンドラを追加します。 | |
81 | + /// </summary> | |
82 | + /// <param name="handler">イベントハンドラ</param> | |
25 | 83 | INotStartedUserStream SetNewTweetEvent(EventHandler<NewTweetEventArgs> handler); |
84 | + /// <summary> | |
85 | + /// <see cref="NewDirectMessage"/>イベントにイベントハンドラを追加します。 | |
86 | + /// </summary> | |
87 | + /// <param name="handler">イベントハンドラ</param> | |
26 | 88 | INotStartedUserStream SetNewDirectMessageEvent(EventHandler<NewDirectMessageEventArgs> handler); |
89 | + /// <summary> | |
90 | + /// <see cref="DeleteStatus"/>イベントにイベントハンドラを追加します。 | |
91 | + /// </summary> | |
92 | + /// <param name="handler">イベントハンドラ</param> | |
27 | 93 | INotStartedUserStream SetDeleteStatusEvent(EventHandler<DeleteStatusEventArgs> handler); |
94 | + /// <summary> | |
95 | + /// <see cref="ReceiveEvent"/>イベントにイベントハンドラを追加します。 | |
96 | + /// </summary> | |
97 | + /// <param name="handler">イベントハンドラ</param> | |
28 | 98 | INotStartedUserStream SetReceiveEventEvent(EventHandler<ReceiveEventEventArgs> handler); |
99 | + /// <summary> | |
100 | + /// <see cref="TrackLimit"/>イベントにイベントハンドラを追加します。 | |
101 | + /// </summary> | |
102 | + /// <param name="handler">イベントハンドラ</param> | |
29 | 103 | INotStartedUserStream SetTrackLimitEvent(EventHandler<TrackLimitEventArgs> handler); |
104 | + /// <summary> | |
105 | + /// <see cref="ReceiveUnsupportedData"/>イベントにイベントハンドラを追加します。 | |
106 | + /// </summary> | |
107 | + /// <param name="handler">イベントハンドラ</param> | |
30 | 108 | INotStartedUserStream SetReceiveUnsupportedDataEvent(EventHandler<ReceiveJsonEventArgs> handler); |
31 | 109 | #endregion |
32 | 110 | } |
33 | 111 | |
34 | - public interface IStartedUserStream | |
112 | + /// <summary> | |
113 | + /// 接続されていて、Timeoutが設定された<see cref="UserStream"/>クラスを表します。 | |
114 | + /// </summary> | |
115 | + public interface ISetedTimeoutUserStream | |
35 | 116 | { |
117 | + /// <summary> | |
118 | + /// 切断してStoppedイベントを発生させます。 | |
119 | + /// </summary> | |
36 | 120 | INotStartedUserStream Stop(); |
37 | - IStartedUserStream SetTimeout(int waitTime); | |
121 | + } | |
122 | + | |
123 | + /// <summary> | |
124 | + /// 接続されている状態の<see cref="UserStream"/>クラスを表します。 | |
125 | + /// </summary> | |
126 | + public interface IStartedUserStream : ISetedTimeoutUserStream | |
127 | + { | |
128 | + /// <summary> | |
129 | + /// 指定した時間が経過したら切断するように設定します。 | |
130 | + /// </summary> | |
131 | + /// <param name="waitTime">切断するまでの時間(ミリ秒単位)。0以下を指定するとすぐに切断します。</param> | |
132 | + ISetedTimeoutUserStream SetTimeout(int waitTime); | |
38 | 133 | } |
39 | 134 | } |
@@ -21,6 +21,7 @@ LINQ to Twitter用UserStream補助ライブラリ | ||
21 | 21 | ・Stopメソッドで停止したときにStoppedEventArgs.ReasonがErrorになる不具合を修正 |
22 | 22 | ・list_createdイベント発生時に例外を吐くのを修正 |
23 | 23 | ・メソッドチェーンでつなげるように改良 |
24 | + ・XMLコメントを付けた | |
24 | 25 | 1.0.1 (2011/2/7) |
25 | 26 | ・DirectMessageを受信したときに例外を吐くのを修正 |
26 | 27 | ・limitに対応 |
@@ -9,9 +9,16 @@ using LinqToTwitter; | ||
9 | 9 | |
10 | 10 | namespace Azyobuzi.UserStreamEx |
11 | 11 | { |
12 | + /// <summary> | |
13 | + /// TwitterのUserStreamをイベントを使って処理します。 | |
14 | + /// </summary> | |
12 | 15 | public class UserStream |
13 | 16 | : INotStartedUserStream, IStartedUserStream |
14 | 17 | { |
18 | + /// <summary> | |
19 | + /// <see cref="UserStream"/>クラスの新しいインスタンスを初期化します。 | |
20 | + /// </summary> | |
21 | + /// <param name="auth">認証済みの<see cref="LinqToTwitter.ITwitterAuthorizer"/></param> | |
15 | 22 | public UserStream(ITwitterAuthorizer auth) |
16 | 23 | { |
17 | 24 | this.auth = auth; |
@@ -20,6 +27,11 @@ namespace Azyobuzi.UserStreamEx | ||
20 | 27 | private ITwitterAuthorizer auth; |
21 | 28 | private HttpWebRequest req; |
22 | 29 | |
30 | + /// <summary> | |
31 | + /// 接続を開始します。 | |
32 | + /// </summary> | |
33 | + /// <param name="track">検索キーワードっぽいもの。null可。</param> | |
34 | + /// <param name="allReplies">friendsに対する返信も含めるかどうか</param> | |
23 | 35 | public IStartedUserStream Start(string track, bool allReplies) |
24 | 36 | { |
25 | 37 | if (req != null) req.Abort(); |
@@ -120,6 +132,9 @@ namespace Azyobuzi.UserStreamEx | ||
120 | 132 | } |
121 | 133 | } |
122 | 134 | |
135 | + /// <summary> | |
136 | + /// 切断してStoppedイベントを発生させます。 | |
137 | + /// </summary> | |
123 | 138 | public INotStartedUserStream Stop() |
124 | 139 | { |
125 | 140 | if (req != null) req.Abort(); |
@@ -127,7 +142,11 @@ namespace Azyobuzi.UserStreamEx | ||
127 | 142 | return this; |
128 | 143 | } |
129 | 144 | |
130 | - public IStartedUserStream SetTimeout(int waitTime) | |
145 | + /// <summary> | |
146 | + /// 指定した時間が経過したら切断するように設定します。 | |
147 | + /// </summary> | |
148 | + /// <param name="waitTime">切断するまでの時間(ミリ秒単位)。0以下を指定するとすぐに切断します。</param> | |
149 | + public ISetedTimeoutUserStream SetTimeout(int waitTime) | |
131 | 150 | { |
132 | 151 | if (waitTime < 1) |
133 | 152 | { |
@@ -146,69 +165,136 @@ namespace Azyobuzi.UserStreamEx | ||
146 | 165 | return this; |
147 | 166 | } |
148 | 167 | |
168 | + /// <summary> | |
169 | + /// 取得したデータを書き込む<see cref="System.IO.TextWriter"/> | |
170 | + /// </summary> | |
149 | 171 | public TextWriter StreamingWriter { set; get; } |
150 | 172 | |
151 | 173 | #region Events |
174 | + /// <summary> | |
175 | + /// 接続を開始するときに発生します。 | |
176 | + /// </summary> | |
152 | 177 | public event EventHandler Started; |
178 | + /// <summary> | |
179 | + /// 切断されたときに発生します。 | |
180 | + /// </summary> | |
153 | 181 | public event EventHandler<StoppedEventArgs> Stopped; |
182 | + /// <summary> | |
183 | + /// friends(following)のID一覧を受け取ったときに発生します。通常は開始直後に一回だけ発生します。 | |
184 | + /// </summary> | |
154 | 185 | public event EventHandler<ReceiveFriendsEventArgs> ReceiveFriends; |
186 | + /// <summary> | |
187 | + /// 新しいツイートを受け取ったときに発生します。 | |
188 | + /// </summary> | |
155 | 189 | public event EventHandler<NewTweetEventArgs> NewTweet; |
190 | + /// <summary> | |
191 | + /// 新しいダイレクトメッセージを受信・送信したときに発生します。 | |
192 | + /// </summary> | |
156 | 193 | public event EventHandler<NewDirectMessageEventArgs> NewDirectMessage; |
194 | + /// <summary> | |
195 | + /// ツイートまたはダイレクトメッセージが削除されたときに発生します。ハンドラでは直ちに表示から消すような処理をしてください。 | |
196 | + /// </summary> | |
157 | 197 | public event EventHandler<DeleteStatusEventArgs> DeleteStatus; |
198 | + /// <summary> | |
199 | + /// イベントを受信したときに発生します。 | |
200 | + /// </summary> | |
158 | 201 | public event EventHandler<ReceiveEventEventArgs> ReceiveEvent; |
202 | + /// <summary> | |
203 | + /// Twitter側で処理しきれないツイートがあったときに発生します。 | |
204 | + /// </summary> | |
205 | + /// <remarks>詳細不明</remarks> | |
159 | 206 | public event EventHandler<TrackLimitEventArgs> TrackLimit; |
207 | + /// <summary> | |
208 | + /// 対応していないデータを受け取ったときに発生します。 | |
209 | + /// </summary> | |
160 | 210 | public event EventHandler<ReceiveJsonEventArgs> ReceiveUnsupportedData; |
161 | 211 | #endregion |
162 | 212 | |
163 | 213 | #region AddHandlerMethod |
214 | + /// <summary> | |
215 | + /// <see cref="Started"/>イベントにイベントハンドラを追加します。 | |
216 | + /// </summary> | |
217 | + /// <param name="handler">イベントハンドラ</param> | |
164 | 218 | public INotStartedUserStream SetStartedEvent(EventHandler handler) |
165 | 219 | { |
166 | 220 | Started += handler; |
167 | 221 | return this; |
168 | 222 | } |
169 | 223 | |
224 | + /// <summary> | |
225 | + /// <see cref="Stopped"/>イベントにイベントハンドラを追加します。 | |
226 | + /// </summary> | |
227 | + /// <param name="handler">イベントハンドラ</param> | |
170 | 228 | public INotStartedUserStream SetStoppedEvent(EventHandler<StoppedEventArgs> handler) |
171 | 229 | { |
172 | 230 | Stopped += handler; |
173 | 231 | return this; |
174 | 232 | } |
175 | 233 | |
234 | + /// <summary> | |
235 | + /// <see cref="ReceiveFriends"/>イベントにイベントハンドラを追加します。 | |
236 | + /// </summary> | |
237 | + /// <param name="handler">イベントハンドラ</param> | |
176 | 238 | public INotStartedUserStream SetReceiveFriendsEvent(EventHandler<ReceiveFriendsEventArgs> handler) |
177 | 239 | { |
178 | 240 | ReceiveFriends += handler; |
179 | 241 | return this; |
180 | 242 | } |
181 | 243 | |
244 | + /// <summary> | |
245 | + /// <see cref="NewTweet"/>イベントにイベントハンドラを追加します。 | |
246 | + /// </summary> | |
247 | + /// <param name="handler">イベントハンドラ</param> | |
182 | 248 | public INotStartedUserStream SetNewTweetEvent(EventHandler<NewTweetEventArgs> handler) |
183 | 249 | { |
184 | 250 | NewTweet += handler; |
185 | 251 | return this; |
186 | 252 | } |
187 | 253 | |
254 | + /// <summary> | |
255 | + /// <see cref="NewDirectMessage"/>イベントにイベントハンドラを追加します。 | |
256 | + /// </summary> | |
257 | + /// <param name="handler">イベントハンドラ</param> | |
188 | 258 | public INotStartedUserStream SetNewDirectMessageEvent(EventHandler<NewDirectMessageEventArgs> handler) |
189 | 259 | { |
190 | 260 | NewDirectMessage += handler; |
191 | 261 | return this; |
192 | 262 | } |
193 | 263 | |
264 | + /// <summary> | |
265 | + /// <see cref="DeleteStatus"/>イベントにイベントハンドラを追加します。 | |
266 | + /// </summary> | |
267 | + /// <param name="handler">イベントハンドラ</param> | |
194 | 268 | public INotStartedUserStream SetDeleteStatusEvent(EventHandler<DeleteStatusEventArgs> handler) |
195 | 269 | { |
196 | 270 | DeleteStatus += handler; |
197 | 271 | return this; |
198 | 272 | } |
199 | 273 | |
274 | + /// <summary> | |
275 | + /// <see cref="ReceiveEvent"/>イベントにイベントハンドラを追加します。 | |
276 | + /// </summary> | |
277 | + /// <param name="handler">イベントハンドラ</param> | |
200 | 278 | public INotStartedUserStream SetReceiveEventEvent(EventHandler<ReceiveEventEventArgs> handler) |
201 | 279 | { |
202 | 280 | ReceiveEvent += handler; |
203 | 281 | return this; |
204 | 282 | } |
205 | 283 | |
284 | + /// <summary> | |
285 | + /// <see cref="TrackLimit"/>イベントにイベントハンドラを追加します。 | |
286 | + /// </summary> | |
287 | + /// <param name="handler">イベントハンドラ</param> | |
206 | 288 | public INotStartedUserStream SetTrackLimitEvent(EventHandler<TrackLimitEventArgs> handler) |
207 | 289 | { |
208 | 290 | TrackLimit += handler; |
209 | 291 | return this; |
210 | 292 | } |
211 | 293 | |
294 | + /// <summary> | |
295 | + /// <see cref="ReceiveUnsupportedData"/>イベントにイベントハンドラを追加します。 | |
296 | + /// </summary> | |
297 | + /// <param name="handler">イベントハンドラ</param> | |
212 | 298 | public INotStartedUserStream SetReceiveUnsupportedDataEvent(EventHandler<ReceiveJsonEventArgs> handler) |
213 | 299 | { |
214 | 300 | ReceiveUnsupportedData += handler; |
@@ -21,6 +21,7 @@ | ||
21 | 21 | <DefineConstants>DEBUG;TRACE</DefineConstants> |
22 | 22 | <ErrorReport>prompt</ErrorReport> |
23 | 23 | <WarningLevel>4</WarningLevel> |
24 | + <DocumentationFile>bin\Debug\UserStreamEx.XML</DocumentationFile> | |
24 | 25 | </PropertyGroup> |
25 | 26 | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
26 | 27 | <DebugType>pdbonly</DebugType> |
@@ -29,6 +30,7 @@ | ||
29 | 30 | <DefineConstants>TRACE</DefineConstants> |
30 | 31 | <ErrorReport>prompt</ErrorReport> |
31 | 32 | <WarningLevel>4</WarningLevel> |
33 | + <DocumentationFile>bin\Release\UserStreamEx.XML</DocumentationFile> | |
32 | 34 | </PropertyGroup> |
33 | 35 | <ItemGroup> |
34 | 36 | <Reference Include="DynamicJson, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL"> |