private static async Task <InputFormatterResult> ReadRequestBody(string sampleJson, ModelStateDictionary modelStateDictionary) { var formatter = new FhirJsonInputFormatter(new FhirJsonParser(), ArrayPool <char> .Shared); var metaData = new DefaultModelMetadata(new EmptyModelMetadataProvider(), new DefaultCompositeMetadataDetailsProvider(new IMetadataDetailsProvider[0]), new DefaultMetadataDetails(ModelMetadataIdentity.ForType(typeof(Observation)), ModelAttributes.GetAttributesForType(typeof(Observation)))); var context = new InputFormatterContext( new DefaultHttpContext(), KnownActionParameterNames.Resource, modelStateDictionary, metaData, (stream, encoding) => new StreamReader(new MemoryStream(encoding.GetBytes(sampleJson)))); return(await formatter.ReadRequestBodyAsync(context)); }
private bool CanRead(Type modelType, string contentType) { var formatter = new FhirJsonInputFormatter(new FhirJsonParser(), ArrayPool <char> .Shared); var modelMetadata = Substitute.For <ModelMetadata>(ModelMetadataIdentity.ForType(modelType)); var defaultHttpContext = new DefaultHttpContext(); defaultHttpContext.Request.ContentType = contentType; var result = formatter.CanRead( new InputFormatterContext( defaultHttpContext, "model", new ModelStateDictionary(), modelMetadata, Substitute.For <Func <Stream, Encoding, TextReader> >())); return(result); }