private Encoding ReadRootContentTypeHeader(ContentTypeHeader header, Encoding[] expectedEncodings, string expectedType) { string str; if (header == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomRootContentTypeNotFound"))); } if ((string.Compare(MtomGlobals.XopMediaType, header.MediaType, StringComparison.OrdinalIgnoreCase) != 0) || (string.Compare(MtomGlobals.XopMediaSubtype, header.MediaSubtype, StringComparison.OrdinalIgnoreCase) != 0)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomRootNotApplicationXopXml", new object[] { MtomGlobals.XopMediaType, MtomGlobals.XopMediaSubtype }))); } if ((!header.Parameters.TryGetValue(MtomGlobals.CharsetParam, out str) || (str == null)) || (str.Length == 0)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomRootRequiredParamNotSpecified", new object[] { MtomGlobals.CharsetParam }))); } Encoding encoding = null; for (int i = 0; i < this.encodings.Length; i++) { if (string.Compare(str, expectedEncodings[i].WebName, StringComparison.OrdinalIgnoreCase) == 0) { encoding = expectedEncodings[i]; break; } } if (encoding == null) { if (string.Compare(str, "utf-16LE", StringComparison.OrdinalIgnoreCase) == 0) { for (int j = 0; j < this.encodings.Length; j++) { if (string.Compare(expectedEncodings[j].WebName, Encoding.Unicode.WebName, StringComparison.OrdinalIgnoreCase) == 0) { encoding = expectedEncodings[j]; break; } } } else if (string.Compare(str, "utf-16BE", StringComparison.OrdinalIgnoreCase) == 0) { for (int k = 0; k < this.encodings.Length; k++) { if (string.Compare(expectedEncodings[k].WebName, Encoding.BigEndianUnicode.WebName, StringComparison.OrdinalIgnoreCase) == 0) { encoding = expectedEncodings[k]; break; } } } if (encoding == null) { StringBuilder builder = new StringBuilder(); for (int m = 0; m < this.encodings.Length; m++) { if (builder.Length != 0) { builder.Append(" | "); } builder.Append(this.encodings[m].WebName); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomRootUnexpectedCharset", new object[] { str, builder.ToString() }))); } } if (expectedType != null) { string str2; if ((!header.Parameters.TryGetValue(MtomGlobals.TypeParam, out str2) || (str2 == null)) || (str2.Length == 0)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomRootRequiredParamNotSpecified", new object[] { MtomGlobals.TypeParam }))); } if (str2 != expectedType) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomRootUnexpectedType", new object[] { str2, expectedType }))); } } return encoding; }
Encoding ReadRootContentTypeHeader(ContentTypeHeader header, Encoding[] expectedEncodings, string expectedType) { if (header == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomRootContentTypeNotFound))); if (String.Compare(MtomGlobals.XopMediaType, header.MediaType, StringComparison.OrdinalIgnoreCase) != 0 || String.Compare(MtomGlobals.XopMediaSubtype, header.MediaSubtype, StringComparison.OrdinalIgnoreCase) != 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomRootNotApplicationXopXml, MtomGlobals.XopMediaType, MtomGlobals.XopMediaSubtype))); string charset; if (!header.Parameters.TryGetValue(MtomGlobals.CharsetParam, out charset) || charset == null || charset.Length == 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomRootRequiredParamNotSpecified, MtomGlobals.CharsetParam))); Encoding encoding = null; for (int i = 0; i < encodings.Length; i++) { if (String.Compare(charset, expectedEncodings[i].WebName, StringComparison.OrdinalIgnoreCase) == 0) { encoding = expectedEncodings[i]; break; } } if (encoding == null) { // Check for alternate names if (String.Compare(charset, "utf-16LE", StringComparison.OrdinalIgnoreCase) == 0) { for (int i = 0; i < encodings.Length; i++) { if (String.Compare(expectedEncodings[i].WebName, Encoding.Unicode.WebName, StringComparison.OrdinalIgnoreCase) == 0) { encoding = expectedEncodings[i]; break; } } } else if (String.Compare(charset, "utf-16BE", StringComparison.OrdinalIgnoreCase) == 0) { for (int i = 0; i < encodings.Length; i++) { if (String.Compare(expectedEncodings[i].WebName, Encoding.BigEndianUnicode.WebName, StringComparison.OrdinalIgnoreCase) == 0) { encoding = expectedEncodings[i]; break; } } } if (encoding == null) { StringBuilder expectedCharSetStr = new StringBuilder(); for (int i = 0; i < encodings.Length; i++) { if (expectedCharSetStr.Length != 0) expectedCharSetStr.Append(" | "); expectedCharSetStr.Append(encodings[i].WebName); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomRootUnexpectedCharset, charset, expectedCharSetStr.ToString()))); } } if (expectedType != null) { string rootType; if (!header.Parameters.TryGetValue(MtomGlobals.TypeParam, out rootType) || rootType == null || rootType.Length == 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomRootRequiredParamNotSpecified, MtomGlobals.TypeParam))); if (rootType != expectedType) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomRootUnexpectedType, rootType, expectedType))); } return encoding; }
private void ReadMessageContentTypeHeader(ContentTypeHeader header, out string boundary, out string start, out string startInfo) { string str; if (header == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomMessageContentTypeNotFound"))); } if ((string.Compare(MtomGlobals.MediaType, header.MediaType, StringComparison.OrdinalIgnoreCase) != 0) || (string.Compare(MtomGlobals.MediaSubtype, header.MediaSubtype, StringComparison.OrdinalIgnoreCase) != 0)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomMessageNotMultipart", new object[] { MtomGlobals.MediaType, MtomGlobals.MediaSubtype }))); } if (!header.Parameters.TryGetValue(MtomGlobals.TypeParam, out str) || (MtomGlobals.XopType != str)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomMessageNotApplicationXopXml", new object[] { MtomGlobals.XopType }))); } if (!header.Parameters.TryGetValue(MtomGlobals.BoundaryParam, out boundary)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomMessageRequiredParamNotSpecified", new object[] { MtomGlobals.BoundaryParam }))); } if (!MailBnfHelper.IsValidMimeBoundary(boundary)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(System.Runtime.Serialization.SR.GetString("MtomBoundaryInvalid", new object[] { boundary }))); } if (!header.Parameters.TryGetValue(MtomGlobals.StartParam, out start)) { start = null; } if (!header.Parameters.TryGetValue(MtomGlobals.StartInfoParam, out startInfo)) { startInfo = null; } }
void ReadMessageContentTypeHeader(ContentTypeHeader header, out string boundary, out string start, out string startInfo) { if (header == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomMessageContentTypeNotFound))); if (String.Compare(MtomGlobals.MediaType, header.MediaType, StringComparison.OrdinalIgnoreCase) != 0 || String.Compare(MtomGlobals.MediaSubtype, header.MediaSubtype, StringComparison.OrdinalIgnoreCase) != 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomMessageNotMultipart, MtomGlobals.MediaType, MtomGlobals.MediaSubtype))); string type; if (!header.Parameters.TryGetValue(MtomGlobals.TypeParam, out type) || MtomGlobals.XopType != type) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomMessageNotApplicationXopXml, MtomGlobals.XopType))); if (!header.Parameters.TryGetValue(MtomGlobals.BoundaryParam, out boundary)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomMessageRequiredParamNotSpecified, MtomGlobals.BoundaryParam))); if (!MailBnfHelper.IsValidMimeBoundary(boundary)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.MtomBoundaryInvalid, boundary))); if (!header.Parameters.TryGetValue(MtomGlobals.StartParam, out start)) start = null; if (!header.Parameters.TryGetValue(MtomGlobals.StartInfoParam, out startInfo)) startInfo = null; }