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}"); }
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(); }
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); }
public virtual async Task <ExceptionData> SendOne(ExceptionData exceptionData) { await Task.Run(() => { }); return(exceptionData); }