private ShimWebResponse CallDispatcher(InterceptDispatcher dispatcher, WebRequest request, MemoryStream requestStream) { ShimWebResponse response = null; _lastUsedDispatcher = dispatcher; Stopwatch timer = new Stopwatch(); timer.Start(); try { using (var context = new ShimCallContext(request, requestStream, _debugLogger)) { if (StringComparer.OrdinalIgnoreCase.Equals(request.Method, "POST") && requestStream != null) { // convert the batched call into a regular url context.UnBatch(); } Log(String.Format(CultureInfo.InvariantCulture, "[V3 RUN] {0}", request.RequestUri.AbsoluteUri), ConsoleColor.Yellow); var t = Task.Run(async() => await dispatcher.Invoke(context)); t.Wait(); var stream = context.Data; timer.Stop(); Log(String.Format(CultureInfo.InvariantCulture, "[V3 END] {0}ms", timer.ElapsedMilliseconds), ConsoleColor.Yellow); response = new ShimWebResponse(stream, request.RequestUri, context.ResponseContentType, context.StatusCode); } } catch (AggregateException ex) { // unwrap the exception to get a useful error var innerException = ExceptionUtility.Unwrap(ex); // TODO: throw a DataServiceQueryException with the correct xml throw innerException; } return(response); }
public ShimResponseMessage(WebResponse response) { if (response == null) { throw new ArgumentNullException("response"); } _statusCode = 200; ShimWebResponse shimResponse = response as ShimWebResponse; if (shimResponse != null) { _statusCode = (int)shimResponse.StatusCode; } WebResponse = response; }
private ShimWebResponse CallDispatcher(InterceptDispatcher dispatcher, WebRequest request) { ShimWebResponse response = null; Stopwatch timer = new Stopwatch(); timer.Start(); try { using (var context = new ShimCallContext(request, _debugLogger)) { Log(String.Format(CultureInfo.InvariantCulture, "[V3 RUN] {0}", request.RequestUri.AbsoluteUri), ConsoleColor.Yellow); var t = Task.Run(async() => await dispatcher.Invoke(context)); t.Wait(); var stream = context.Data; timer.Stop(); Log(String.Format(CultureInfo.InvariantCulture, "[V3 END] {0}ms", timer.ElapsedMilliseconds), ConsoleColor.Yellow); response = new ShimWebResponse(stream, request.RequestUri, context.ResponseContentType); } } catch (AggregateException ex) { // unwrap the exception to get a useful error var innerException = ExceptionUtility.Unwrap(ex); // TODO: throw a DataServiceQueryException with the correct xml throw innerException; } return(response); }
private ShimWebResponse CallDispatcher(InterceptDispatcher dispatcher, WebRequest request, MemoryStream requestStream) { ShimWebResponse response = null; _lastUsedDispatcher = dispatcher; Stopwatch timer = new Stopwatch(); timer.Start(); try { using (var context = new ShimCallContext(request, requestStream, _debugLogger)) { if (StringComparer.OrdinalIgnoreCase.Equals(request.Method, "POST") && requestStream != null) { // convert the batched call into a regular url context.UnBatch(); } Log(String.Format(CultureInfo.InvariantCulture, "[V3 RUN] {0}", request.RequestUri.AbsoluteUri), ConsoleColor.Yellow); var t = Task.Run(async () => await dispatcher.Invoke(context)); t.Wait(); var stream = context.Data; timer.Stop(); Log(String.Format(CultureInfo.InvariantCulture, "[V3 END] {0}ms", timer.ElapsedMilliseconds), ConsoleColor.Yellow); response = new ShimWebResponse(stream, request.RequestUri, context.ResponseContentType, context.StatusCode); } } catch (AggregateException ex) { // unwrap the exception to get a useful error var innerException = ExceptionUtility.Unwrap(ex); // TODO: throw a DataServiceQueryException with the correct xml throw innerException; } return response; }