public bool RemoveFact(Guid factId) { var result = false; try { if (_container == null) { _container = LoadFacts(); } if (_container != null) { result = _container.Remove(factId); if (result) { SaveFacts(_container); } } } catch { } return(result); }
public bool RegisterFact(Fact fact) { var result = false; try { if (_container == null) { _container = LoadFacts(); if (_container == null) { _container = new FactContainer(); } } _container.Remove(fact.Id); _container.Add(fact); SaveFacts(_container); result = true; } catch { } return(result); }
private static void SaveFacts([NotNull] FactContainer container) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); using (JsonWriter writer = new JsonTextWriter(sw)) { var serializer = new JsonSerializer { TypeNameHandling = TypeNameHandling.Auto, Formatting = Formatting.Indented }; serializer.Serialize(writer, container); } var buf = Encoding.Unicode.GetBytes(sb.ToString()); var result = new byte[buf.Length + 2]; result[0] = 0xFF; result[1] = 0xFE; buf.CopyTo(result, 2); var fileName = Path.Combine(ExtensionUtils.ExtensionConfigurationFolder, cLocalFactsFileName); File.WriteAllBytes(fileName, result); }
public Fact GetFact(Guid id) { if (_container == null) { _container = LoadFacts(); } return(_container?.Facts?.FirstOrDefault(x => x.Id == id)); }
public IEnumerable <Fact> GetFacts(string context, IEnumerable <string> tags = null, string filter = null, bool includeObsolete = false) { if (_container == null) { _container = LoadFacts(); } return(_container?.Facts? .Where(x => (includeObsolete || !x.Obsolete) && string.Compare(context, x.Context, StringComparison.InvariantCultureIgnoreCase) == 0 && x.Tags.Any(y => tags?.Contains(y) ?? true) && (string.IsNullOrWhiteSpace(filter) || (x.Name?.ToLower().Contains(filter.ToLower()) ?? false) || (x.Source?.ToLower().Contains(filter.ToLower()) ?? false) || (x.Details?.ToLower().Contains(filter.ToLower()) ?? false)))); }
private static FactContainer LoadFacts() { FactContainer result = null; var fileName = Path.Combine(ExtensionUtils.ExtensionConfigurationFolder, cLocalFactsFileName); string jsonText = null; if (File.Exists(fileName)) { var json = File.ReadAllBytes(fileName); if (json[0] == 0xFF) { jsonText = Encoding.Unicode.GetString(json, 2, json.Length - 2); } else { jsonText = Encoding.Unicode.GetString(json); } try { using (var textReader = new StringReader(jsonText)) using (var reader = new JsonTextReader(textReader)) { var serializer = new JsonSerializer { TypeNameHandling = TypeNameHandling.Auto, SerializationBinder = new KnownTypesBinder() }; result = serializer.Deserialize <FactContainer>(reader); } } catch { } } return(result); }