예제 #1
0
        string GenerateJson(ExceptionData data)
        {
            string client = CreateJsonGroup("client", CreateJsonValue("name", _appName), CreateJsonValue("version", data.AppVersion));

            string appEnvironment = CreateJsonGroup("application_environment", CreateJsonValue("phone", _phone), CreateJsonValue("appver", data.AppVersion), CreateJsonValue("appname", _appName), CreateJsonValue("osver", data.OsVersion), CreateJsonValue("uid", _uid),
                                                    CreateJsonValue("user_agent", "Sitana.Framework.Diagnostics.CrashReporter"));

            string exception = CreateJsonGroup("exception", CreateJsonValue("message", data.Message), CreateJsonValue("where", data.Source), CreateJsonValue("klass", data.Type), CreateJsonValue("backtrace", data.StackTrace));


            return("{\n" + client + ",\n" + exception + ",\n" + appEnvironment + "\n}");
        }
예제 #2
0
        async void Send()
        {
            await _service.Start();

            while (_unhandledExceptions.Count > 0)
            {
                ExceptionData data = await _service.SendOne(_unhandledExceptions[0]);

                if (data == null)
                {
                    _unhandledExceptions.RemoveAt(0);
                }
                else
                {
                    break;
                }
            }

            Serialize();
        }
예제 #3
0
        public override async Task <ExceptionData> SendOne(ExceptionData exceptionData)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mint.splunk.com/api/errors");

            request.Headers.Add("X-Splunk-Mint-Auth-Token", _apiToken);
            request.Headers.Add("X-BugSense-Api-Key", _apiToken);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method      = "POST";

            string data          = GenerateJson(exceptionData);
            string requestString = "data=" + HttpUtility.UrlEncode(data);

            byte[] requestData = Encoding.UTF8.GetBytes(requestString);

            try
            {
                var requestStream = await request.GetRequestStreamAsync();

                await requestStream.WriteAsync(requestData, 0, requestData.Length);

                requestStream.Close();

                var response = await request.GetResponseAsync();

                StreamReader reader         = new StreamReader(response.GetResponseStream());
                string       responseString = await reader.ReadToEndAsync();

                response.Close();
            }
            catch
            {
                return(exceptionData);
            }

            return(null);
        }
예제 #4
0
        public virtual async Task <ExceptionData> SendOne(ExceptionData exceptionData)
        {
            await Task.Run(() => { });

            return(exceptionData);
        }