Ejemplo n.º 1
0
        private void WriteParameter(MimeParameter parameter)
        {
            if (this.lastHeader == null || !(this.lastHeader is ComplexHeader))
            {
                throw new InvalidOperationException(Strings.CannotWriteParametersOnThisHeader);
            }
            switch (this.state)
            {
            case MimeWriteState.Complete:
            case MimeWriteState.StartPart:
            case MimeWriteState.Recipients:
            case MimeWriteState.PartContent:
            case MimeWriteState.EndPart:
                throw new InvalidOperationException(Strings.CannotWriteParametersHere);
            }
            this.state = MimeWriteState.Parameters;
            ContentTypeHeader contentTypeHeader = this.lastHeader as ContentTypeHeader;

            if (contentTypeHeader != null && contentTypeHeader.IsMultipart && parameter.Name == "boundary")
            {
                string value = parameter.Value;
                if (value.Length == 0)
                {
                    throw new ArgumentException(Strings.CannotWriteEmptyOrNullBoundary);
                }
                this.currentPart.Boundary = ByteString.StringToBytes(value, false);
            }
            this.lastHeader.InternalAppendChild(parameter);
        }
Ejemplo n.º 2
0
        // Token: 0x060001D8 RID: 472 RVA: 0x00008480 File Offset: 0x00006680
        public sealed override MimeNode Clone()
        {
            ContentTypeHeader contentTypeHeader = new ContentTypeHeader();

            this.CopyTo(contentTypeHeader);
            return(contentTypeHeader);
        }
Ejemplo n.º 3
0
 // Token: 0x060001E0 RID: 480 RVA: 0x000087D8 File Offset: 0x000069D8
 private void EnsureBoundary()
 {
     if (base["boundary"] == null)
     {
         MimeParameter mimeParameter = new MimeParameter("boundary");
         base.InternalAppendChild(mimeParameter);
         mimeParameter.RawValue = ContentTypeHeader.CreateBoundary();
     }
 }
Ejemplo n.º 4
0
        // Token: 0x060001DD RID: 477 RVA: 0x000085B4 File Offset: 0x000067B4
        internal override void ParseValue(ValueParser parser, bool storeValue)
        {
            MimeStringList empty = MimeStringList.Empty;

            parser.ParseCFWS(false, ref empty, true);
            MimeString mimeString  = parser.ParseToken();
            MimeString mimeString2 = MimeString.Empty;

            parser.ParseCFWS(false, ref empty, true);
            byte b = parser.ParseGet();

            if (b == 47)
            {
                parser.ParseCFWS(false, ref empty, true);
                mimeString2 = parser.ParseToken();
            }
            else if (b != 0)
            {
                parser.ParseUnget();
            }
            if (storeValue)
            {
                if (mimeString.Length == 0)
                {
                    this.type = "text";
                }
                else
                {
                    this.type = Header.NormalizeString(mimeString.Data, mimeString.Offset, mimeString.Length, false);
                }
                if (mimeString2.Length == 0)
                {
                    if (this.type == "multipart")
                    {
                        this.subType = "mixed";
                    }
                    else if (this.type == "text")
                    {
                        this.subType = "plain";
                    }
                    else
                    {
                        this.type    = "application";
                        this.subType = "octet-stream";
                    }
                }
                else
                {
                    this.subType = Header.NormalizeString(mimeString2.Data, mimeString2.Offset, mimeString2.Length, false);
                }
                this.value = ContentTypeHeader.ComposeContentTypeValue(this.type, this.subType);
            }
            if (this.type == "multipart")
            {
                this.handleISO2022 = false;
            }
        }
Ejemplo n.º 5
0
        internal static Header Create(string name, HeaderId headerId)
        {
            if (headerId < HeaderId.Unknown || headerId > (HeaderId)MimeData.nameIndex.Length)
            {
                throw new ArgumentException(Strings.InvalidHeaderId, "headerId");
            }
            if (headerId == HeaderId.Unknown)
            {
                throw new ArgumentException(Strings.CannotDetermineHeaderNameFromId, "headerId");
            }
            Header header;

            switch (MimeData.headerNames[(int)MimeData.nameIndex[(int)headerId]].headerType)
            {
            case HeaderType.AsciiText:
                header = new AsciiTextHeader(MimeData.headerNames[(int)MimeData.nameIndex[(int)headerId]].name, headerId);
                break;

            case HeaderType.Date:
                header = new DateHeader(MimeData.headerNames[(int)MimeData.nameIndex[(int)headerId]].name, headerId);
                break;

            case HeaderType.Received:
                header = new ReceivedHeader();
                break;

            case HeaderType.ContentType:
                header = new ContentTypeHeader();
                break;

            case HeaderType.ContentDisposition:
                header = new ContentDispositionHeader();
                break;

            case HeaderType.Address:
                header = new AddressHeader(MimeData.headerNames[(int)MimeData.nameIndex[(int)headerId]].name, headerId);
                break;

            default:
                header = new TextHeader(MimeData.headerNames[(int)MimeData.nameIndex[(int)headerId]].name, headerId);
                break;
            }
            if (!string.IsNullOrEmpty(name) && !header.MatchName(name))
            {
                throw new ArgumentException("name");
            }
            return(header);
        }
Ejemplo n.º 6
0
        // Token: 0x060001D9 RID: 473 RVA: 0x0000849C File Offset: 0x0000669C
        public sealed override void CopyTo(object destination)
        {
            if (destination == null)
            {
                throw new ArgumentNullException("destination");
            }
            if (destination == this)
            {
                return;
            }
            ContentTypeHeader contentTypeHeader = destination as ContentTypeHeader;

            if (contentTypeHeader == null)
            {
                throw new ArgumentException(Strings.CantCopyToDifferentObjectType, "destination");
            }
            base.CopyTo(destination);
            contentTypeHeader.type    = this.type;
            contentTypeHeader.subType = this.subType;
            contentTypeHeader.value   = this.value;
            contentTypeHeader.parsed  = this.parsed;
        }
Ejemplo n.º 7
0
 private void FlushHeader()
 {
     this.headerValueWritten = false;
     if (this.lastHeader != null)
     {
         if (this.lastHeader.HeaderId == HeaderId.MimeVersion && this.partDepth == 1)
         {
             this.foundMimeVersion = true;
         }
         else if (this.lastHeader.HeaderId == HeaderId.ContentTransferEncoding)
         {
             string value = this.lastHeader.Value;
             if (value != null)
             {
                 this.contentTransferEncoding = MimePart.GetEncodingType(new MimeString(value));
             }
         }
         else if (this.lastHeader.HeaderId == HeaderId.ContentType)
         {
             ContentTypeHeader contentTypeHeader = this.lastHeader as ContentTypeHeader;
             if (contentTypeHeader.IsMultipart)
             {
                 this.currentPart.IsMultipart = true;
                 MimeParameter mimeParameter = contentTypeHeader["boundary"];
                 this.currentPart.Boundary = mimeParameter.RawValue;
             }
             else
             {
                 this.currentPart.IsMultipart = false;
             }
             this.currentPart.HasContentType = true;
         }
         this.lastHeader.WriteTo(this.shimStream, this.encodingOptions);
         this.lastHeader = null;
     }
 }