X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem%2FSystem.Net.Mime%2FContentDisposition.cs;h=c1d985a9237431baff74a42b33bdaeec6e967707;hb=6b6435d1b3206b0162c37e5ecce8d9a699fe6467;hp=a68fa9780bc6c90c49dee487e002d8ecd36e074e;hpb=948dbf8d4581ac17f5420cc4f7dc375e3c502576;p=mono.git diff --git a/mcs/class/System/System.Net.Mime/ContentDisposition.cs b/mcs/class/System/System.Net.Mime/ContentDisposition.cs old mode 100644 new mode 100755 index a68fa9780bc..c1d985a9237 --- a/mcs/class/System/System.Net.Mime/ContentDisposition.cs +++ b/mcs/class/System/System.Net.Mime/ContentDisposition.cs @@ -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 // // @@ -32,66 +30,35 @@ #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