public HttpResponseMessage Browse(int pageIndex = 0, int pageSize = 30, string eventType = null, int severity = -1) { EventLogSeverity? actualSeverity = null; // Is there a severity set? if (severity >= 0) { actualSeverity = (EventLogSeverity)severity; } // Get event logs. IEnumerable<EventLog> eventLogs = EventLogManager.Browse(pageIndex, pageSize, eventType, actualSeverity); // Work out pagination details. int rowCount = EventLogManager.BrowseCount(pageIndex, pageSize, eventType, actualSeverity); int pageCount = (int)Math.Ceiling(rowCount / (double)pageSize); // Start building meta. Dictionary<string, dynamic> pagination = new Dictionary<string, dynamic>(); // Add basics. pagination.Add("Records", rowCount); pagination.Add("Pages", pageCount); pagination.Add("CurrentPage", pageIndex); // Build navigation. Dictionary<string, string> navigation = new Dictionary<string, string>(); // Parameters passed in not changed by pagination. string fixedParams = ""; // Page size. if (pageSize != 30) { fixedParams += string.Format("pageSize={0}", pageSize); } // Event type. if (eventType != null) { fixedParams += string.Format("eventType={0}", eventType); } // Severity. if (severity != -1) { fixedParams += string.Format("eventType={0}", severity); } // Is there a next page? if (pageIndex < pageCount) { string nextLink = string.Format("Browse?pageIndex={0}", pageIndex + 1); if (!string.IsNullOrEmpty(fixedParams)) { nextLink = string.Format("{0}&{1}", nextLink, fixedParams); } navigation.Add("Next", nextLink); } // Is there a previous page? if (pageIndex > 0) { string prevLink = string.Format("Browse?pageIndex={0}", pageIndex - 1); if (!string.IsNullOrEmpty(fixedParams)) { prevLink = string.Format("{0}&{1}", prevLink, fixedParams); } navigation.Add("Previous", prevLink); } // Add navigation. pagination.Add("Navigation", navigation); Dictionary<string, dynamic> payload = new Dictionary<string, dynamic>(); payload.Add("Data", eventLogs); payload.Add("Pagination", pagination); string json = JsonConvert.SerializeObject(payload); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(json, Encoding.UTF8, "application/json"); return response; }