private void SetupMediaResourceRequest(ODataRequestMessageWrapper mediaResourceRequest, DataServiceSaveStream saveStream, string etag) { IEnumerable <string> keys; base.mediaResourceRequestStream = saveStream.Stream; WebUtil.ApplyHeadersToRequest(saveStream.Args.Headers, mediaResourceRequest, true); Dictionary <string, string> headers = saveStream.Args.Headers; if (headers.ContainsKey("Accept")) { keys = new List <string>(headers.Count - 1); foreach (string str in headers.Keys) { if (str != "Accept") { ((List <string>)keys).Add(str); } } } else { keys = headers.Keys; } mediaResourceRequest.AddHeadersToReset(keys); if (etag != null) { mediaResourceRequest.SetHeader("If-Match", etag); mediaResourceRequest.AddHeadersToReset("If-Match"); } }
/// <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); }