Exemplo n.º 1
0
        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
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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);
     });
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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
                    {
                    }
                });
            }
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 9
0
        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);
                }
            }
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 12
0
        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;
                        }
                    }
                }
            }
        }