[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;
}
}
}
|