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); }
// Token: 0x060001D8 RID: 472 RVA: 0x00008480 File Offset: 0x00006680 public sealed override MimeNode Clone() { ContentTypeHeader contentTypeHeader = new ContentTypeHeader(); this.CopyTo(contentTypeHeader); return(contentTypeHeader); }
// 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(); } }
// 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; } }
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); }
// 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; }
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; } }