예제 #1
0
        /// <summary>
        /// Fires the WritingRequest event on the <paramref name="requestInfo"/> instance.
        /// </summary>
        /// <param name="requestHeaders">Request Headers</param>
        /// <param name="readableStream">A stream which can be read.</param>
        /// <param name="isBatchPart">Boolean flag indicating if this request is part of a batch request..</param>
        /// <param name="requestInfo">Request information to help fire events on the context.</param>
        /// <param name="requestMessage">The request message to apply the headers to.</param>
        /// <param name="ignoreAcceptHeader">If set to true the Accept header will be ignored.</param>
        /// <returns>A stream containing the content of the request/response.</returns>
        internal static Stream FireWritingRequest(HeaderCollection requestHeaders, Stream readableStream, bool isBatchPart, RequestInfo requestInfo, IODataRequestMessage requestMessage, bool ignoreAcceptHeader)
        {
            ReadingWritingHttpMessageEventArgs args = new ReadingWritingHttpMessageEventArgs(requestHeaders, readableStream, isBatchPart);
            var rewrittenArgs = requestInfo.FireWritingRequestEvent(args);

            WebUtil.ApplyHeadersToRequest(rewrittenArgs.HeaderCollection, requestMessage, true);
            return(rewrittenArgs.Content);
        }
예제 #2
0
        /// <summary>
        /// Fires the ReadingResponse event
        /// </summary>
        /// <param name="isBatchPart">Boolean flag indicating if this request is part of a batch request..</param>
        internal void FireReadingResponse(bool isBatchPart)
        {
            var readableStream = new MemoryStream();
            var requestStream  = this.GetStream();

            try
            {
                WebUtil.CopyStream(requestStream, readableStream, ref this.streamCopyBuffer);
                readableStream.Position = 0;
            }
            finally
            {
                requestStream.Dispose();
            }

            ReadingWritingHttpMessageEventArgs args = new ReadingWritingHttpMessageEventArgs(this.HeaderCollection, readableStream, isBatchPart);
            var rewrittenArgs = this.requestInfo.FireReadingResponseEvent(args);

            this.cachedResponseStream = rewrittenArgs.Content;
            ApplyHeadersToResponse(rewrittenArgs.HeaderCollection, this);
        }
예제 #3
0
 /// <summary>
 /// Fires the ReadingResponse event
 /// </summary>
 /// <param name="args">Arguments for raising this event.</param>
 /// <returns>The re-written arguments which includes the request stream and the request headers.</returns>
 internal ReadingWritingHttpMessageEventArgs FireReadingResponseEvent(ReadingWritingHttpMessageEventArgs args)
 {
     return(this.Context.FireReadingResponseEvent(args));
 }