protected void HandleResponse(Response r, ExecuteWebRequestEventArgs args) { Application.Current.Dispatcher.Invoke(new Action(() => { IsExecutingRequest = false; StatusLine = string.Format("{0} {1}", (int)r.StatusCode, r.StatusCode.ToString()); PreviousStatusLine = null; if (args.OnSuccess != null) { args.OnSuccess(r); } if (ContentRender is IDisposable) { ((IDisposable)ContentRender).Dispose(); } // In case of "201 Created" with Location header: GET new location (but keep same success/failure handlers) if (r.CreatedLocation != null) { Request req = r.CreatedLocation.Follow(r.Session).Method("GET"); ExecuteWebRequestEventArgs args2 = new ExecuteWebRequestEventArgs(r.Session, req) { OnSuccess = args.OnSuccess, OnFailure = args.OnFailure }; ExecuteWebRequest(args2); return; } RenderResponse(r); })); }
protected void ExecuteWebRequest(ExecuteWebRequestEventArgs args) { IsExecutingRequest = true; if (CurrentRequest != null) { CurrentRequest.CancelAsync(); CurrentRequest = null; } try { if (SettingsReader.Get(() => Properties.Settings.Default.PreferMinimalResponseSize, false)) { args.Request.Header("Prefer", "return=minimal"); } if (SettingsReader.Get(() => Properties.Settings.Default.UseMethodOverride, false) && args.Session.RequestInterceptors.Find("MethodOverrideInterceptor") == null) { args.Session.RequestInterceptors.Add("MethodOverrideInterceptor", new MethodOverrideInterceptor()); } args.Request .Accept("application/vnd.mason+json", 1) .Accept("*/*", 0.5) .Async() .OnError(r => HandleResponseError(r, args)) .OnComplete(() => CurrentRequest = null) .Submit(r => HandleResponse(r, args)); CurrentRequest = args.Request; } catch (Exception ex) { IsExecutingRequest = false; Logger.Error(ex); MessageBox.Show(GetOwnerWindow(), ex.Message, "Failed to setup request"); } }
protected void HandleResponseError(AsyncError err, ExecuteWebRequestEventArgs args) { Logger.Error("Error in response handling", err.Exception); Application.Current.Dispatcher.Invoke(new Action(() => { IsExecutingRequest = false; if (err.Response.WebResponse != null) { StatusLine = string.Format("{0} {1}", (int)err.Response.StatusCode, err.Response.StatusCode.ToString()); } else if (err.Exception != null) { StatusLine = err.Exception.Message; } else { StatusLine = "Unknown error"; } PreviousStatusLine = null; if (args.OnFailure != null) { args.OnFailure(err.Response); } RenderResponse(err.Response); MessageBox.Show(GetOwnerWindow(), err.Exception.Message); if (err.Response != null) { TryHandleAuthorization(err.Response); } })); }
protected void HandleResponseError(AsyncError err, ExecuteWebRequestEventArgs args) { Logger.Error("Error in response handling", err.Exception); Application.Current.Dispatcher.Invoke(new Action(() => { IsExecutingRequest = false; if (err.Response.WebResponse != null) StatusLine = string.Format("{0} {1}", (int)err.Response.StatusCode, err.Response.StatusCode.ToString()); else if (err.Exception != null) StatusLine = err.Exception.Message; else StatusLine = "Unknown error"; PreviousStatusLine = null; if (args.OnFailure != null) args.OnFailure(err.Response); RenderResponse(err.Response); MessageBox.Show(GetOwnerWindow(), err.Exception.Message); if (err.Response != null) TryHandleAuthorization(err.Response); })); }
protected void HandleResponse(Response r, ExecuteWebRequestEventArgs args) { Application.Current.Dispatcher.Invoke(new Action(() => { IsExecutingRequest = false; StatusLine = string.Format("{0} {1}", (int)r.StatusCode, r.StatusCode.ToString()); PreviousStatusLine = null; if (args.OnSuccess != null) args.OnSuccess(r); if (ContentRender is IDisposable) ((IDisposable)ContentRender).Dispose(); // In case of "201 Created" with Location header: GET new location (but keep same success/failure handlers) if (r.CreatedLocation != null) { Request req = r.CreatedLocation.Follow(r.Session).Method("GET"); ExecuteWebRequestEventArgs args2 = new ExecuteWebRequestEventArgs(r.Session, req) { OnSuccess = args.OnSuccess, OnFailure = args.OnFailure }; ExecuteWebRequest(args2); return; } RenderResponse(r); })); }
protected void ExecuteWebRequest(ExecuteWebRequestEventArgs args) { IsExecutingRequest = true; if (CurrentRequest != null) { CurrentRequest.CancelAsync(); CurrentRequest = null; } try { if (SettingsReader.Get(() => Properties.Settings.Default.PreferMinimalResponseSize, false)) args.Request.Header("Prefer", "return=minimal"); if (SettingsReader.Get(() => Properties.Settings.Default.UseMethodOverride,false) && args.Session.RequestInterceptors.Find("MethodOverrideInterceptor") == null) args.Session.RequestInterceptors.Add("MethodOverrideInterceptor", new MethodOverrideInterceptor()); args.Request .Accept("application/vnd.mason+json", 1) .Accept("*/*", 0.5) .Async() .OnError(r => HandleResponseError(r, args)) .OnComplete(() => CurrentRequest = null) .Submit(r => HandleResponse(r, args)); CurrentRequest = args.Request; } catch (Exception ex) { IsExecutingRequest = false; Logger.Error(ex); MessageBox.Show(GetOwnerWindow(), ex.Message, "Failed to setup request"); } }