/// <summary> /// Retrieves the server's newsgroups. /// </summary> /// <returns>The server's newsgroups.</returns> /// <example> /// <code> /// C# /// /// NntpClient nttp = new NntpClient(); /// nntp.Connect("news.myhost.com"); /// NewsGroupCollection groups = nntp.GetNewsGroups(); /// nntp.Disconnect(); /// /// VB.NET /// /// Dim nttp as New NntpClient() /// nntp.Connect("news.myhost.com") /// Dim groups as NewsGroupCollection = nntp.GetNewsGroups() /// nntp.Disconnect() /// /// JScript.NET /// /// var nntp:NntpClient = new NntpClient(); /// nntp.Connect("news.myhost.com"); /// var groups:NewsGroupCollection = nntp.GetNewsGroups(); /// nntp.Disconnect(); /// </code> /// </example> public NewsGroupCollection GetNewsGroups() { byte[] data = this.CommandMultiline("list"); string response = System.Text.Encoding.ASCII.GetString(data,0,data.Length); NewsGroupCollection groups = new NewsGroupCollection(); string[] _groups = System.Text.RegularExpressions.Regex.Split(response,"\r\n"); for(int i=1;i<_groups.Length-1;i++) { string[] _splitted = _groups[i].Split(' '); groups.Add(new NewsGroup(_splitted[0],System.Convert.ToInt32(_splitted[2]),System.Convert.ToInt32(_splitted[1]),(_splitted[3].ToLower()=="y") ? true : false,this)); } return groups; }
/// <summary> /// Retrieves the server's newsgroups that have been created since the specified date/time. /// </summary> /// <param name="startDate">The minimum creation date/time.</param> /// <param name="gmt">Specifies if startDate is GMT or not.</param> /// <param name="distribution">Distribution filter of the articles.</param> /// <returns>The server's newsgroups that have been created since the specified date/time and that contain articles for the specified distribution.</returns> /// <example> /// <code> /// C# /// /// NntpClient nttp = new NntpClient(); /// nntp.Connect("news.myhost.com"); /// //Get groups created less than one months ago (GMT time) and containing articles to be distributed to "staff". /// NewsGroupCollection groups = nntp.GetNewsGroups(System.DateTime.Now.AddMonth(-1),true,"staff"); /// nntp.Disconnect(); /// /// VB.NET /// /// Dim nttp as New NntpClient() /// nntp.Connect("news.myhost.com") /// 'Get groups created less than one months ago (GMT time) and containing articles to be distributed to "staff". /// Dim groups as NewsGroupCollection = nntp.GetNewsGroups(System.DateTime.Now.AddMonth(-1),True,"staff") /// nntp.Disconnect() /// /// JScript.NET /// /// var nntp:NntpClient = new NntpClient(); /// nntp.Connect("news.myhost.com"); /// //Get groups created less than one months ago (GMT time) and containing articles to be distributed to "staff". /// var groups:NewsGroupCollection = nntp.GetNewsGroups(System.DateTime.Now.AddMonth(-1),true,"staff"); /// nntp.Disconnect(); /// </code> /// </example> public NewsGroupCollection GetNewsGroups(System.DateTime startDate, bool gmt, string distribution) { string sdistribution = (distribution.Length>0) ? " "+distribution : ""; string sgmt = (gmt) ? " GMT" : ""; byte[] data = this.CommandMultiline("newgroups " + startDate.ToString("yyMMdd hhmmss") + sgmt + sdistribution); string response = System.Text.Encoding.ASCII.GetString(data,0,data.Length); ActiveUp.Net.Mail.NewsGroupCollection groups = new ActiveUp.Net.Mail.NewsGroupCollection(); string[] _groups = System.Text.RegularExpressions.Regex.Split(response,"\r\n"); for(int i=1;i<_groups.Length-1;i++) { string[] _splitted = _groups[i].Split(' '); groups.Add(new ActiveUp.Net.Mail.NewsGroup(_splitted[0], System.Convert.ToInt32(_splitted[2]), System.Convert.ToInt32(_splitted[1]), (_splitted[3].ToLower() == "y") ? true : false, this)); } return groups; }