[Csmail-patches] CVS: csmail/src/CSMail.Utils ChangeLog,1.23,1.24 MimeUtils.cs,1.4,1.5
Status: Pre-Alpha
Brought to you by:
mastergaurav
From: Gaurav V. <mas...@us...> - 2002-10-31 10:42:00
|
Update of /cvsroot/csmail/csmail/src/CSMail.Utils In directory usw-pr-cvs1:/tmp/cvs-serv4420 Modified Files: ChangeLog MimeUtils.cs Log Message: 2002-10-31 * MimeUtils.cs : Get/Set-ContentLanguage - Implemented. : Get/Set-TransferEncoding - Implemented. Index: ChangeLog =================================================================== RCS file: /cvsroot/csmail/csmail/src/CSMail.Utils/ChangeLog,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- ChangeLog 31 Oct 2002 06:31:07 -0000 1.23 +++ ChangeLog 31 Oct 2002 10:41:57 -0000 1.24 @@ -1,5 +1,10 @@ -2002-10-30 Gaurav Vaish <mastergaurav AT users DOT sf DOT net> +2002-10-31 Gaurav Vaish <mastergaurav AT users DOT sf DOT net> + + * MimeUtils.cs : Get/Set-ContentLanguage - Implemented. + : Get/Set-TransferEncoding - Implemented. + +2002-10-31 Gaurav Vaish <mastergaurav AT users DOT sf DOT net> * MimeUtils.cs : SetDisposition(IMimePart, ContentDisposition), : GetDisposition(IMimePart) Index: MimeUtils.cs =================================================================== RCS file: /cvsroot/csmail/csmail/src/CSMail.Utils/MimeUtils.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- MimeUtils.cs 31 Oct 2002 06:31:07 -0000 1.4 +++ MimeUtils.cs 31 Oct 2002 10:41:58 -0000 1.5 @@ -9,6 +9,7 @@ */ using System; +using System.Collections; using System.IO; using System.Text; using CSMail; @@ -90,6 +91,137 @@ string encoding) { throw new NotImplementedException(); + } + + public static string[] GetContentLanguage(IMimePart mimePart) + { + if(mimePart != null) + { + string val = mimePart.Headers["Content-Language"]; + if(val != null && val.Trim().Length > 0) + { + HeaderTokenizer ht = new HeaderTokenizer(val.Trim(), + Constants.MIMEDelimiters); + ArrayList langs = new ArrayList(); + while(true) + { + HeaderToken token = ht.Next; + if(token.TokenType == HeaderTokenType.EOF) + break; + if(token.TokenType == HeaderTokenType.Atom) + langs.Add(token.Value); + } + if(langs.Count > 0) + { + string[] retVal = new string[langs.Count]; + langs.CopyTo(retVal); + return retVal; + } + } + } + return null; + } + + public static void SetContentLanguage(IMimePart mimePart, + string[] languages) + { + string headerLine = ","; + foreach(string clang in languages) + { + headerLine += (',' + clang); + } + headerLine = headerLine.Substring(1); + mimePart.Headers["Content-Language"] = headerLine; + } + + public static void SetTransferEncoding(IMimePart mimePart, + string encoding) + { + SetTransferEncoding(mimePart, TransferEncoding.UserDefined, + encoding); + } + + public static void SetTransferEncoding(IMimePart mimePart, + TransferEncoding tenc) + { + if(tenc == TransferEncoding.UserDefined) + throw new ArgumentException("[SetTransferEncoding]" + + " Cannot set user defined encoding" + + " using this method."); + SetTransferEncoding(mimePart, tenc, null); + } + + public static void SetTransferEncoding(IMimePart mimePart, + TransferEncoding tenc, + string userDefined) + { + if(!Enum.IsDefined(typeof(TransferEncoding), tenc)) + throw new ArgumentException("[SetTransferEncoding]" + + " Unknown value in transfer encoding" + + " parameter"); + if(mimePart != null) + { + string val = null; + switch(tenc) + { + case TransferEncoding.Default: + goto case TransferEncoding.Bit7; + case TransferEncoding.Bit7 : val = "7-bit"; + break; + case TransferEncoding.Bit8 : val = "8-bit"; + break; + case TransferEncoding.QuotedPrintable : + val = "quoted-printable"; + break; + case TransferEncoding.Base64 : val = "base64"; + break; + case TransferEncoding.Binary : val = "binary"; + break; + case TransferEncoding.UserDefined + : if(!userDefined.ToLower().StartsWith("x-")) + throw new ArgumentException( + "[SetTransferEncoding] User" + + " defined values must start" + + " with 'x-'"); + val = userDefined; + break; + } + mimePart.Headers["Content-Transfer-Encoding"] = val; + } + } + + public static TransferEncoding GetTransferEncoding(IMimePart mimePart, + out string stringValue) + { + stringValue = null; + if(mimePart != null) + { + string encVal = mimePart.Headers["Content-Transfer-Encoding"]; + if(encVal != null) + encVal = encVal.Trim(); + stringValue = encVal; + if(stringValue != null && stringValue.Length > 0) + { + TransferEncoding enc = TransferEncoding.UserDefined; + encVal = encVal.ToLower(); + switch(encVal) + { + case "7-bit" : enc = TransferEncoding.Bit7; + break; + case "8-bit" : enc = TransferEncoding.Bit8; + break; + case "quoted-printable" + : enc = TransferEncoding.QuotedPrintable; + break; + case "base64" : enc = TransferEncoding.Base64; + break; + case "binary" : enc = TransferEncoding.Binary; + break; + } + return enc; + } + } + return TransferEncoding.Default; } } } |