private static bool areConflictsFoundAtMerge(MergeRequestEditorException ex) { if (ex.InnerException != null && (ex.InnerException is GitLabRequestException)) { GitLabRequestException rx = ex.InnerException as GitLabRequestException; if (rx.InnerException is System.Net.WebException wx && wx.Response != null) { System.Net.HttpWebResponse response = wx.Response as System.Net.HttpWebResponse; return(response.StatusCode == System.Net.HttpStatusCode.NotAcceptable); } } return(false); }
private static void reportErrorToUser(Exception ex) { if (ex is MergeRequestCreatorCancelledException || ex is MergeRequestEditorCancelledException) { Trace.TraceWarning("[MergeRequestEditHelper] Cancelled operation"); return; } void showDialogAndLogError(string message = "Unknown") { string defaultMessage = "GitLab could not create a merge request with the given parameters. Reason: "; MessageBox.Show(defaultMessage + message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Trace.TraceError("[MergeRequestEditHelper] " + defaultMessage + message); }; if (ex.InnerException != null && (ex.InnerException is GitLabRequestException)) { GitLabRequestException rx = ex.InnerException as GitLabRequestException; if (rx.InnerException is System.Net.WebException wx && wx.Response != null) { System.Net.HttpWebResponse response = wx.Response as System.Net.HttpWebResponse; const int unprocessableEntity = 422; switch (response.StatusCode) { case System.Net.HttpStatusCode.Conflict: showDialogAndLogError("Another open merge request already exists for this source branch"); return; case System.Net.HttpStatusCode.Forbidden: showDialogAndLogError("Access denied"); return; case System.Net.HttpStatusCode.BadRequest: showDialogAndLogError("Bad parameters"); return; case (System.Net.HttpStatusCode)unprocessableEntity: showDialogAndLogError("You can't use same project/branch for source and target"); return; } } } showDialogAndLogError(); }
private void reportErrorToUser(MergeRequestEditorException ex) { if (ex is MergeRequestEditorCancelledException) { return; } void showDialogAndLogError(string message = "Unknown") { string defaultMessage = "GitLab could not perform a requested operation. Reason: "; MessageBox.Show(defaultMessage + message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); traceError(defaultMessage + message); }; if (ex.InnerException != null && (ex.InnerException is GitLabRequestException)) { GitLabRequestException rx = ex.InnerException as GitLabRequestException; if (rx.InnerException is System.Net.WebException wx && wx.Response != null) { System.Net.HttpWebResponse response = wx.Response as System.Net.HttpWebResponse; switch (response.StatusCode) { case System.Net.HttpStatusCode.MethodNotAllowed: showDialogAndLogError("Merge request in its current state cannot be merged."); return; case System.Net.HttpStatusCode.Unauthorized: case System.Net.HttpStatusCode.Forbidden: showDialogAndLogError("Access denied or source branch does not exist"); return; case System.Net.HttpStatusCode.BadRequest: showDialogAndLogError("Bad parameters"); return; } } } showDialogAndLogError(); }