/// <summary> /// Asynchronously creates an instance of the input context for this format. /// </summary> /// <param name="readerPayloadKind">The <see cref="ODataPayloadKind"/> to read.</param> /// <param name="message">The message to use.</param> /// <param name="contentType">The content type of the message to read.</param> /// <param name="encoding">The encoding to use.</param> /// <param name="messageReaderSettings">Configuration settings of the OData reader.</param> /// <param name="version">The OData protocol version to be used for reading the payload.</param> /// <param name="readingResponse">true if reading a response message; otherwise false.</param> /// <param name="model">The model to use.</param> /// <param name="urlResolver">The optional URL resolver to perform custom URL resolution for URLs read from the payload.</param> /// <param name="payloadKindDetectionFormatState">Format specific state stored during payload kind detection /// using the <see cref="ODataPayloadKindDetectionInfo.SetPayloadKindDetectionFormatState"/>.</param> /// <returns>Task which when completed returned the newly created input context.</returns> internal override Task <ODataInputContext> CreateInputContextAsync( ODataPayloadKind readerPayloadKind, ODataMessage message, MediaType contentType, Encoding encoding, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, bool readingResponse, IEdmModel model, IODataUrlResolver urlResolver, object payloadKindDetectionFormatState) { DebugUtils.CheckNoExternalCallers(); ExceptionUtils.CheckArgumentNotNull(message, "message"); ExceptionUtils.CheckArgumentNotNull(messageReaderSettings, "messageReaderSettings"); return(message.GetStreamAsync() .FollowOnSuccessWith( (streamTask) => (ODataInputContext) new ODataRawInputContext( this, streamTask.Result, encoding, messageReaderSettings, version, readingResponse, /*synchronous*/ false, model, urlResolver, readerPayloadKind))); }
/// <summary> /// Asynchronously create RAW output context. /// </summary> /// <param name="format">The format to create the outpu context for.</param> /// <param name="message">The message to use.</param> /// <param name="encoding">The encoding to use.</param> /// <param name="messageWriterSettings">Configuration settings of the OData writer.</param> /// <param name="writingResponse">true if writing a response message; otherwise false.</param> /// <param name="model">The model to use.</param> /// <param name="urlResolver">The optional URL resolver to perform custom URL resolution for URLs written to the payload.</param> /// <returns>Task which when completed returns the newly created output context.</returns> internal static Task <ODataOutputContext> CreateAsync( ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageWriterSettings messageWriterSettings, bool writingResponse, IEdmModel model, IODataUrlResolver urlResolver) { DebugUtils.CheckNoExternalCallers(); Debug.Assert(format == ODataFormat.RawValue || format == ODataFormat.Batch, "This method only supports the RAW value or batch format."); Debug.Assert(message != null, "message != null"); Debug.Assert(messageWriterSettings != null, "messageWriterSettings != null"); return(message.GetStreamAsync() .FollowOnSuccessWith( (streamTask) => (ODataOutputContext) new ODataRawOutputContext( format, streamTask.Result, encoding, messageWriterSettings, writingResponse, false, model, urlResolver))); }
/// <summary> /// Creates an instance of the output context for this format. /// </summary> /// <param name="message">The message to use.</param> /// <param name="mediaType">The specific media type being written.</param> /// <param name="encoding">The encoding to use.</param> /// <param name="messageWriterSettings">Configuration settings of the OData writer.</param> /// <param name="writingResponse">true if writing a response message; otherwise false.</param> /// <param name="model">The model to use.</param> /// <param name="urlResolver">The optional URL resolver to perform custom URL resolution for URLs written to the payload.</param> /// <returns>Task which represents the pending create operation.</returns> internal override Task <ODataOutputContext> CreateOutputContextAsync( ODataMessage message, MediaType mediaType, Encoding encoding, ODataMessageWriterSettings messageWriterSettings, bool writingResponse, IEdmModel model, IODataUrlResolver urlResolver) { DebugUtils.CheckNoExternalCallers(); ExceptionUtils.CheckArgumentNotNull(message, "message"); ExceptionUtils.CheckArgumentNotNull(messageWriterSettings, "messageWriterSettings"); return(message.GetStreamAsync() .FollowOnSuccessWith( (streamTask) => (ODataOutputContext) new ODataRawOutputContext( this, streamTask.Result, encoding, messageWriterSettings, writingResponse, /*synchronous*/ false, model, urlResolver))); }
/// <summary> /// Asynchronously create RAW input context. /// </summary> /// <param name="format">The format for the input context.</param> /// <param name="message">The message to use.</param> /// <param name="encoding">The encoding to use.</param> /// <param name="messageReaderSettings">Configuration settings of the OData reader.</param> /// <param name="version">The OData protocol version to be used for reading the payload.</param> /// <param name="readingResponse">true if reading a response message; otherwise false.</param> /// <param name="model">The model to use.</param> /// <param name="urlResolver">The optional URL resolver to perform custom URL resolution for URLs read from the payload.</param> /// <param name="readerPayloadKind">The <see cref="ODataPayloadKind"/> to read.</param> /// <returns>Task which when completed returns the newly create input context.</returns> internal static Task <ODataInputContext> CreateAsync( ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, bool readingResponse, IEdmModel model, IODataUrlResolver urlResolver, ODataPayloadKind readerPayloadKind) { DebugUtils.CheckNoExternalCallers(); Debug.Assert(format == ODataFormat.RawValue || format == ODataFormat.Batch, "This method only supports the RAW value or batch format."); Debug.Assert(message != null, "message != null"); Debug.Assert(messageReaderSettings != null, "messageReaderSettings != null"); Debug.Assert(readerPayloadKind != ODataPayloadKind.Unsupported, "readerPayloadKind != ODataPayloadKind.Unsupported"); // TODO: Note that this will buffer the entire input. We need this for batch and for raw values since they // both use TextReader - verify that this is really what we want to do. return(message.GetStreamAsync() .FollowOnSuccessWith( (streamTask) => (ODataInputContext) new ODataRawInputContext( format, streamTask.Result, encoding, messageReaderSettings, version, readingResponse, false, model, urlResolver, readerPayloadKind))); }
internal static Task<ODataInputContext> CreateAsync(ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, bool readingResponse, IEdmModel model, IODataUrlResolver urlResolver, ODataPayloadKind readerPayloadKind) { return message.GetStreamAsync().FollowOnSuccessWith<System.IO.Stream, ODataInputContext>(streamTask => new ODataRawInputContext(format, streamTask.Result, encoding, messageReaderSettings, version, readingResponse, false, model, urlResolver, readerPayloadKind)); }
/// <summary> /// Asynchronously create RAW input context. /// </summary> /// <param name="format">The format for the input context.</param> /// <param name="message">The message to use.</param> /// <param name="encoding">The encoding to use.</param> /// <param name="messageReaderSettings">Configuration settings of the OData reader.</param> /// <param name="version">The OData protocol version to be used for reading the payload.</param> /// <param name="readingResponse">true if reading a response message; otherwise false.</param> /// <param name="model">The model to use.</param> /// <param name="urlResolver">The optional URL resolver to perform custom URL resolution for URLs read from the payload.</param> /// <param name="readerPayloadKind">The <see cref="ODataPayloadKind"/> to read.</param> /// <returns>Task which when completed returns the newly create input context.</returns> internal static Task<ODataInputContext> CreateAsync( ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, bool readingResponse, IEdmModel model, IODataUrlResolver urlResolver, ODataPayloadKind readerPayloadKind) { DebugUtils.CheckNoExternalCallers(); Debug.Assert(format == ODataFormat.RawValue || format == ODataFormat.Batch, "This method only supports the RAW value or batch format."); Debug.Assert(message != null, "message != null"); Debug.Assert(messageReaderSettings != null, "messageReaderSettings != null"); Debug.Assert(readerPayloadKind != ODataPayloadKind.Unsupported, "readerPayloadKind != ODataPayloadKind.Unsupported"); // TODO: Note that this will buffer the entire input. We need this for batch and for raw values since they // both use TextReader - verify that this is really what we want to do. return message.GetStreamAsync() .FollowOnSuccessWith( (streamTask) => (ODataInputContext)new ODataRawInputContext( format, streamTask.Result, encoding, messageReaderSettings, version, readingResponse, false, model, urlResolver, readerPayloadKind)); }
/// <summary> /// Asynchronously create ATOM input context. /// </summary> /// <param name="format">The format for the input context.</param> /// <param name="message">The message to use.</param> /// <param name="encoding">The encoding to use.</param> /// <param name="messageReaderSettings">Configuration settings of the OData reader.</param> /// <param name="version">The OData protocol version to be used for reading the payload.</param> /// <param name="readingResponse">true if reading a response message; otherwise false.</param> /// <param name="model">The model to use.</param> /// <param name="urlResolver">The optional URL resolver to perform custom URL resolution for URLs read from the payload.</param> /// <returns>Task which when completed returns the newly create input context.</returns> internal static Task<ODataInputContext> CreateAsync( ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, bool readingResponse, IEdmModel model, IODataUrlResolver urlResolver) { DebugUtils.CheckNoExternalCallers(); Debug.Assert(message != null, "message != null"); Debug.Assert(messageReaderSettings != null, "messageReaderSettings != null"); return message.GetStreamAsync() .FollowOnSuccessWith( (streamTask) => (ODataInputContext)new ODataAtomInputContext( format, streamTask.Result, encoding, messageReaderSettings, version, readingResponse, false, model, urlResolver)); }
internal static Task<ODataOutputContext> CreateAsync(ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageWriterSettings messageWriterSettings, bool writingResponse, IEdmModel model, IODataUrlResolver urlResolver) { return message.GetStreamAsync().FollowOnSuccessWith<Stream, ODataOutputContext>(streamTask => new ODataRawOutputContext(format, streamTask.Result, encoding, messageWriterSettings, writingResponse, false, model, urlResolver)); }
/// <summary> /// Asynchronously create RAW output context. /// </summary> /// <param name="format">The format to create the outpu context for.</param> /// <param name="message">The message to use.</param> /// <param name="encoding">The encoding to use.</param> /// <param name="messageWriterSettings">Configuration settings of the OData writer.</param> /// <param name="writingResponse">true if writing a response message; otherwise false.</param> /// <param name="model">The model to use.</param> /// <param name="urlResolver">The optional URL resolver to perform custom URL resolution for URLs written to the payload.</param> /// <returns>Task which when completed returns the newly created output context.</returns> internal static Task<ODataOutputContext> CreateAsync( ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageWriterSettings messageWriterSettings, bool writingResponse, IEdmModel model, IODataUrlResolver urlResolver) { DebugUtils.CheckNoExternalCallers(); Debug.Assert(format == ODataFormat.RawValue || format == ODataFormat.Batch, "This method only supports the RAW value or batch format."); Debug.Assert(message != null, "message != null"); Debug.Assert(messageWriterSettings != null, "messageWriterSettings != null"); return message.GetStreamAsync() .FollowOnSuccessWith( (streamTask) => (ODataOutputContext)new ODataRawOutputContext( format, streamTask.Result, encoding, messageWriterSettings, writingResponse, false, model, urlResolver)); }
internal static Task <ODataOutputContext> CreateAsync(ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageWriterSettings messageWriterSettings, bool writingResponse, IEdmModel model, IODataUrlResolver urlResolver) { return(message.GetStreamAsync().FollowOnSuccessWith <Stream, ODataOutputContext>(streamTask => new ODataRawOutputContext(format, streamTask.Result, encoding, messageWriterSettings, writingResponse, false, model, urlResolver))); }
internal static Task <ODataInputContext> CreateAsync(ODataFormat format, ODataMessage message, Encoding encoding, ODataMessageReaderSettings messageReaderSettings, ODataVersion version, bool readingResponse, IEdmModel model, IODataUrlResolver urlResolver, ODataPayloadKind readerPayloadKind) { return(message.GetStreamAsync().FollowOnSuccessWith <System.IO.Stream, ODataInputContext>(streamTask => new ODataRawInputContext(format, streamTask.Result, encoding, messageReaderSettings, version, readingResponse, false, model, urlResolver, readerPayloadKind))); }