private void OnStatusAdded(StatusInfomation addedStatus, int statusNo, int allStatusCount) { if (StatusAdded != null) { StatusAdded(this, new StatusAddedEventArgs(addedStatus, statusNo, allStatusCount)); } }
/// <summary> /// ステータス情報XMLをステータス情報にパージングする /// </summary> /// <param name="stream">ステータス情報XMLを格納したStream</param> /// <returns>ステータス情報</returns> private StatusInfomation[] PaeseStatuses(Stream stream) { List <StatusInfomation> statusList = new List <StatusInfomation>(); try { XmlDocument xdoc = new XmlDocument(); xdoc.Load(stream); XmlNodeList statusNodes = xdoc.GetElementsByTagName("status"); int statusCount = 0; foreach (XmlNode statusNode in statusNodes) { // ステータス StatusInfomation status = new StatusInfomation(); foreach (XmlNode inStatusNode in statusNode.ChildNodes) { switch (inStatusNode.Name) { case "created_at": status.SetCreatedAt(inStatusNode.InnerText); break; case "id": status.Id = inStatusNode.InnerText; break; case "text": status.Text = inStatusNode.InnerText; break; case "user": { // ユーザー情報 UserInfomation user = new UserInfomation(); foreach (XmlNode userNode in inStatusNode.ChildNodes) { switch (userNode.Name) { case "id": user.Id = userNode.InnerText; break; case "name": user.Name = userNode.InnerText; break; case "screen_name": user.ScreenName = userNode.InnerText; break; case "location": user.Location = userNode.InnerText; break; case "description": user.Description = userNode.InnerText; break; case "profile_image_url": try { user.ProfileImageUrl = new Uri(userNode.InnerText); } catch (UriFormatException) {; } break; case "url": try { user.Url = new Uri(userNode.InnerText); } catch (UriFormatException) {; } break; case "protected": if (userNode.InnerText == Boolean.TrueString) { user.ProtectedMyUpdate = true; } else { user.ProtectedMyUpdate = false; } break; } } // foreach (XmlNode userNode in inStatusNode.ChildNodes) status.User = user; } break; } } // foreach (XmlNode inStatusNode in statusNode.ChildNodes) statusList.Add(status); OnStatusAdded(status, ++statusCount, statusNodes.Count); } } catch (WebException) { throw; } catch (OutOfMemoryException) { throw; } catch (IOException) { throw; } catch (UriFormatException) { throw; } catch (SocketException) { throw; } catch (XmlException) { throw; } return(statusList.ToArray()); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="status">追加したステータス情報</param> /// <param name="statusNo">追加されたステータス情報の番号を取得する</param> /// <param name="allStatusCount">追加されるはずのステータス情報の数</param> public StatusAddedEventArgs(StatusInfomation status, int statusNo, int allStatusCount) { this.status = status; this.statusNo = statusNo; this.allStatusCount = allStatusCount; }