copying the latest Sys.Web.Services from trunk.
[mono.git] / mcs / class / System / System.Net.Mime / ContentDisposition.cs
old mode 100644 (file)
new mode 100755 (executable)
index a68fa97..c1d985a
@@ -1,12 +1,10 @@
 //
-// System.Net.Mime.ContentDisposition.cs
+// System.Net.Mail.ContentDisposition.cs
 //
-// Authors:
+// Author:
 //     Tim Coleman (tim@timcoleman.com)
-//     John Luke (john.luke@gmail.com)
 //
 // Copyright (C) Tim Coleman, 2004
-// Copyright (C) John Luke, 2005
 //
 
 //
 
 #if NET_2_0
 
-using System.Text;
-using System.Collections;
 using System.Collections.Specialized;
-using System.Globalization;
 
 namespace System.Net.Mime {
        public class ContentDisposition
        {
-               // FIXME: "r" was not enough, neither was zzz
-               // so this will fail if the offset is not an even hour
-               const string rfc822 = "dd MMM yyyy HH':'mm':'ss zz00";
-               
                #region Fields
 
+               string disposition;
+               DateTime creationDate;
                string dispositionType;
-               StringDictionary parameters = new StringDictionary ();
+               string filename;
+               bool inline;
+               DateTime modificationDate;
+               DateTime readDate;
+               int size;
 
                #endregion // Fields
 
                #region Constructors
 
-               public ContentDisposition () : this (DispositionTypeNames.Attachment)
+               [MonoTODO]
+               public ContentDisposition ()
                {
                }
 
+               [MonoTODO]
                public ContentDisposition (string disposition)
                {
-                       if (disposition == null)
-                               throw new ArgumentNullException ();
-                       if (disposition.Length < 1)
-                               throw new FormatException ();
-                       Size = -1;
-
-                       try {
-                               int index = disposition.IndexOf (';');
-                               if (index < 0) {
-                                       dispositionType = disposition.Trim ();
-                               }
-                               else {
-                                       string[] split = disposition.Split (';');
-                                       dispositionType = split[0].Trim ();
-                                       for (int i = 1; i < split.Length; i++)
-                                               Parse (split[i]);
-                               }
-                       } catch {
-                               throw new FormatException ();
-                       }
-               }
-
-               // the individual pieces
-               void Parse (string pair)
-               {
-                       if (pair == null || pair.Length < 0)
-                               return;
-
-                       string[] split = pair.Split ('=');
-                       if (split.Length == 2)
-                               parameters.Add (split[0].Trim (), split[1].Trim ());
-                       else
-                               throw new FormatException ();
+                       this.disposition = disposition;
                }
 
                #endregion // Constructors
@@ -99,137 +66,54 @@ namespace System.Net.Mime {
                #region Properties
 
                public DateTime CreationDate {
-                       get {
-                               if (parameters.ContainsKey ("creation-date"))
-                                       return DateTime.ParseExact (parameters["creation-date"], rfc822, null);
-                               else
-                                       return DateTime.MinValue;
-                       }
-                       set {
-                               if (value > DateTime.MinValue)
-                                       parameters["creation-date"] = value.ToString (rfc822);
-                               else
-                                       parameters.Remove ("modification-date");
-                       }
+                       get { return creationDate; }
+                       set { creationDate = value; }
                }
 
                public string DispositionType {
                        get { return dispositionType; }
-                       set {
-                               if (value == null)
-                                       throw new ArgumentNullException ();
-                               if (value.Length < 1)
-                                       throw new ArgumentException ();
-                               dispositionType = value;
-                       }
+                       set { dispositionType = value; }
                }
 
                public string FileName {
-                       get { return parameters["filename"]; }
-                       set { parameters["filename"] = value; }
+                       get { return filename; }
+                       set { filename = value; }
                }
 
                public bool Inline {
-                       get { return String.Compare (dispositionType, DispositionTypeNames.Inline, true, CultureInfo.InvariantCulture) == 0; }
-                       set {
-                               if (value)
-                                       dispositionType = DispositionTypeNames.Inline;
-                               else
-                                       dispositionType = DispositionTypeNames.Attachment;
-                       }
+                       get { return inline; }
+                       set { inline = value; }
                }
 
                public DateTime ModificationDate {
-                       get {
-                               if (parameters.ContainsKey ("modification-date"))
-                                       return DateTime.ParseExact (parameters["modification-date"], rfc822, null);
-                               else
-                                       return DateTime.MinValue;
-                       }
-                       set {
-                               if (value > DateTime.MinValue)
-                                       parameters["modification-date"] = value.ToString (rfc822);
-                               else
-                                       parameters.Remove ("modification-date");
-                       }
+                       get { return modificationDate; }
+                       set { modificationDate = value; } 
                }
 
+               [MonoTODO]
                public StringDictionary Parameters {
-                       get { return parameters; }
+                       get { throw new NotImplementedException (); }
                }
 
                public DateTime ReadDate {
-                       get {
-                               if (parameters.ContainsKey ("read-date"))
-                                       return DateTime.ParseExact (parameters["read-date"], rfc822, null);
-                               else
-                                       return DateTime.MinValue;
-                       }
-                       set {
-                               if (value > DateTime.MinValue)
-                                       parameters["read-date"] = value.ToString (rfc822);
-                               else
-                                       parameters.Remove ("read-date");
-                       }
+                       get { return readDate; } 
+                       set { readDate = value; }
                }
 
-               public long Size {
-                       get {
-                               if (parameters.ContainsKey ("size"))
-                                       return long.Parse (parameters["size"]);
-                               else
-                                       return -1;
-                       }
-                       set {
-                               if (value > -1)
-                                       parameters["size"] = value.ToString ();
-                               else
-                                       parameters.Remove ("size");
-                       }
+               public int Size {
+                       get { return size; }
+                       set { size = value; }
                }
 
+
                #endregion // Properties
 
                #region Methods
 
-               public override bool Equals (object obj)
-               {
-                       return Equals (obj as ContentDisposition);
-               }
-
-               bool Equals (ContentDisposition other)
-               {
-                       return other != null && ToString () == other.ToString ();
-               }
-
-               public override int GetHashCode ()
-               {
-                       return ToString ().GetHashCode ();
-               }
-
+               [MonoTODO]
                public override string ToString ()
                {
-                       // the content-disposition header as in RFC 2183
-                       // ex. attachment; filename=genome.jpeg; modification-date="Wed, 12 Feb 1997 16:29:51 -0500";
-                       // the dates must be quoted and in RFC 822 format
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append (DispositionType.ToLower ());
-                       if (Parameters != null && Parameters.Count > 0) {
-                               foreach (DictionaryEntry pair in Parameters)
-                               {
-                                       if (pair.Value != null && pair.Value.ToString ().Length > 0) {
-                                               sb.Append ("; ");
-                                               sb.Append (pair.Key);
-                                               sb.Append ("=");
-                                               if (pair.Key.ToString ().EndsWith ("date"))
-                                                       sb.Append ("\"");
-                                               sb.Append (pair.Value);
-                                               if (pair.Key.ToString ().EndsWith ("date"))
-                                                       sb.Append ("\"");
-                                       }
-                               }
-                       }
-                       return sb.ToString ();
+                       return disposition;
                }
 
                #endregion // Methods