public void GetDistinctFieldValues(HttpListenerRequest req, HttpListenerResponse resp, JObject jobj) { if (!jobj.ContainsKey("logname")) { throw new ApiException(400, "log name is not defined"); } string name = jobj["logname"].Value <string>(); var db = DatabaseClient.Self.GetLogDatabase(name); var args = req.ReadJson <GetDistinctFieldValuesArgs>(); bool success; var res = db.GetDistinctFieldValues(args.FieldName, out success); if (!success) { if (res == null) { throw new ApiException(404, "field not found"); } else { throw new ApiException(400, "too much field values"); } } resp.WriteJson(res.ToArray()); }
public void AddLabel(HttpListenerRequest req, HttpListenerResponse resp, JObject args) { string logname = args["logname"].Value <string>(); var label = req.ReadJson <LogLabel>(); var db = GetDb(logname); if (db.GetLabels().Any(t => t._id == label._id)) { throw new ApiException(400, "Label with such id already exists"); } db.AddLabel(label); resp.Close(); }
public void GetItemsAtPos(HttpListenerRequest req, HttpListenerResponse resp, JObject jobj) { if (!jobj.ContainsKey("logname")) { throw new ApiException(400, "log name is not defined"); } string name = jobj["logname"].Value <string>(); var db = DatabaseClient.Self.GetLogDatabase(name); var args = req.ReadJson <GetItemsAtPosArgs>(); var res = db.GetTracesAtPos(args.Pos, args.Count); resp.WriteJson(res); }
public void GetHeaders(HttpListenerRequest req, HttpListenerResponse resp) { var info = req.ReadJson <GetHeadersReq>(); var all = GetFiles(); var file = all.FirstOrDefault(t => t.Name == info.FileName); if (file == null) { throw new ApiException(404, "Specified file not found"); } using (var sr = new StreamReader(file.OpenRead())) { var header = sr.ReadLine(); var commas = header.Count(t => t == ','); var semicol = header.Count(t => t == ';'); var splitter = commas > semicol ? ',' : ';'; resp.WriteJson(header.Split(splitter)); } }