public string StandardResponse(HttpApplication application) { IDictionary<string, object> data; if (!application.TryGetData(out data)) return "Error: No Glimpse Data Found"; var json = JsSerializer.Serialize(data); //serialize data to Json json = Sanitizer.Sanitize(json); //if ajax request, render glimpse data to headers if (application.IsAjax()) { application.Response.AddHeader(GlimpseConstants.HttpHeader, json); } else { var html = string.Format( @"<script type='text/javascript' id='glimpseData'>var glimpse = {0};</script>", json); html += @"<script type='text/javascript' id='glimpseClient' src='/Glimpse/glimpseClient.js'></script>"; html += @"<!--<img src='/Glimpse/glimpseSprite.png'/>-->"; application.Response.Write(html); } return json; }
private void Persist(string json, HttpApplication ctx, Guid requestId) { if (Configuration.SaveRequestCount <= 0) return; var store = ctx.Application; //clientName, longtime, url, var queue = store[GlimpseConstants.JsonQueue] as Queue<GlimpseRequestMetadata>; if (queue == null) store[GlimpseConstants.JsonQueue] = queue = new Queue<GlimpseRequestMetadata>(Configuration.SaveRequestCount); if (queue.Count == Configuration.SaveRequestCount) queue.Dequeue(); var browser = ctx.Request.Browser; queue.Enqueue(new GlimpseRequestMetadata { Browser = string.Format("{0} {1}", browser.Browser, browser.Version), ClientName = ctx.GetClientName(), Json = json, RequestTime = DateTime.Now.ToLongTimeString(), RequestId = requestId, IsAjax = ctx.IsAjax().ToString(), Url = ctx.Request.RawUrl, Method = ctx.Request.HttpMethod }); }
public string StandardResponse(HttpApplication application, Guid requestId) { IDictionary<string, object> data; if (!application.TryGetData(out data)) return "Error: No Glimpse Data Found"; var sb = new StringBuilder("{"); foreach (var item in data) { try { var dataString = JsSerializer.Serialize(item.Value); sb.Append(string.Format("\"{0}\":{1},", item.Key, dataString)); } catch(Exception ex) { var message = ex.Message; if (ex is InvalidOperationException) sb.Append(string.Format("\"{0}\":\"{1} : {2}<br/><span style='color:red;'>Please implement an IGlimpseConverter for the type mentioned above, or one of its base types, to fix this problem. More info on a better experience for this coming soon, keep an eye on <a href='http://getGlimpse.com' target='main'>getGlimpse.com</a></span>\",", item.Key, ex.GetType().Name, message)); else sb.Append(string.Format("\"{0}\":\"{1} : {2}\",", item.Key, ex.GetType().Name, message)); } } //Add exceptions tab if needed var exceptions = application.GetWarningStore(); if (exceptions.Count > 1) { var dataString = JsSerializer.Serialize(exceptions); sb.Append(string.Format("\"{0}\":{1},", "Glimpse Warnings", dataString)); } if (sb.Length > 1) sb.Remove(sb.Length - 1, 1); sb.Append("}"); //var json = JsSerializer.Serialize(data); //serialize data to Json var json = sb.ToString(); json = Sanitizer.Sanitize(json); //if ajax request, render glimpse data to headers if (application.IsAjax()) { application.Response.AddHeader(GlimpseConstants.HttpHeader, requestId.ToString()); } else { var html = string.Format( @"<script type='text/javascript' id='glimpseData' data-glimpse-requestID='{1}'>var glimpse = {0};</script>", json, requestId); html += @"<script type='text/javascript' id='glimpseClient' src='" + RootPath + "glimpseClient.js'></script>"; application.Response.Write(html); } return json; }