[Csmail-patches] CVS: csmail/src/CSMail ChangeLog,1.58,1.59 EMailAddress.cs,1.7,1.8 EMailAddressList
Status: Pre-Alpha
Brought to you by:
mastergaurav
|
From: Gaurav V. <mas...@us...> - 2002-10-25 17:07:10
|
Update of /cvsroot/csmail/csmail/src/CSMail
In directory usw-pr-cvs1:/tmp/cvs-serv4727
Modified Files:
ChangeLog EMailAddress.cs EMailAddressList.cs
Log Message:
2002-10-25
* EMailAddress.cs : Validate() - Implemented.
: Unquote(string) - Implemented.
* EMailAddressList.cs : Contains() - Implemented.
: Parse(string, bool, bool) - Can now unquote.
Index: ChangeLog
===================================================================
RCS file: /cvsroot/csmail/csmail/src/CSMail/ChangeLog,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- ChangeLog 25 Oct 2002 08:52:12 -0000 1.58
+++ ChangeLog 25 Oct 2002 09:22:18 -0000 1.59
@@ -1,6 +1,13 @@
2002-10-25 Gaurav Vaish <mastergaurav AT users DOT sf DOT net>
+ * EMailAddress.cs : Validate() - Implemented.
+ : Unquote(string) - Implemented.
+ * EMailAddressList.cs : Contains() - Implemented.
+ : Parse(string, bool, bool) - Can now unquote.
+
+2002-10-25 Gaurav Vaish <mastergaurav AT users DOT sf DOT net>
+
* Constants.cs : RFC822Phrase,
: RFC822PhraseNoDot,
: RFC822PhraseNoDotAt - New constants.
Index: EMailAddress.cs
===================================================================
RCS file: /cvsroot/csmail/csmail/src/CSMail/EMailAddress.cs,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- EMailAddress.cs 25 Oct 2002 08:52:13 -0000 1.7
+++ EMailAddress.cs 25 Oct 2002 09:22:18 -0000 1.8
@@ -9,6 +9,7 @@
*/
using System;
+using System.Text;
namespace CSMail
{
@@ -26,6 +27,13 @@
private string host;
private string name;
+ public EMailAddress()
+ {
+ user = null;
+ host = null;
+ name = null;
+ }
+
public EMailAddress(string email)
{
Parse(email);
@@ -66,6 +74,32 @@
host = parts[1];
}
+ protected internal static string Unquote(string source)
+ {
+ if(source[0] == '"' && source[source.Length - 1] == '"')
+ {
+ source = source.Substring(1, source.Length - 2);
+ if(source.IndexOf('\\') >= 0)
+ {
+ StringBuilder sb = new StringBuilder(source.Length);
+ char c;
+ int len = source.Length;
+ for(int index = 0; index < len; index++)
+ {
+ c = source[index];
+ if(c == '\\' && index < len - 1)
+ {
+ index++;
+ c = source[index];
+ }
+ sb.Append(c);
+ }
+ source = sb.ToString();
+ }
+ }
+ return source;
+ }
+
protected internal static void ValidateAddress(string address,
bool isEmail)
{
@@ -138,7 +172,13 @@
{
get
{
- return user;
+ if(user != null)
+ return user;
+ return String.Empty;
+ }
+ set
+ {
+ user = value;
}
}
@@ -149,7 +189,13 @@
{
get
{
- return host;
+ if(host != null)
+ return host;
+ return String.Empty;
+ }
+ set
+ {
+ host = value;
}
}
@@ -160,7 +206,13 @@
{
get
{
- return name;
+ if(name != null)
+ return name;
+ return String.Empty;
+ }
+ set
+ {
+ name = value;
}
}
@@ -176,10 +228,9 @@
}
}
- [MailTODO]
public void Validate()
{
- throw new NotImplementedException();
+ ValidateAddress(user + '@' + host, true);
}
/// <summary>
@@ -292,7 +343,7 @@
/// </returns>
public override int GetHashCode()
{
- string em = user.ToLower() + "@" + host.ToLower();
+ string em = User.ToLower() + "@" + Host.ToLower();
return em.GetHashCode();
}
Index: EMailAddressList.cs
===================================================================
RCS file: /cvsroot/csmail/csmail/src/CSMail/EMailAddressList.cs,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- EMailAddressList.cs 25 Oct 2002 08:52:13 -0000 1.6
+++ EMailAddressList.cs 25 Oct 2002 09:22:18 -0000 1.7
@@ -9,6 +9,7 @@
*/
using System;
+using System.Text;
using System.Collections;
namespace CSMail
@@ -20,14 +21,13 @@
/// <seealso cref="IAddressList"/>
public class EMailAddressList: IAddressList, IEnumerable
{
- private ArrayList emails;
+ private ArrayList emails = new ArrayList();
/// <summary>
/// Creates an empty instance.
/// </summary>
public EMailAddressList()
{
- emails = new ArrayList();
}
/// <summary>
@@ -37,7 +37,6 @@
/// filled in the initial list.</param>
public EMailAddressList(EMailAddress[] addresses)
{
- emails = new ArrayList();
foreach(EMailAddress current in addresses)
{
if(current != null)
@@ -54,7 +53,6 @@
/// filled in the initial list.</param>
public EMailAddressList(EMailAddressList addresses)
{
- emails = new ArrayList();
foreach(EMailAddress current in addresses)
{
if(current != null)
@@ -64,10 +62,16 @@
}
}
- [MailTODO]
public EMailAddressList(string headerValue)
{
- throw new NotImplementedException();
+ EMailAddress[] values = Parse(headerValue);
+ if(values != null && values.Length > 0)
+ {
+ foreach(EMailAddress current in values)
+ {
+ emails.Add(current);
+ }
+ }
}
public static EMailAddress[] Parse(string headerValue)
@@ -87,7 +91,6 @@
return Parse(headerValue, strict, true);
}
- [MailTODO]
private static EMailAddress[] Parse(string headerValue,
bool strict, bool validate)
{
@@ -286,9 +289,12 @@
toAdd = new EMailAddress(actVal);
if(nameStartIndex >= 0)
{
- throw new NotImplementedException("[EMailAddressList]" +
- " Don't know yet, how to unquote");
- // reset nameStartIndex and addressStartIndex
+ toAdd.Name = EMailAddress.Unquote(
+ headerValue.Substring(
+ nameStartIndex,
+ addressStartIndex - nameStartIndex).Trim());
+ nameStartIndex = -1;
+ addressStartIndex = -1;
}
addressList.Add(toAdd);
toAdd = null;
@@ -327,9 +333,12 @@
toAdd = new EMailAddress(actVal);
if(nameStartIndex >= 0)
{
- throw new NotImplementedException("[EMailAddressList]" +
- " Don't know yet, how to unquote");
- // reset nameStartIndex and addressStartIndex
+ toAdd.Name = EMailAddress.Unquote(
+ headerValue.Substring(
+ nameStartIndex,
+ addressStartIndex - nameStartIndex).Trim());
+ nameStartIndex = -1;
+ addressStartIndex = -1;
}
addressList.Add(toAdd);
toAdd = null;
@@ -419,10 +428,9 @@
}
}
- [MailTODO]
public bool Contains(EMailAddress address)
{
- throw new NotImplementedException();
+ return emails.Contains(address);
}
/// <summary>
|