/// <summary> /// Finds an IDataReader by content-type header /// </summary> /// <param name="contentTypeHeader"></param> /// <returns></returns> public IDataReader Find(string contentTypeHeader) { string type = DataWriterProvider.ParseMediaType(contentTypeHeader); if (this.ReadersByMime.ContainsKey(type)) { return(ReadersByMime[type]); } return(null); }
/// <summary> /// Parses HTTP headers for Media-Types /// </summary> /// <param name="accept">HTTP Accept header</param> /// <param name="contentType">HTTP Content-Type header</param> /// <returns>sequence of Media-Types</returns> /// <remarks> /// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html /// </remarks> public static IEnumerable <string> ParseHeaders(string accept, string contentType) { string mime; // check for a matching accept type foreach (string type in DataWriterProvider.SplitTrim(accept, ',')) { mime = DataWriterProvider.ParseMediaType(type); if (!String.IsNullOrEmpty(mime)) { yield return(mime); } } // fallback on content-type mime = DataWriterProvider.ParseMediaType(contentType); if (!String.IsNullOrEmpty(mime)) { yield return(mime); } }