public App() { this.InitializeComponent(); #if !DEBUG BugSense.BugSenseHandler.Instance.UnregisterUnobservedTaskExceptions(); BugSense.BugSenseHandler.Instance.InitAndStartSession(new ExceptionManager(this), "w8c8d6b5"); TaskScheduler.UnobservedTaskException += (sender, args) => { if (!args.Observed && args.Exception != null) { var exception = args.Exception.Flatten(); if (exception.InnerException != null && exception.InnerException.Message.IndexOf("fimpression", StringComparison.OrdinalIgnoreCase) < 0 && exception.InnerException.Message.IndexOf("No ad available", StringComparison.OrdinalIgnoreCase) < 0 && (exception.InnerException.InnerException == null || !exception.InnerException.InnerException.Message.Contains("fimpression"))) { var logExtra = new LimitedCrashExtraDataList() { { "level", "UnobservedTaskException" } }; BugSense.BugSenseHandler.Instance.LogException(exception.InnerException, logExtra); } args.SetObserved(); } }; #endif }
public static async Task <FriendViewModel> CreateFriendRequestOnServer(User user) { FriendViewModel addedFriend = null; Exception friendException = null; try { var friend = new Friend { UserId = user.UserId }; var friendsTable = App.MobileService.GetTable <Friend>(); await friendsTable.InsertAsync(friend); addedFriend = friend.AsViewModel(); } catch (Exception ex) { friendException = ex; } if (friendException != null) { var errorData = new LimitedCrashExtraDataList(); errorData.Add("Message", string.Format("Failed to create Friend relationship between {0} & {1}", App.MobileService.CurrentUser.UserId, user.UserId)); BugSenseHandler.Instance.UserIdentifier = App.MobileService.CurrentUser.UserId; await BugSenseHandler.Instance.LogExceptionAsync(friendException, errorData); } return(addedFriend); }
public static void HandleException(Exception exception) { Task.Run(() => { var extraData = new LimitedCrashExtraDataList { new CrashExtraData("username", Logging.Username), new CrashExtraData("tail-15", string.Join(Environment.NewLine, Logging.Tail(15))), }; BugSenseHandler.Instance.LogException(exception, extraData); }); }
private async Task <bool> LogExceptionInternalAsync(Exception ex, Tuple <string, string> extraData = null) { if (extraData == null) { return((await BugSenseHandler.Instance.LogExceptionAsync(ex)).ResultState == BugSenseResultState.OK); } var extraDataList = new LimitedCrashExtraDataList(); extraDataList.Add(extraData.Item1, extraData.Item2); return((await BugSenseHandler.Instance.LogExceptionAsync(ex, extraDataList)).ResultState == BugSenseResultState.OK); }
public async Task <string> UploadFileToTrackTimerFolder(StorageFile localFile, bool uploadOverWifi, bool overwrite = false) { LiveConnectSessionStatus connectStatus; if (client != null || (connectStatus = await Connect()) == LiveConnectSessionStatus.Connected) { client.BackgroundTransferPreferences = uploadOverWifi ? BackgroundTransferPreferences.AllowBattery : BackgroundTransferPreferences.AllowCellularAndBattery; Exception fileUploadException = null; try { // Copy file to transfers folder var sharedFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync("shared"); var transfersFolder = await sharedFolder.GetFolderAsync("transfers"); var fileToUpload = await localFile.CopyAsync(transfersFolder, localFile.Name, NameCollisionOption.ReplaceExisting); // Upload to SkyDrive await FindTrackTimerFolder(client); var localFileUri = new Uri(string.Format("/shared/transfers/{0}", fileToUpload.Name), UriKind.RelativeOrAbsolute); var result = await client.BackgroundUploadAsync(trackTimerFolderId, localFileUri, overwrite?OverwriteOption.Overwrite : OverwriteOption.Rename); // Delete local file once upload is complete if (!uploadOverWifi) { await fileToUpload.DeleteAsync(StorageDeleteOption.PermanentDelete); } // Return the OneDrive Id of the uploaded file return(result.Result != null && result.Result.ContainsKey("id") ? result.Result["id"].ToString() : string.Empty); } catch (Exception ex) { fileUploadException = ex; } if (fileUploadException != null) { var extraData = new LimitedCrashExtraDataList(); extraData.Add("Message", string.Format("Failed to upload file {0}", localFile.Name)); extraData.Add("UploadOverWifi", uploadOverWifi.ToString()); await BugSenseHandler.Instance.LogExceptionAsync(fileUploadException, extraData); } } return(string.Empty); }
public void Log(DateTime dateTime, LogLevel level, string context, Exception exception, string messageFormat, params object[] parameters) { if (level == LogLevel.Warning || level == LogLevel.Error) { string message; if (parameters.Length > 0) { message = string.Format(messageFormat, parameters); } else { message = messageFormat; } this.dispatcher.RunAsync( CoreDispatcherPriority.Low, () => { try { var aggregateException = exception as AggregateException; if (aggregateException != null) { exception = aggregateException.Flatten(); } var logExtra = new LimitedCrashExtraDataList() { { "level", level.ToString() }, { "context", context }, { "message", message }, { "hresult", exception.HResult.ToString("X", CultureInfo.InvariantCulture) }, { "exceptionType", exception.GetType().FullName } }; if (exception.InnerException != null) { logExtra.Add("innerExceptionType", exception.InnerException.GetType().FullName); logExtra.Add("innerException", exception.InnerException.Message); logExtra.Add("innerExceptionStackTrace", exception.InnerException.StackTrace); } BugSense.BugSenseHandler.Instance.LogException( exception, logExtra); } catch { } }); } }
private async void App_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { try { LimitedCrashExtraDataList extrasExtraDataList = new LimitedCrashExtraDataList { new CrashExtraData("Outlook India", e.ExceptionObject.Message), new CrashExtraData("Outlook India", e.ExceptionObject.StackTrace), }; BugSenseResponseResult sendResult = await BugSenseHandler.Instance.SendExceptionAsync(e.ExceptionObject, extrasExtraDataList); } catch (Exception) { } }
public static string ConvertToMoney(double number) { double wholePart; double decimalPart; SplitNumber(Math.Round(number, 2), out wholePart, out decimalPart); string result = "[Unable To Convert]"; try { if (((decimal)number * 100) % 10 == 0) { decimalPart *= 10; } StringBuilder sb = new StringBuilder(); if (wholePart > 0) { sb.Append(NumWords(wholePart)); } if (sb.Length > 0) { sb.Append(" and "); } if (decimalPart < 10) { sb.Append(0); } sb.Append((int)decimalPart).Append("/").Append("100"); result = sb.ToString(); } catch (Exception ex) { LimitedCrashExtraDataList extraDataList = new LimitedCrashExtraDataList { new CrashExtraData("Number", number.ToString()) }; BugSenseLogResult bsResult = BugSenseHandler.Instance.LogException(ex, extraDataList); Debug.WriteLine("Client Request: {0}", bsResult.ClientRequest); } return(result); }
private async void App_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { try { LimitedCrashExtraDataList extrasExtraDataList = new LimitedCrashExtraDataList { new CrashExtraData("The Hindu", e.ExceptionObject.Message), new CrashExtraData("The Hindu", e.ExceptionObject.StackTrace), }; BugSenseResponseResult sendResult = await BugSenseHandler.Instance.SendExceptionAsync(e.ExceptionObject, extrasExtraDataList); } catch (Exception exception) { if (Debugger.IsAttached) { Debug.WriteLine("App.xaml.cs:" + exception); } } }
private async Task ShowToastException(String title, string objectId, Exception exception) { ToastPrompt toast = new ToastPrompt() { Title = title, Message = exception.Message, TextOrientation = System.Windows.Controls.Orientation.Vertical, MillisecondsUntilHidden = 4000 }; //toast.ImageSource = new BitmapImage(new Uri("ApplicationIcon.png", UriKind.RelativeOrAbsolute)); //toast.Completed += toast_Completed; toast.Show(); LimitedCrashExtraDataList extrasExtraDataList = new LimitedCrashExtraDataList { new CrashExtraData("ObjectId", objectId) }; BugSenseLogResult result = await BugSenseHandler.Instance.LogExceptionAsync(exception, extrasExtraDataList); Debug.WriteLine("Client Request: {0}", result.ClientRequest); }
public static string ConvertToDecimal(double number) { if (number == 0) { return(numbers[0]); } double wholePart; double decimalPart; SplitNumber(number, out wholePart, out decimalPart); string result = "[Unable To Convert]"; try { StringBuilder sb = new StringBuilder(NumWords(wholePart)); if (sb.Length > 0) { sb.Append(" and "); } sb.Append(NumWords(decimalPart)).Append(" ").Append(decimals[decimalPart.ToString().Length]); result = sb.ToString(); } catch (Exception ex) { LimitedCrashExtraDataList extraDataList = new LimitedCrashExtraDataList { new CrashExtraData("Number", number.ToString()) }; BugSenseLogResult bsResult = BugSenseHandler.Instance.LogException(ex, extraDataList); Debug.WriteLine("Client Request: {0}", bsResult.ClientRequest); } return(result); }
private void chatLoop(ClientStyler clientStyler) { clientStyler.isConnecting = true; clientStyler.isTyping = false; isDying = false; //when error event is recieved, set isDying so you don't get loads of msgboxes clientStyler.Instance.Start(); Dispatcher.BeginInvoke(() => { foreach (ApplicationBarMenuItem abmi in ApplicationBar.MenuItems) { abmi.IsEnabled = false; } ApplicationBar.Buttons.Clear(); ApplicationBar.Mode = ApplicationBarMode.Minimized; updateTitleBar(); messageList = new ObservableCollection <Message>(); messageLLS.ItemsSource = messageList; }); while (true) { clientStyler.Instance.eventInQueueSignal.WaitOne(); lock (clientStyler.Instance.eventQueue) { while (true) { Event currentEvent; //is there a better way to empty the queue? try { currentEvent = clientStyler.Instance.eventQueue.Dequeue(); } catch { break; } //high level event handling switch (currentEvent.type) { case (EventType.Waiting): //sucessfully connected to omegle, waiting for stranger break; case (EventType.GotMessage): Dispatcher.BeginInvoke(() => { string msg = currentEvent.parameters[0]; clientStyler.isTyping = false; updateTitleBar(); if (chatMode == ChatMode.Intercept) { if (regexps != null) { foreach (Regexp regexp in regexps) { if (WordPage.IsValidRegex(regexp.Find)) { msg = System.Text.RegularExpressions.Regex.Replace(msg.ToLower(), regexp.Find, regexp.Replace); } } } foreach (ClientStyler cs in clientList) { if (cs != clientStyler) { cs.Instance.send(msg); Debug.WriteLine("Relayed message"); } } } if (!msg.Equals(currentEvent.parameters[0])) { msg = String.Format("\"{0}\"\n{1}:\n\"{2}\"", currentEvent.parameters[0], AppResources.ChangedText, msg); } generalMessageAdd(clientStyler, msg); }); break; case (EventType.Typing): Dispatcher.BeginInvoke(() => { clientStyler.isTyping = true; updateTitleBar(); if (chatMode == ChatMode.Intercept) { foreach (ClientStyler cs in clientList) { if (!(cs.Equals(clientStyler))) { cs.Instance.typing(); } } } }); break; case (EventType.StoppedTyping): Dispatcher.BeginInvoke(() => { clientStyler.isTyping = false; updateTitleBar(); if (chatMode == ChatMode.Intercept) { foreach (ClientStyler cs in clientList) { if (!(cs.Equals(clientStyler))) { cs.Instance.stoppedTyping(); } } } }); break; case (EventType.Connected): Dispatcher.BeginInvoke(() => { clientStyler.isConnecting = false; if (chatMode == ChatMode.AskQuestion) { generalMessageAdd(systemStyle, AppResources.StrangersConnectedText); } else { generalMessageAdd(systemStyle, String.Format(AppResources.ConnectedText, clientStyler.Number)); } updateTitleBar(); generalConnected(); }); break; case (EventType.StrangerDisconnected): Dispatcher.BeginInvoke(() => { clientStyler.Instance.disconnect(); //clientStyler.Color = new SolidColorBrush(Colors.Gray); checkAllDone(); generalMessageAdd(systemStyle, String.Format(AppResources.DisconnectedText, clientStyler.Number)); }); break; case (EventType.Question): Dispatcher.BeginInvoke(() => { generalMessageAdd(systemStyle, String.Format(AppResources.GotQuestionText, currentEvent.parameters[0])); }); break; case (EventType.RecaptchaRequired): Dispatcher.BeginInvoke(() => { pauseAll(); showRecaptchaBox(clientStyler, currentEvent.parameters[0]); }); break; case (EventType.RecaptchaRejected): Dispatcher.BeginInvoke(() => { pauseAll(); if (usingAutoSolver) { int autoSolveCredit = 0; if (appSettings.Contains("solvecredit")) { autoSolveCredit = (int)appSettings["solvecredit"]; } else { appSettings["solvecredit"] = autoSolveCredit; appSettings.Save(); } appSettings["solvecredit"] = autoSolveCredit + 1; appSettings.Save(); MessageBox.Show(AppResources.AutoSolveFailedText); usingAutoSolver = false; //report failed solve to DBC return; return; } showRecaptchaBox(clientStyler, currentEvent.parameters[0]); }); break; case (EventType.CommonLikes): Dispatcher.BeginInvoke(() => { string topics = ""; Boolean isFirst = true; foreach (string topic in currentEvent.parameters) { if (!isFirst) { topics += ","; isFirst = false; } topics += String.Format(" \"{0}\"", topic); } generalMessageAdd(systemStyle, String.Format(AppResources.YouBothLikeText, topics)); }); break; case (EventType.SpyMessage): Dispatcher.BeginInvoke(() => { int stranger = 0; int.TryParse(currentEvent.parameters[0].Substring(currentEvent.parameters[0].Length - 1), out stranger); string msg = currentEvent.parameters[1]; if (stranger == 1) { generalMessageAdd(((SpyStyler)clientStyler).stranger1Styler, msg); } else if (stranger == 2) { generalMessageAdd(((SpyStyler)clientStyler).stranger2Styler, msg); } else { //internal error Debug.WriteLine("Stranger number not 1 or 2!"); } }); break; case (EventType.SpyDisconnected): Dispatcher.BeginInvoke(() => { int stranger = 0; int.TryParse(currentEvent.parameters[0].Substring(currentEvent.parameters[0].Length - 1), out stranger); clientStyler.Instance.disconnect(); generalMessageAdd(systemStyle, String.Format(AppResources.DisconnectedText, stranger)); checkAllDone(); }); break; case (EventType.Error): Dispatcher.BeginInvoke(() => { if ((((ErrorEvent)currentEvent).exception is System.Net.Http.HttpRequestException) && (((System.Net.Http.HttpRequestException)(((ErrorEvent)currentEvent).exception)).InnerException is WebException) && (((WebException)((System.Net.Http.HttpRequestException)(((ErrorEvent)currentEvent).exception)).InnerException).Status == WebExceptionStatus.RequestCanceled)) { Debug.WriteLine("threw out requestcancelled error"); return; //no big deal, just try again on next eventthread trigger } clientStyler.Instance.Stop(); if (isDying) { return; } isDying = true; checkAllDone(); MessageBox.Show(AppResources.ConnectionError); LimitedCrashExtraDataList extrasExtraDataList = new LimitedCrashExtraDataList { new CrashExtraData("Omeddle", "Generic ErrorEvent") }; #if DEBUG throw ((ErrorEvent)currentEvent).exception; #else BugSenseLogResult sendResult = BugSense.BugSenseHandler.Instance.LogException(((ErrorEvent)currentEvent).exception); #endif }); break; } } } } }