/// <summary> /// Parses specified header field. /// </summary> /// <param name="field">Header field string (Name: value).</param> /// <returns>Returns parsed header field.</returns> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> /// <exception cref="ParseException">Is raised when header field parsing errors.</exception> public MIME_h Parse(string field) { if (field == null) { throw new ArgumentNullException("field"); } MIME_h headerField = null; string[] name_value = field.Split(new char[] { ':' }, 2); string name = name_value[0].Trim(); if (name == string.Empty) { throw new ParseException("Invalid header field value '" + field + "'."); } else { try{ if (m_pHeadrFields.ContainsKey(name)) { headerField = (MIME_h)m_pHeadrFields[name].GetMethod("Parse").Invoke(null, new object[] { field }); } else { headerField = (MIME_h)m_pDefaultHeaderField.GetMethod("Parse").Invoke(null, new object[] { field }); } } catch (Exception x) { headerField = new MIME_h_Unparsed(field, x.InnerException); } } return(headerField); }
/// <summary> /// Gets if collection contains the specified item. /// </summary> /// <param name="field">Header field.</param> /// <returns>Returns true if specified item exists in the collection, otherwise false.</returns> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> public bool Contains(MIME_h field) { if (field == null) { throw new ArgumentNullException("field"); } return(m_pFields.Contains(field)); }
/// <summary> /// Adds specified header field to the end of the collection. /// </summary> /// <param name="field">Header field to add.</param> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference value.</exception> public void Add(MIME_h field) { if (field == null) { throw new ArgumentNullException("field"); } m_pFields.Add(field); m_IsModified = true; }
/// <summary> /// Default constructor. /// </summary> /// <param name="owner">Owner MIME header field.</param> /// <exception cref="ArgumentNullException">Is raised when <b>owner</b> is null reference.</exception> public MIME_h_ParameterCollection(MIME_h owner) { if(owner == null){ throw new ArgumentNullException("owner"); } m_pOwner = owner; m_pParameters = new Dictionary<string,MIME_h_Parameter>(StringComparer.CurrentCultureIgnoreCase); }
/// <summary> /// Default constructor. /// </summary> /// <param name="owner">Owner MIME header field.</param> /// <exception cref="ArgumentNullException">Is raised when <b>owner</b> is null reference.</exception> public MIME_h_ParameterCollection(MIME_h owner) { if (owner == null) { throw new ArgumentNullException("owner"); } m_pOwner = owner; m_pParameters = new Dictionary <string, MIME_h_Parameter>(StringComparer.CurrentCultureIgnoreCase); }
/// <summary> /// Inserts a new header field into the collection at the specified location. /// </summary> /// <param name="index">The location in the collection where you want to add the item.</param> /// <param name="field">Header field to insert.</param> /// <exception cref="ArgumentOutOfRangeException">Is raised when <b>index</b> is out of range.</exception> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> public void Insert(int index,MIME_h field) { if(index < 0 || index > m_pFields.Count){ throw new ArgumentOutOfRangeException("index"); } if(field == null){ throw new ArgumentNullException("field"); } m_pFields.Insert(index,field); m_IsModified = true; }
/// <summary> /// Parses and adds specified header field to the end of the collection. /// </summary> /// <param name="field">Header field string (Name: value).</param> /// <returns>Retunrs added header field.</returns> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> public MIME_h Add(string field) { if (field == null) { throw new ArgumentNullException("field"); } MIME_h h = m_pProvider.Parse(field); m_pFields.Add(h); m_IsModified = true; return(h); }
/// <summary> /// Inserts a new header field into the collection at the specified location. /// </summary> /// <param name="index">The location in the collection where you want to add the item.</param> /// <param name="field">Header field to insert.</param> /// <exception cref="ArgumentOutOfRangeException">Is raised when <b>index</b> is out of range.</exception> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> public void Insert(int index, MIME_h field) { if (index < 0 || index > m_pFields.Count) { throw new ArgumentOutOfRangeException("index"); } if (field == null) { throw new ArgumentNullException("field"); } m_pFields.Insert(index, field); m_IsModified = true; }
/// <summary> /// Parses specified header field. /// </summary> /// <param name="field">Header field string (Name: value).</param> /// <returns>Returns parsed header field.</returns> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> /// <exception cref="ParseException">Is raised when header field parsing errors.</exception> public MIME_h Parse(string field) { if (field == null) { throw new ArgumentNullException("field"); } // <CRLF> is misssing from end, add it. if (!field.EndsWith("\r\n")) { field += "\r\n"; } MIME_h headerField = null; string[] name_value = field.Split(new char[] { ':' }, 2); string name = name_value[0].Trim(); if (name == string.Empty) { throw new ParseException("Invalid header field value '" + field + "'."); } else { try { if (m_pHeadrFields.ContainsKey(name)) { headerField = (MIME_h)System.Reflection.IntrospectionExtensions.GetTypeInfo(m_pHeadrFields[name]) .GetMethod("Parse").Invoke(null, new object[] { field }); } else { headerField = (MIME_h)System.Reflection.IntrospectionExtensions.GetTypeInfo(m_pDefaultHeaderField) .GetMethod("Parse").Invoke(null, new object[] { field }); } } catch (Exception x) { headerField = new MIME_h_Unparsed(field, x.InnerException); } } return(headerField); }
/// <summary> /// Replaces first header field with specified name with specified value. /// </summary> /// <param name="field">Hedaer field.</param> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> public void ReplaceFirst(MIME_h field) { if (field == null) { throw new ArgumentNullException("field"); } for (int i = 0; i < m_pFields.Count; i++) { if (string.Equals(field.Name, m_pFields[i].Name, StringComparison.CurrentCultureIgnoreCase)) { m_pFields.RemoveAt(i); m_pFields.Insert(i, field); return; } } }
/// <summary> /// Adds specified header field to the end of the collection. /// </summary> /// <param name="field">Header field to add.</param> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference value.</exception> public void Add(MIME_h field) { if(field == null){ throw new ArgumentNullException("field"); } m_pFields.Add(field); m_IsModified = true; }
/// <summary> /// Replaces first header field with specified name with specified value. /// </summary> /// <param name="field">Hedaer field.</param> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> public void ReplaceFirst(MIME_h field) { if(field == null){ throw new ArgumentNullException("field"); } for(int i=0;i<m_pFields.Count;i++){ if(string.Equals(field.Name,m_pFields[i].Name,StringComparison.CurrentCultureIgnoreCase)){ m_pFields.RemoveAt(i); m_pFields.Insert(i,field); return; } } }
/// <summary> /// Gets if collection contains the specified item. /// </summary> /// <param name="field">Header field.</param> /// <returns>Returns true if specified item exists in the collection, otherwise false.</returns> /// <exception cref="ArgumentNullException">Is raised when <b>field</b> is null reference.</exception> public bool Contains(MIME_h field) { if(field == null){ throw new ArgumentNullException("field"); } return m_pFields.Contains(field); }