private System.Net.Http.Formatting.MediaTypeFormatter theFormatter <T>(T value, string mediaType) { System.Net.Http.Formatting.MediaTypeFormatter formatter = null; if (mediaType == OSLC4Net.Core.Model.OslcMediaType.APPLICATION_JSON) { formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter(); } else if (mediaType == OSLC4Net.Core.Model.OslcMediaType.APPLICATION_RDF_XML) { ISet <System.Net.Http.Formatting.MediaTypeFormatter> formatters = new HashSet <System.Net.Http.Formatting.MediaTypeFormatter>(); formatters.Add(new RdfXmlMediaTypeFormatter()); formatter = new System.Net.Http.Formatting.MediaTypeFormatterCollection(formatters).FindWriter(value.GetType(), new System.Net.Http.Headers.MediaTypeHeaderValue(mediaType)); } return(formatter); }
public IEnumerable <T> DeserializeCollection <T>( string strRDF, IEnumerable <T> value, string contentType, string descriptionAbout = null, string responseInfoAbout = null, string nextPageAbout = null) where T : class { if (String.IsNullOrEmpty(descriptionAbout)) { descriptionAbout = "http://com/undefined/descriptionAbout"; } if (String.IsNullOrEmpty(responseInfoAbout)) { responseInfoAbout = "http://com/undefined/responseInfoAbout"; } if (String.IsNullOrEmpty(responseInfoAbout)) { responseInfoAbout = "http://com/undefined/nextPageAbout"; } Stream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); HttpContent content = new StreamContent(stream); System.Net.Http.Formatting.MediaTypeFormatter formatter = null; if (contentType == OslcMediaType.APPLICATION_JSON) { JsonValue json = OSLC4Net.Core.JsonProvider.JsonHelper.CreateJson( descriptionAbout, responseInfoAbout, nextPageAbout, null, value, null); formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter(json, false); content.Headers.ContentType = OslcMediaType.APPLICATION_JSON_TYPE; } else if (contentType == OslcMediaType.APPLICATION_RDF_XML) { IGraph rdfGraph = DotNetRdfHelper.CreateDotNetRdfGraph( descriptionAbout, responseInfoAbout, nextPageAbout, null, value, null); formatter = new RdfXmlMediaTypeFormatter(rdfGraph); content.Headers.ContentType = OslcMediaType.APPLICATION_RDF_XML_TYPE; } if (formatter == null) { return(null); } writer.Write(strRDF); writer.Flush(); stream.Position = 0; return(formatter.ReadFromStreamAsync(typeof(List <T>), stream, content, null).Result as IEnumerable <T>); }